1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-12-19 12:00:55 +01:00

Fix some issues with the "Explain Why" dialog

Summary:
Ref T11051. This is still not as clear as it should be, but is at least working as intended now.

I believe this part of the code just never worked. The test plan on D10489 didn't specifically cover it.

Test Plan:
Did this sort of thing in a repository:

```
$ git checkout -b featurex
$ echo x >> y
$ git commit -am wip
$ arc diff
```

Then I simulated just pushing it (this flow is a little more involved than necessary):

```
$ arc land --hold
$ git commit --amend
$ # remove all metadata -- particularly, "Differential Revision"!
$ git push HEAD:master
```

I got a not-great but more-useful dialog:

{F1667318}

Prior to this change, the hash match was incorrectly not reported at all.

Reviewers: chad

Reviewed By: chad

Maniphest Tasks: T11051

Differential Revision: https://secure.phabricator.com/D15989
This commit is contained in:
epriestley 2016-05-30 09:09:49 -07:00
parent b352cae97d
commit e81637a6c6
2 changed files with 7 additions and 3 deletions

View file

@ -93,7 +93,7 @@ final class DifferentialRevisionCloseDetailsController
'href' => $obj_handle->getURI(), 'href' => $obj_handle->getURI(),
), ),
$obj_handle->getName()); $obj_handle->getName());
$body_why = pht( $body_why[] = pht(
'This commit and the active diff of %s had the same %s hash '. 'This commit and the active diff of %s had the same %s hash '.
'(%s) so we linked this commit to %s.', '(%s) so we linked this commit to %s.',
$diff_link, $diff_link,

View file

@ -67,19 +67,23 @@ final class DiffusionLowLevelCommitFieldsQuery
->withCommitHashes($hash_list) ->withCommitHashes($hash_list)
->execute(); ->execute();
if (!empty($revisions)) { if ($revisions) {
$revision = $this->pickBestRevision($revisions); $revision = $this->pickBestRevision($revisions);
$fields['revisionID'] = $revision->getID(); $fields['revisionID'] = $revision->getID();
$revision_hashes = $revision->getHashes(); $revision_hashes = $revision->getHashes();
$revision_hashes = DiffusionCommitHash::convertArrayToObjects( $revision_hashes = DiffusionCommitHash::convertArrayToObjects(
$revision_hashes); $revision_hashes);
$revision_hashes = mpull($revision_hashes, 'getHashType'); $revision_hashes = mpull($revision_hashes, null, 'getHashType');
// sort the hashes in the order the mighty // sort the hashes in the order the mighty
// @{class:ArcanstDifferentialRevisionHash} does; probably unnecessary // @{class:ArcanstDifferentialRevisionHash} does; probably unnecessary
// but should future proof things nicely. // but should future proof things nicely.
$revision_hashes = array_select_keys( $revision_hashes = array_select_keys(
$revision_hashes, $revision_hashes,
ArcanistDifferentialRevisionHash::getTypes()); ArcanistDifferentialRevisionHash::getTypes());
foreach ($hashes as $hash) { foreach ($hashes as $hash) {
$revision_hash = idx($revision_hashes, $hash->getHashType()); $revision_hash = idx($revision_hashes, $hash->getHashType());
if (!$revision_hash) { if (!$revision_hash) {