Ungit – Git UI that makes you understand git
github.com
github.com
Some discussion with the author present on reddit: http://www.reddit.com/r/programming/comments/1kqotu/ungit_ne...
PR -> https://github.com/FredrikNoren/ungit/pull/91
Edit: added PR
Google Analytics is hooked up by default though, which is unusual. (Actually I'm not sure how that's going to work, since everyone's going to be on a different domain name.)
Otherwise, it looks very very cool.
If you ignore the staging area, you become much more tempted to make several unrelated changes in one commit, rather than untangling them.
The git UI has some warts, but the staging area isn't one of them. It's an extremely useful feature, and a true improvement over traditional SCM interfaces.
It's nice to see people wanting to improve git's interface, but please, don't just dumb it down....
git add -p doesn't help tease them apart, because its hunks are based on diffs, and the granularity usually does not coincide with actual changes (nor syntax or semantics of the languages). Which is really expecting a bit too much! Diff's implementation of LCS algorithm is incredibly fast and works amazingly well for changes in different places.
So what I do is edit the file to what I want, stage and commit, then undo and continue. This doesn't really use the staging area, and I'm hoping there's a better way to do it... if anyone can think of one?
What ungit should do is the same thing as git gui: When you go to make a commit, you can view diffs of your files and select single lines to be added to your next commit.
Edit: I've created an issue for this: https://github.com/FredrikNoren/ungit/issues/98
I really love bzr's UI in this respect, and I understand Mercurial is similar too.
The staging area surely adds complexity, but if you do not like it then simply don't use git.
If I have ongoing work I want to remove, I just stash it, as you said. I don't need a staging area to stash things, and it's pretty rare that I'll have unrelated work anyway.
> The staging area surely adds complexity, but if you do not like it then simply don't use git.
Ah, the old "your arm hurts? Just cut it off!" solution. Yes, I will just not use git, I will just email my team diffs.
Specifying names at commit time is really horrible - it's more error prone and harder to get a diff of exactly what you are committing.
You can also commit part of files using the staging area by doing git add -p. My workflow is often git add -p; git diff --staged; git commit
I came to git already knowing what a dag was, and after having cobbled together my own patch management system to make up for deficiencies in svn, so I didn't have much difficulty intuiting almost the whole of git after very little time.
YMMV, of course.
Then again, I guess the GUI could just implement the staging area itself and pass line numbers to "git commit" :)
I think hiding it under a novice/expert flag is a terribad idea, but I'm not sure what the right way to expose the staging area in this interface would be.
VERY COOL. I love the idea.
If you can make somehow easier to use (for non developers) this could be a life saver. Your designer is not expert at git... so you decide to just email each other stuff.... OR.... you show him/her how to use ungit and BAM! they are in your world with no command line invocations required.
Could you drop the node.js dependence and wrap the entire UI as a chrome extension? Is there git in the browser? Of course, you would still need some "server" to access the file system...
He is telling the whole world what he thinks of them.
Is that not the standard way of using github? How does that look in this scenario? Everything almost always being in a straight line, and the author always working on 'master' makes it a bit confusing to imagine in a real-world scenario (based on my Git usage).
Branches in git are literally just pointers to commits (write a sha1 object to any file under refs/heads to see what I mean) so they don't really buy you much if you're not frequently switching between locations in the DAG, but can be created retroactively with zero hassle if you do find yourself needing them.
Basically, what you do with your private DAG doesn't matter at all, what is important is that you only publish things that are sensible.
Please add the video to the GH page.. I almost meh'd out of there, but was lucky to notice someone's comment here mentioning the youtube vid.
EDIT: just tried it.. Dear god, our repo looks like a swarm of drunken spiders was hard at work there..
Also, +1 to the request to change the default config and not track everything!
UX wise I don't know if the drag and drop works 100%. As a suggestion to the author, how about drawing lines instead from the working node to a future node state? 2c
Excellent.
The npm install errored out, I got it going via sudo, loaded a large project with it and it crashed.
I will be back in a month to have another go. :-)