There seem to be two ways you can use arc diff with git at the moment:
- treat history as entirely immutable: there are no arc droppings in the commit history at all, but if you rebase a branch and resubmit, arc diff can't associate the new commit with the right Differential diff Dxyz
- treat history as entirely mutable: each commit message is rewritten into a very arc-ish format ("Summary:" prepended to the long commit message, "Test Plan" and "Reviewers" most likely also added, etc.) but after a rebase/resubmit, arc does know which Differential diff it is dealing with
I would prefer a middle ground in which arc amends the commit message with the minimum of information it needs to relate the change to its Differential diff - I think that means just the Differential Revision and nothing else, the same way Gerrit adds the Change-Id and nothing else. Perhaps { "history.immutable": "almost" } could be the configuration option for this? :-)
Relatedly, it would be nice if arc could bundle one-line metadata like the Differential Revision into a "pseudo-footer" with other one-line git metadata such as the Signed-off-by, Reviewed-by, etc. that are common in projects borrowing their coding standard from the Linux kernel, or Bug, Applied-upstream etc. in http://dep.debian.net/deps/dep3/, like so:
Fix that thing with the stuff This thing is wrong and should be fixed, because otherwise badness. In particular, Alice reported that this caused other stuff to go wrong. Signed-off-by: Bob <bob@example.com> Bug: http://phabricator.example.com/T123 Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+bug/1 Differential Review: http://phabricator.example.com/D321
(At the moment arc always adds extra blank lines.)