8

Is there a way to invoke Ediff from Magit in order to compare the changes to all files between two revisions, not just the changes in a single file?

My use case is a coworker will ask me to review the changes that she made in a branch, which might run over several commits. I can easily figure out that her code branched from the main branch at revision M, but I am not sure how to get magit to compare everything for me.

It appears that I can do M-x magit-log and then E r <M> <branch name>, but then it asks me for the file to compare. In this case, there are about 20 files that changed, so it is going to be annoying to related the E r sequence for each. Additionally, I would have to remember which files I have already looked at.

Ideally, I would like to either of these:

  • a buffer that lists each file and lets me click on it to start ediff, and shows when I have started ediff (or lets me delete file from the last)
  • start an ediff session for each changed file, with a buffer that lists the sessions and lets me go to them.

I am thinking of something like what ediff-directories does.

Does that capability exist?

This is different from How can I compare two commits in magit?: that wants to look at the changes in those two revisions. I want to look at the differences in all the files that are different between those two revisions, regardless of if the change occurred in the revision or a non-common ancestor.

tarsius
  • 25,298
  • 4
  • 69
  • 109
Troy Daniels
  • 487
  • 2
  • 13

1 Answers1

10

Magit can show the difference between two commits as a diff. There are many ways to do that including:

  • d r START..END RET. You can enter START with completion and after you have typed .. you can also enter END with completion.
  • In a log use the region to mark the commits between START and END and type d d

The same is supported when using Ediff to some extend, but as you have noticed you then also have to select the file you want to compare. While Ediff provides a "session" support interface, Magit does not implement that yet.

But there is an open issue about this. It doesn't have high priority though. I don't use Ediff myself and implementing this requires more knowledge about Ediff than about Magit. Any help with this task would be appreciated.

tarsius
  • 25,298
  • 4
  • 69
  • 109