Assign RepositoryIdentity objects to commits

Summary: Depends on D19429. Depends on D19423. Ref T12164. This creates new columns `authorIdentityPHID` and `committerIdentityPHID` on commit objects and starts populating them. Also adds the ability to explicitly set an Identity's assignee to "unassigned()" to null out an incorrect auto-assign. Adds more search functionality to identities. Also creates a daemon task for handling users adding new email address and attempts to associate unclaimed identities.

Test Plan: Imported some repos, watched new columns get populated. Added a new email address for a previous commit, saw daemon job run and assign the identity to the new user. Searched for identities in various and sundry ways.

Reviewers: epriestley

Reviewed By: epriestley

Subscribers: Korvin, PHID-OPKG-gm6ozazyms6q6i22gyam

Maniphest Tasks: T12164

Differential Revision: https://secure.phabricator.com/D19443
This commit is contained in:
Austin McKinley
2018-05-09 15:03:49 -07:00
parent f191a66490
commit fe5fde5910
16 changed files with 297 additions and 9 deletions

View File

@@ -104,13 +104,13 @@ final class DiffusionIdentityViewController
}
$properties->addProperty(
pht('Effective User'),
$viewer->renderHandle($effective_phid));
$this->buildPropertyValue($effective_phid));
$properties->addProperty(
pht('Automatically Detected User'),
$viewer->renderHandle($automatic_phid));
$this->buildPropertyValue($automatic_phid));
$properties->addProperty(
pht('Manually Set User'),
$viewer->renderHandle($manual_phid));
$this->buildPropertyValue($manual_phid));
$header = id(new PHUIHeaderView())
->setHeader(array(pht('Identity Assignments'), $tag));
@@ -120,4 +120,16 @@ final class DiffusionIdentityViewController
->setBackground(PHUIObjectBoxView::BLUE_PROPERTY)
->addPropertyList($properties);
}
private function buildPropertyValue($value) {
$viewer = $this->getViewer();
if ($value == DiffusionIdentityUnassignedDatasource::FUNCTION_TOKEN) {
return phutil_tag('em', array(), pht('Explicitly Unassigned'));
} else if (!$value) {
return null;
} else {
return $viewer->renderHandle($value);
}
}
}