Use o magit para comparar todas as alterações em duas revisões

8

Existe uma maneira de chamar o Ediff do Magit para comparar as alterações em todos os arquivos entre duas revisões, não apenas as alterações em um único arquivo?

Meu caso de uso é um colega de trabalho que me pedirá para revisar as alterações que ela fez em uma ramificação, que pode ser executada em vários commits. Posso facilmente descobrir que o código dela ramificou-se do ramo principal na revisão M, mas não sei como obter o magit para comparar tudo para mim.

Parece que eu posso fazer M-x magit-loge E r <M> <branch name>, em seguida , mas ele me pede para comparar o arquivo. Nesse caso, existem cerca de 20 arquivos que foram alterados, portanto, será irritante relacionar a E rsequência de cada um. Além disso, eu precisaria lembrar quais arquivos eu já procurei.

Idealmente, eu gostaria de um destes:

  • um buffer que lista cada arquivo e permite que eu clique nele para iniciar o ediff e mostra quando iniciei o ediff (ou permita excluir o arquivo do último)
  • inicie uma sessão ediff para cada arquivo alterado, com um buffer que lista as sessões e me permite ir até elas.

Estou pensando em algo parecido com o que ediff-directoriesfaz.

Essa capacidade existe?

Isso é diferente de Como posso comparar dois commits no magit? : que quer examinar as mudanças nessas duas revisões. Quero examinar as diferenças em todos os arquivos diferentes entre essas duas revisões, independentemente de a alteração ter ocorrido na revisão ou de um ancestral não comum.

Troy Daniels
fonte

Respostas:

7

Magit pode mostrar a diferença entre dois commits como um diff . Existem muitas maneiras de fazer isso, incluindo:

  • d r START..END RET. Você pode entrar STARTcom conclusão e, depois de digitar, ..também pode entrar ENDcom conclusão.
  • Em um log, use a região para marcar as confirmações entre STARTe ENDe digited d

O mesmo é suportado ao usar o Ediff até certo ponto, mas como você notou, também precisa selecionar o arquivo que deseja comparar. Enquanto o Ediff fornece uma interface de suporte para "sessão", o Magit ainda não o implementa.

Mas há uma questão em aberto sobre isso. Mas não tem alta prioridade. Eu não uso o Ediff e implementá-lo exige mais conhecimento sobre o Ediff do que sobre o Magit. Qualquer ajuda com esta tarefa seria apreciada.

tarso
fonte