add "update" mode to Diffusion coverage Conduit

Summary:
This diff adds a new mode argument to the Diffusion Conduit API with two options:
- "overwrite": the default, maintains the current behavior of deleting all coverage
  in the specified branch before uploading the new coverage
- "update": does not delete old coverage, but will overwrite previous
  coverage information if it's for the same file and commit

`DiffusionRequest::loadCoverage` already loads a file's coverage from the
latest available commit, so uploading coverage for different files in different
commits with "update" will result in seeing the latest uploaded coverage in
Diffusion.

Test Plan: manual local verification

Reviewers: epriestley, #blessed_reviewers

Reviewed By: epriestley, #blessed_reviewers

Subscribers: Korvin

Differential Revision: https://secure.phabricator.com/D14428
This commit is contained in:
David Fisher
2015-11-06 14:30:32 -08:00
parent 7fd6704fb5
commit c589af51e8
3 changed files with 36 additions and 6 deletions

View File

@@ -0,0 +1,8 @@
USE {$NAMESPACE}_repository;
DELETE x FROM repository_coverage x
LEFT JOIN repository_coverage y
ON x.branchID = y.branchID
AND x.commitID = y.commitID
AND x.pathID = y.pathID
AND y.id > x.id
WHERE y.id IS NOT NULL;