3 ms·
This looks pretty good! Maybe this is a good time to air some complaints about all of these Git UIs. The approach of every single Git app that I've encountered
by atombender 8y ago
This looks pretty good! Maybe this is a good time to air some complaints about all of these Git UIs.
The approach of every single Git app that I've encountered is to present the history as the entry point to working with a project. Maybe I'm a weirdo, but that's not how I primarily work with git, and while having such a history view is critical, I'd like a tool that actually doesn't do that as its main mode of operation.
Instead, I'd like a tool that has a file-oriented approach. Which is to say that it should show uncommitted changes as a file tree browser that either shows the entire tree (with icons, colours or whatever to indicate what is changed) or the subset which has changed. This should be a tree browser where you can click on a single file to view its diff.
The other thing that these Git apps do badly is diff display. Sublime Merge can be forgiven for doing a simple colourized vertical view in its first public release, but other tools can't. The best diff browser I've seen is Eclipse (which I haven't used in a decade, but still miss at times), which coincidentally implements the same UI metaphor. Take a look at this screenshot:
https://i.ytimg.com/vi/-Jdu__jEnFw/maxresdefault.jpg https://i.ytimg.com/vi/-Jdu__jEnFw/maxresdefault.jpg
Note the left pane, which is the file tree. It's only showing changes.
Note the top right panel, which shows a semantic change tree of your file. If Eclipse understands the structure of your file, then it can show the changes by class, method and so on. It's really nice.
Thirdly, note the diff view, which is a side-by-side view which is visually really good at correlating blocks of changes. Many side-by-side differs will keep the two views vertically synchronized by inserting blank space. Not Eclipse! There's no blank space; instead, Eclipse uses the Bezier lines to indicate which block on the left side corresponds to the block on the right side, and these lines are updated as you scroll. Here's a video from someone using the UI:
https://youtu.be/KfeqnernMmE?t=807 https://youtu.be/KfeqnernMmE?t=807
Eclipse isn't/wasn't a beautiful app, but it nails the diff view.
The important thing is that you don't get the entire project diff in a single view, which is what Sublime Merge does if you go into either the "unstaged files" panel or a commit, but you get a concise file overview, and only see the diff for one file at a time. Doing it the way I describe above doesn't preclude being able to see the diff for a whole tree in a single pane, but it shouldn't be the default.
- PretzelFisch 8y agoI know this is for windows only but you might check out https://tortoisegit.org/ https://tortoisegit.org/ it has shell integration that lets you see what each files status. I think this is what your describing.
- atombender 8y agoI don't use Windows, but from what I can see from screenshots, TortoiseGit doesn't do anything I described except show file status, which most IDEs (e.g. Visual Studio Code) already do.
- solutionyogi 8y agoCouldn't agree more with your point about history v/s file. This is why I use SmartGit. https://www.syntevo.com/smartgit/ https://www.syntevo.com/smartgit/ It has two perspectives, 'Main' and 'Review'. For each perspectives, you can configure different 'windows' to be shown/hidden. Window types are 'Changes', 'Journal', 'Branches', 'Git Output' etc. For the Main perspective, I configure it to show me History + Remote/Local branches + 'Git Output'. This is when I want to interact with the remote repository. For the Review perspective, I configure it to display the Files/Folders and Changes. You can configure the 'Files' view to show 'modified' files on the top, review the differences in 'Changes' section below and do quick commits. Yes, the above is not as nice as Eclipse being able to display semantic changes but it's a very nice workflow and have not found anything better.