Differential displays only first change when landing revision with multiple diffs

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

d0b01a41f2498fb2a6487c2d6704dc7acfd4675f (Wed, Jan 15)


cc850163f30c4697e925df0d6212469679600a2c (Nov 18 2019)


cc2a3dbf590389400da55563cb6993f321ec6d73 (Tue, Jan 14)




3.3 at /usr/bin/diff

git at /usr/bin/git


Not Available


1.4 at /usr/bin/pygmentize


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