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

[gsoc2012 wiki PATCH] "Graphical diff in git-gui" project

From
Jakub Narebski <jnareb@gmail.com>
Date
Mar 11, 2012, 22:30 UTC
Message-ID
<1331505055-12231-1-git-send-email-jnareb@gmail.com>
In-Reply-To
<20120302091114.GA3984@sigill.intra.peff.net>

--- I don't have much hope that we can find a student that would be interested in this feature and knows Tcl/Tk enough so that hs or she can atually implement it...

But I can hope.
 SoC-2012-Ideas.md |   62 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 62 insertions(+), 0 deletions(-)
diff --git a/SoC-2012-Ideas.md b/SoC-2012-Ideas.md
index 9ad449f..bea2c09 100644
--- a/SoC-2012-Ideas.md
+++ b/SoC-2012-Ideas.md
@@ -421,6 +421,68 @@ Write a tool that can be used for the task, and optionally wrap an interactive U
 Programming language: Any  
 Possible mentors: ???  
 
+Graphical diff in git-gui
+-------------------------
+
+[git-gui] is a portable Tcl/Tk based graphical interface to Git,
+focused on commit generation and single file annotation.  It is part
+of Git, even though it is developed in a [separate repository].
+
+git-gui can show differences as syntax-highlighted unified diff.  The
+goal of this project would be to add graphical side-by-side diff.
+One possibility is to make use of [TkDiff] code (a graphical diff and
+merge tool), which is also GPL licensed.
+
+The project would consist of the following steps (not all must be
+implemented during Google Summer of Code):
+
+ * Add "git gui diff" subcommand, which would show single file
+   side-by-side graphical compare or/and graphical diff.
+
+   Graphical part and code for side-by-side compare (showing full
+   contents of both files) can be taken from TkDiff, while graphical
+   side-by-side diff (showing changes plus context) can be translated
+   from gitweb's side-by-side diff code.
+
+ * Integrate graphical diff with main git-gui application (including
+   switching between side-by-side and unified diff).
+
+ * Add highlighting of changes in diff both to side-by-side
+   (new code), and to unified diff (current code).
+
+   It can be done using code for TkDiff (perhaps with Git performing
+   word diff instead of doing it in Tcl), or/and using algorithm from
+   gitweb and diff-highlight in contrib.  The difference is that one
+   uses word diff or character diff to highlight changes, the other
+   just skips common prefix and suffix.
+
+ * Add graphical merge / graphical 3-way diff support.  Both are to be
+   used in case a file has textual conflicts; graphical merge also
+   includes resolving a merge by taking 'our' side, 'their' side (or
+   optionally also 'ancestor' side), or by editing merge result.
+
+ * Graphical side-by-side tree level diff, or side-by-side directory
+   listing with differences highlighted.
+
+   UI can be taken from two-panel filemanagers (like MC, or Total
+   Commander), or from synchronization tools (like e.g. Unison).
+
+   The difficulty can be in showing rename and copy detection results,
+   and in showing type (filemode) changes.
+
+The minimum would be to implement side-by-side diff or side-by-side
+compare of two files, without highlighting changes (diff refinement
+highlighting) in the form of separate "`git gui diff <file>`"
+command.
+
+[git-gui]: http://schacon.github.com/git/git-gui.html
+[separate repository]: http://repo.or.cz/w/git-gui.git
+[TkDiff]: http://freecode.com/projects/tkdiff
+
+Programming language: Tcl/Tk  
+Proposed by: Jakub Narębski  
+Possible mentor(s): Pat Thoyts, Paul Mackerras (?)
+
 Other sources of inspiration
 ----------------------------
 
-- 
1.7.9
Previous: Jakub Narebski
Message 20 of 20 in “GSoC 2012 application process”
  1. Jeff KingMar 2, 2012
  2. Nguyen Thai Ngoc DuyMar 2, 2012
  3. Junio C HamanoMar 2, 2012
  4. Jeff KingMar 3, 2012
  5. "Modernizing and expanding Git.pm" projectJakub Narebski, Mar 3, 2012
  6. Jeff KingMar 3, 2012
  7. Teaching "--3way" to "git apply"Junio C Hamano, Mar 4, 2012
  8. Jeff KingMar 5, 2012
  9. Thomas RastMar 5, 2012
  10. Jeff KingMar 5, 2012
  11. Matthieu MoyMar 5, 2012
  12. Jeff KingMar 5, 2012
  13. Matthieu MoyMar 5, 2012
  14. Jeff KingMar 5, 2012
  15. GSoC backup adminJeff King, Mar 7, 2012
  16. Shawn PearceMar 7, 2012
  17. "Use JavaScript library / framework in gitweb" projectJakub Narebski, Mar 8, 2012
  18. Jeff KingMar 9, 2012
  19. "`git instaweb --serve`" projectJakub Narebski, Mar 10, 2012
  20. "Graphical diff in git-gui" projectJakub Narebski, Mar 11, 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.