Showing posts with label Source Control. Show all posts
Showing posts with label Source Control. Show all posts

Thursday, April 7, 2011

Git >:@

While git is a very cool and powerful version control tool, it's command line UI is just awful. The fact that there are no fully-featured GUI alternatives(that don't suck) makes things even worse.

Let's talk about staging. I would say that a staging area is not useful in the majority of cases. Why is the default behaviour to force a staging process? Most of the time it's just an annoying "durr. stage everything please" step before you commit.

Then there's the actual commands. Want to add a file to be tracked?
git add <file>
Want to stage an already tracked file?
git add <file>

Why is it necessary to overload this command? At least these make some sense. How about unstaging?
git reset HEAD <file that's staged>

Really? reset? Why would you choose that instead of, you know, unstage!

Want to revert back to the previous commit? git revert would make sense... Too bad it's
git checkout -- .

Checking out previous commits makes sense, but the fact that you have to do it by copying and pasting an SHA-1 hash code sucks.

How about untracking and removing files. Well there's:
git rm <file>
which will remove the file from your working directory, and untrack it. There's also
git rm --cached <file>
which will just remove the file from git, but keep the actual file in your working directory. Why --cached is the flag they choose, I'll never know. What's wrong with --tracked?

I could go on and on. I like git because of how powerful it is, but I hate how many usability problems it has. It makes the learning curve much steeper. I've been using it for 4 months at work now, and it still throws me off every once in a while because of how unintuitive it is.

Thursday, December 16, 2010

Version Control Models

I've started reading Pro Git, a book on how to use git correctly. I figured it would be good to know all the ins and outs of git, since I'll be using it at Karos Health. The book does a pretty good job at summarizing the differences between the various version control methodologies. It certainly cleared up some things in my mind. Here's the page that talks about it.

To be honest, distributed source control systems seem like overkill, but that might be just because I haven't worked on projects big enough (ie. not a Linux kernel). At BBM we used TFS for source control and everything seemed to work smoothly. The project I worked on was only around 300 KLOC though.

In other news, I probably passed Physics. Here's hoping. Now I get to relax for a bit and do all my "easy" exams. :)

Do any of you guys have experience with git? How do you like it?