git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH 0/9] difftool: teach command to perform directory diffs

From
Tim Henigan <tim.henigan@gmail.com>
Date
Mar 17, 2012, 01:57 UTC
Message-ID
<1331949442-15039-1-git-send-email-tim.henigan@gmail.com>

'git difftool' is a very useful command that allows git diffs to be opened in an external tool. Currently, difftool opens a separate instance of the external tool for each file that changed. This can be tedious when many files have changed.

This series teaches difftool to perform directory diffs, so that all file changes can be opened/reviewed in a single instance of the external tool.

This is the second phase of development for this feature. The first phase was added as a separate command (git diffall) in 1252bbe (contrib: add git-diffall script). During review of that script on the Git developers list, an informal development roadmap was suggested [1]. The next phase of that plan is to integrate the 'git-diffall' feature into 'difftool'. This series gets that done.

[1]: http://thread.gmane.org/gmane.comp.version-control.git/191297/focus=191383

Patches 1-6 are clean-up and rewrite to prepare for later changes. They are not intended to change the behavior of difftool. Instead, they teach the script to use standard modules for option parsing and interacting with the Git repo. I understand that these changes may be controversial due to the amount of rewrite, but the end result is that the script is half the previous size and I believe is easier to understand and maintain.

Patches 7 and 8 are the core changes in this series. They teach difftool the new "--dir-diff" option. When this option is used, difftool will copy files that were changed to a temporary location and run a single directory diff on them rather than run a separate instance of the diff tool for each file.

Patch 9 is a new implementation of a patch that I submitted recently. 061e672 (difftool: print list of valid tools with '--tool-help' was written prior to these other changes. It needed to be rewritten to fit into the Getopt::Long option parsing framework included with this series.

Tim Henigan (9):
  difftool: parse options using Getopt::Long
  difftool: exit(0) when usage is printed
  difftool: remove explicit change of PATH
  difftool: stop appending '.exe' to git
  difftool: eliminate setup_environment function
  difftool: replace system call with Git::command_noisy
  difftool: teach difftool to handle directory diffs
  difftool: teach dir-diff to copy modified files back to working tree
  difftool: print list of valid tools with '--tool-help'
 Documentation/git-difftool.txt |   17 ++-
 git-difftool--helper.sh        |   20 +++-
 git-difftool.perl              |  257 +++++++++++++++++++++++++++-------------
 3 files changed, 200 insertions(+), 94 deletions(-)
-- 
1.7.9.1.290.gbd444
Next: Tim Henigan
Message 1 of 26 in “difftool: teach command to perform directory diffs”
  1. 0/9 difftool: teach command to perform directory diffsTim Henigan, Mar 17, 2012
  2. 1/9 difftool: parse options using Getopt::LongTim Henigan, Mar 17, 2012
  3. David AguilarMar 17, 2012
  4. Tim HeniganMar 17, 2012
  5. David AguilarMar 18, 2012
  6. 2/9 difftool: exit(0) when usage is printedTim Henigan, Mar 17, 2012
  7. 3/9 difftool: remove explicit change of PATHTim Henigan, Mar 17, 2012
  8. 4/9 difftool: stop appending '.exe' to gitTim Henigan, Mar 17, 2012
  9. Junio C HamanoMar 17, 2012
  10. Tim HeniganMar 17, 2012
  11. Junio C HamanoMar 17, 2012
  12. 0/9 difftool: teach command to perform directory diffsTim Henigan, Mar 18, 2012
  13. 1/9 difftool: parse options using Getopt::LongTim Henigan, Mar 18, 2012
  14. 2/9 difftool: exit(0) when usage is printedTim Henigan, Mar 18, 2012
  15. 3/9 difftool: remove explicit change of PATHTim Henigan, Mar 18, 2012
  16. 4/9 difftool: stop appending '.exe' to gitTim Henigan, Mar 18, 2012
  17. 5/9 difftool: eliminate setup_environment functionTim Henigan, Mar 18, 2012
  18. 6/9 difftool: replace system call with Git::command_noisyTim Henigan, Mar 18, 2012
  19. 7/9 difftool: teach difftool to handle directory diffsTim Henigan, Mar 18, 2012
  20. 8/9 difftool: teach dir-diff to copy modified files back to working treeTim Henigan, Mar 18, 2012
  21. 9/9 difftool: print list of valid tools with '--tool-help'Tim Henigan, Mar 18, 2012
  22. Junio C HamanoMar 19, 2012
  23. David AguilarMar 20, 2012
  24. Junio C HamanoMar 20, 2012
  25. Tim HeniganMar 20, 2012
  26. Junio C HamanoMar 20, 2012

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.