Most of us have probably tried different versions of a file diffing tool. Some are picky about their choice. Personally I’m fond of two different tools (mostly because they’re easy to find/install and setup). Here’s a post where I talk about how I like to integrate these tools when working with TFS and Visual Studio - /2009/08/development-environment-mergecompare.html
A couple months ago, I _slowly_ started learning Git. Since that initial plunge, I’m now in a place where much of it still scary unknown; however, I know enough get what I need done. And when I get to the point where I need to do something I’ve never done, well I go figure it out, and it becomes another part of the personal Git toolbox.
I’ve been working git solely through the command line (in PowerShell actually). I know it’s not the best place to take full advantage of Git; however, it’s working for me.
The other day needed to review changes in a file back in the commit history. Up until this point I had only diff’d uncommitted files with the most recent version of that file, and I already wired a visual diffing tool where I could then use the “git difftool …” command to review differences.
However this was the first time I had to look at a file further back in time than the head. After a quick search I came across the “gitk” command. gitk is “The git repository browser”. I’ve known about this tool, however am trying to keep with the command line tools. (Except for diffing files)
Below is the UI when running the “gitk build-tasks.ps1” in the root of the StatLight project.
Notice how there’s a list of changes to the file, and under that the diff of the previous version to the selected version.
One thing do like about the above, is the list of revisions and how they are right there in your face. Going back in time is really easy. My only problem is I’m not accustomed to the linux style diffing, and still prefer the side/by side file diffing.
On to the feature request…
What problem is this new feature trying to solve?
The problem of having a file diff between version E & F and then needing to look at the previous version to E. (easily) AND show the different versioned files side by side AND make it easy and intuitive to go back in time.
How might this feature request look?
Maybe someone is doing this, maybe not. It would be interesting to leverage a (mouse drag – or text command [EX: Ctrl+Alt+Right Arrow]) to “pan” between versions through file diffing view. Kind of like you can drag the pictures on an iPhone to view the previous or next one. I could drag the mouse across the screen to pan to the previous/next view of the diff.
Below is a quick mockup of the thought – definitely far from refined.
One challenge to true implementation?
The main problem to solve (if you write a generic text diffing tool) is needing to interface with different SCM’s so you can retrieve the the previous/next versions of the file. Basically having to know what SCM the file is under.
Anyone mind taking this project on and implementing this in one of the decent open source file diffing tools out there? (ex: http://winmerge.org/) I would love you for it. Well… I’d buy you a beer.