Differential displays only first change when landing revision with multiple diffs

Overview
After landing a revision that has more than 1 diff, Differential will only display the first change (diff) when viewing the revision in the Phabricator User Interface

Reproduction Instructions
Here are the steps I took

  1. Make a trival change #1 to a file
  2. Commit the change
  3. run arc diff
  4. View the revision in Differential, you see the change
  5. Make a second change #2 to the file, commit it, and run arc diff
  6. View the revision in Differential, you see both changes
  7. Repeat steps 5 and 6 again for a 3rd change (not required, but helps to illustrate the issue)
  8. Land the revision with arc land
  9. View the revision in differential, the UI defaults to ONLY showing the first change, you have to select Diff 3 and click “Show Diff” in order to see the full change of the revision

I also note that the timestamp of Diff 4 is from Diff 1 and not Diff 3

This is confusing, especially when referencing a Dxxx and pointing a user to a change, they don’t see the full change, only the first one.

Any ideas?

Of note, possibly, is that i have “history.immutable” : true in my .arcconfig

Change 1


Change 2

Change 3

After Landing (Note the Timestamps under “Created”)

Phabricator/Arcanist Version
phabricator

d0b01a41f2498fb2a6487c2d6704dc7acfd4675f (Wed, Jan 15)

arcanist

cc850163f30c4697e925df0d6212469679600a2c (Nov 18 2019)

phutil

cc2a3dbf590389400da55563cb6993f321ec6d73 (Tue, Jan 14)

php

7.2.25

diff

3.3 at /usr/bin/diff

git

1.8.3.1 at /usr/bin/git

hg

Not Available

pygmentize

1.4 at /usr/bin/pygmentize

svn

Not Available

This is currently expected. See https://secure.phabricator.com/T4453.

Ok - Thanks -

For future people who read this thread:

Our process is (was) this:

history.immutable=true in .arcconfig

  1. Make a branch TXXX_The_Task_Name and commit a change
  2. arc diff
  3. arc land --keep-branch
  4. git rebase master

We kept all the commits, history got a bit messy, but that essentially worked and user ended up back on the branch they started with…up to date with any changes from master

Our process is now changing to

history.immutable=false in .arcconfig

  1. Make a branch TXXX_The_Task_Name and commit a change
  2. arc diff
  3. arc land --squash
  4. git checkout -b TXXX_The_Task_Name

We end up back on our branch linked to the task but do it in a different way (re-creating it after arc land drops it)

This has done a few things

  • Resolved issue that this post is about
  • Cleaned up our history a bit - Our process existed for some ancient reason nobody really remembers