News for hackers. Stuff that matters.
Re:Still hatin' on git: now with added Actual Reasons by Qz on Wednesday May 12, 2010 @07:18PM (#1342610)
All the people suggesting various git commands he should be using are completely missing the point.
Re:Still hatin' on git: now with added Actual Reasons by pyre on Wednesday May 12, 2010 @09:33PM (#1342927)
The point -- as I understand it -- is that the author feels that a version control system should act like X. So he takes a random version control system, reads about it briefly, and then tries to use it assuming that it acts like X. The version control system doesn't act like X, which leads to problems for the author. Author writes a blog post about how random version control system sucks because it doesn't meet his assumptions.
Re:Still hatin' on git: now with added Actual Reasons by Xurinos on Thursday May 13, 2010 @12:22AM (#1343277)
That is what I got out of it. A big clue was his "git commit filename". git is not svn. Is git's greatest sin really that it uses a few of the same words with different meanings from how they have been used in the past?

Someone in another post mentioned revert. svn revert file == git checkout file, while git revert patches out a whole change. It actually makes sense if you forget about cvs and svn's version of the API.

I saw the word "intuitive" thrown around... http://www.asktog.com/papers/raskinintuit.html

Re:Still hatin' on git: now with added Actual Reasons by koenigdavidmj on Thursday May 13, 2010 @01:18PM (#1344885)
The only valid point made is that checkout has two functions:

* If there does not exist a branch 'foo', then 'git checkout foo' will reset the file named foo to the head.

* If such a branch does exist, then 'git checkout foo' will move to that branch. You have to say 'git checkout -- foo' to have the first behaviour.

Re:Still hatin' on git: now with added Actual Reasons by phaylon on Thursday May 13, 2010 @10:28AM (#1344329)
You mean it actually makes sense if you forget the other VCS versions of that command, and know git's? Because ignoring all VCS experience I have, "checkout" would indicate to me that I could "check something out" as in "have a peek at it."
Re:Still hatin' on git: now with added Actual Reasons by Xurinos on Thursday May 13, 2010 @01:09PM (#1344853)
In git, it means "checking out the current branch version of a file" or "checking out an entire branch". Pulling all the patches from another resource also makes sense.

Think of checkout as a local thing to do, and pull/fetch as a remote action.

It can make sense if you do not have prior associations. It is not as if the English language is not terribly abused and ambiguous in our languages. What does "cancel" mean? In linux with CUPS, it cancels a print job. To cancel a process, you have to kill it, but you cannot kill print jobs. Shocking.

What is OOP? How does that definition change between C++, Java, Smalltalk, Lisp/CLOS, and vimscript? How about MVC? What about the differences in GUI lingo between Object Windows, McClim, Gtk, and qt? In other words, you have to learn the language of each different tool you use, and it is unreasonable to expect that it is the same as your other tools.

Aside from that, it is terribly unfair to try to compare svn to git in any meaningful architectural sense; they are completely different creatures that accomplish some of the same goals. git does it better. And it uses different language to describe its new approach.

I have not had a difficult time switching between using svn and git after using both for a long time, except for missing nice features like "git log -p" and "git add -p" when I work with svn. It seems petty to me to quibble over command names.

Re:Still hatin' on git: now with added Actual Reasons by phaylon on Thursday May 13, 2010 @01:29PM (#1344915)
"What does "cancel" mean? In linux with CUPS, it cancels a print job. To cancel a process, you have to kill it, but you cannot kill print jobs. Shocking."

Those are different projects. Git is one. OO is an abstract concept, we're talking about git communicating to the user, and what level the user must have to understand that communication.

The problem is not that git and svn have different opinions on what "checkout" means, it's that git itself has different opinions on what it should mean.

Again, why is it so bad that we say the interface could be better? Why do so many of those that managed to get a grip on this feel the need to strictly deny that there could be any problem in the interface itself?

Yes, Linus designed it. But he's just human too.

I still have yet to see a single useful advantage of mixing up different meanings in the same word. All I get is "It is that way, learn it or GTFO."

Re:Still hatin' on git: now with added Actual Reasons by pyre on Thursday May 13, 2010 @04:56PM (#1345644)
When you 'checkout' something from the library, you are not 'having a peek at it' in the 'Hey! Come check this out!' usage of the word. Words can have multiple meanings depending on context. 'git checkout' has no context, so you can't just assume what the author meant when the command was named as such.
Re:Still hatin' on git: now with added Actual Reasons by phaylon on Friday May 14, 2010 @08:53AM (#1347194)
I know, and having multiple meanings for a single word that's used as a technical command without visible content is not a good idea. That's what I'm saying
Re:Still hatin' on git: now with added Actual Reasons by pyre on Friday May 14, 2010 @03:07PM (#1348246)
> without visible content

There is a manual... You don't blame a drill press company just because someone thought it was a good idea to use their drill press to pierce their nose, do you? What's the point of providing people with documentation, if you are going to rail on the product for not being 'so easy' that people don't need to read the documentation?

Re:Still hatin' on git: now with added Actual Reasons by phaylon on Sunday May 16, 2010 @06:20PM (#1352915)
This is about catching mistakes. No manual will help you there. Documentation doesn't even come into the mix.
Re:Still hatin' on git: now with added Actual Reasons by IsaacSchlueter on Wednesday May 12, 2010 @07:42PM (#1342671)
The point being that the author isn't looking for solutions, but rather just wants to bitch?
Re:Still hatin' on git: now with added Actual Reasons by Qz on Wednesday May 12, 2010 @07:55PM (#1342697)
The point being that the solutions are problematic.
Re:Still hatin' on git: now with added Actual Reasons by itistoday on Wednesday May 12, 2010 @08:03PM (#1342713)
And the problems shouldn't exist in the first place.
Re:Still hatin' on git: now with added Actual Reasons by donaq on Wednesday May 12, 2010 @10:21PM (#1343054)
Linus didn't write git for you. He wrote it for himself. Git works exactly the way Linus (and his merry band of kernel hackers (and others, who thought DVCS was a cool idea when they heard about it and were prepared to relearn SCM to use it)) wants it to work. If you want to learn to use it, cool, welcome to the party. If you aren't prepared to invest the time, that's cool too. But don't try it for like a day expecting it to be svn++ and then complain that it isn't. That's like a Windows user declaring that Linux sucks because it isn't Windows. It wasn't meant to be.

Although, complaining about Ubuntu not doing things the way they "should" is more valid, since Ubuntu is targeted at everyone. :)

Re:Still hatin' on git: now with added Actual Reasons by viraptor on Wednesday May 12, 2010 @10:39PM (#1343090)
Git is gaining a lot of attention lately. It's becoming "the dvcs" now. And that means, if you start using it for your project, you should consider what does it mean for contributors / users. If it creates an additional step where someone will say - "it will take me more time to learn, than creating the patch itself", you've lost. If many people start using git, we can start expecting things from git. It's just not about an abstract "you" anymore.
Re:Still hatin' on git: now with added Actual Reasons by donaq on Wednesday May 12, 2010 @11:19PM (#1343164)
If many people start using git, we can start expecting things from git.

Why? The author of a piece of software is under no obligation to satisfy the expectations of its incidental users, especially if he's not selling it to them.

Re:Still hatin' on git: now with added Actual Reasons by viraptor on Thursday May 13, 2010 @08:43AM (#1344029)
If they get big enough... no they don't have an obligation, but the idea of many people depending on them should be enough. It's like MS had no obligation to satisfy expectations of IE5 users (not sold directly) - sure they didn't - but many got very annoyed because of that and because of the market share, we had internet-wide consequences for standard-compliant websites. Still - they had no obligation.
Re:Still hatin' on git: now with added Actual Reasons by donaq on Thursday May 13, 2010 @09:56AM (#1344233)
That is just wrong on so many levels. Firstly, Microsoft marketed the hell out of IE. The bundling of IE with Windows was their way of getting people to use IE instead of Netscape Navigator. Since their stand (in court, no less!) was that IE was an integral part of Windows, which they sold to users, they did have an obligation to satisfy users' expectations of it. Did anyone force you to use git by bundling it with some other piece of software you were using? Nope.

Secondly, in what crazy alternate universe can git, which is given to you free as in libre as well as beer, be compared with IE? If you think git sucks, but still want to use it for some crazy reason, go ahead and modify it to suit your needs.

Lastly, I cannot imagine a world where anyone would be forced to have to cater for a VCS the way we have to for browsers. They're simply too different in function. It's not like you're in danger of being forced into the business of implementing a service supporting commits and checkouts for two different types of repositories on the same source files... unless you work at GitHub. Heh.

Re:Still hatin' on git: now with added Actual Reasons by phaylon on Thursday May 13, 2010 @10:33AM (#1344343)
Nobody is telling Linus he messed something up. Are we not allowed to raise issues, discuss and bring forth our perceived problems? "Use it as it is or GTFO" doesn't seem like the Open Source way.

The problem here is that there are people telling everybody that "git is easy," "everybody should use git," and then every time someone raises a concern someone brings up the argument above. I wonder, what is your goal? Are you trying to get people who "don't get it" to stop using git? Do you think killing discussions about it will further progress? Are you afraid the interface you learned might change?

Re:Still hatin' on git: now with added Actual Reasons by thenduks on Thursday May 13, 2010 @08:21AM (#1343981)
I don't follow this at all. Taking time to learn a new and improved way of managing your source code is a deal breaker? These are exactly the people I'd hope to catch by doing phone interviews. "So, what's the last thing you picked up and learned for fun?... Oh, nothing? Ok, thank you for your time."

The creators of git have created/are creating a modern changeset management tool which, yes, you will have to learn to use effectively. This is a good thing.

Re:Still hatin' on git: now with added Actual Reasons by viraptor on Thursday May 13, 2010 @08:32AM (#1344004)
New - definitely. Improved... it depends. If you think it's improved, fair enough, but this is your opinion. Not everyone has to agree. For example I think, it's got more features, but is lacking regarding the interface and usability. Overall, I don't consider it "improved" enough to adopt in everyday development.

Not spending time on completely learning how to deal with an inferior (imo) tool, gives me more time to learn things which matter to me. So it's the exact opposite of "learnt nothing".

Re:Still hatin' on git: now with added Actual Reasons by MikeTaylor on Wednesday May 12, 2010 @08:21PM (#1342745)
But, yes, I do also like to bitch about them :-)
Re:Still hatin' on git: now with added Actual Reasons by ableal on Wednesday May 12, 2010 @08:41PM (#1342805)
Watch out for the flying door-knobs. ( http://news.ycombinator.com/item?id=1272779 )

Seems that the peasants who have binaries should use rsync manually, instead of expecting tools to do the job.

Re:Still hatin' on git: now with added Actual Reasons by itistoday on Wednesday May 12, 2010 @07:49PM (#1342682)
Thank you.

I suspect these folks were OK with spending hours learning about their DVCS, but for most others, this just seems like unnecessary tedium and frustration, "When can I get back to worrying about the code?"

Someone needs to make the Mac of a DVCS, i.e. one that doesn't require a 20+ page tutorial to figure out, is completely intuitive and "just works."

I currently use Mercurial, and while I don't think it qualifies as the Mac of DVCS's, it seems to be working decently enough so far (for my simple purposes). I could learn git, but thanks to hg-git I'm hoping I won't have to.

Re:Still hatin' on git: now with added Actual Reasons by avar on Wednesday May 12, 2010 @09:44PM (#1342960)
Why yes, a lot of us are just fine spending "hours" learning something that we'll probably spend more than a few years using.

Git's user interface isn't perfect, but you're not going to get the "Mac of DVCSs" either. There's a reason for the complexity, doing stuff like merging together the work of three people is inherently complex.

You're not going to come up with some solution that allows the user to "just do it" without also destroying history.

Re:Still hatin' on git: now with added Actual Reasons by viraptor on Wednesday May 12, 2010 @10:20PM (#1343048)
> You're not going to come up with some solution that allows the user to "just do it" without also destroying history.

Really? I've got state A and state B. I tell my DVCS to merge them into state C. After reviewing the automatically guessed changes and manually changing the things which could not be guessed, I commit C'. C' is successor to both A and B.

What exactly has been lost / destroyed here?

Re:Still hatin' on git: now with added Actual Reasons by ekiru on Thursday May 13, 2010 @12:03AM (#1343247)
Nothing. Conveniently, git allows you to do exactly that.

1. Checkout B. 2. Merge A into B. 3. Git tells you there's a merge conflict and what to do to fix it: "Auto-merging foo CONFLICT (content): Merge conflict in foo Automatic merge failed; fix conflicts and then commit the result." 4. Edit foo and fix the conflict. 5. "git add foo" 6. Commit.

What's the problem?

Re:Still hatin' on git: now with added Actual Reasons by viraptor on Thursday May 13, 2010 @07:33AM (#1343886)
Parent claimed that it cannot be done, I responded. Not sure what is the problem...
Re:Still hatin' on git: now with added Actual Reasons by phaylon on Thursday May 13, 2010 @10:25AM (#1344323)
But you're not committing, you're adding.
Re:Still hatin' on git: now with added Actual Reasons by avar on Thursday May 13, 2010 @10:27AM (#1344327)
My post was unfortunately worded. That's what you get for posting late at night I guess.

What I meant to say is that you're not going to get away with using any sort of complex system without understanding what it's doing. This seems to be the sentiment expressed in the original posting, and some of the replies here.

Sure, Git's UI could be improved. But managing several divergent histories and correctly merging them together is a non-trivial problem. If you make a tool that allows the user to just plow on without understanding the underlying paradigm the results are going to suffer.

It's like asking for a RDBMS that allows you to "just do it". You might get away with that for a while, but not for long.

Re:Still hatin' on git: now with added Actual Reasons by itistoday on Thursday May 13, 2010 @01:23AM (#1343374)
> Git's user interface isn't perfect, but you're not going to get the "Mac of DVCSs" either. There's a reason for the complexity, doing stuff like merging together the work of three people is inherently complex.

This is a limitation of your imagination. You can write a DVCS that's easy to use and intuitive. Git has an absolutely terrible UI, it borders on idiotic.

One example of a DVCS with a good design and UI is a Bazaar. Sortof like the Mac a few years ago, no one uses it, but I wouldn't be surprised if it eventually gains in popularity. I see two things holding it back right now:

- Launchpad is terrible and needs to be at least as good as Github.

- In concert with having a terrible "hub", Bazaar has a small community of users.

To gain users, it will need to out-innovate like Apple did. That means on all fronts, not just bzr itself but the community, marketing, and the websites that support it.

Re:Still hatin' on git: now with added Actual Reasons by pyre on Thursday May 13, 2010 @02:46AM (#1343526)
Issues that I've heard of with Bazaar:

- Being pure Python it doesn't have the same performance that git does. This may not show up in day-to-day usage, but things like 'convert this svn repo to Bazaar' tend to bring the bottlenecks/performance issues into the light.

- Bazaar made this weird design decision to have two revision numbers. a 'r12345' type revision number that is similar to SVN, but only applies to your local checkout of the repo, and a checksum (SHA1 or MD5) which applies globally (across different checkouts). I think that choosing a revision scheme similar to SVN's but one that doesn't map 1-to-1 with SVN is just asking for confusion from newbies. (I'm not entirely sure why one needs to have local and global revision numbers...)

Re:Still hatin' on git: now with added Actual Reasons by lars512 on Thursday May 13, 2010 @08:06AM (#1343939)
The use case for numeric local revisions is pretty clear. How many global operations do you really do? In reality, nearly all operations are local. So would you rather write r37 or 0b090d7267df? Why wouldn't you want the choice?
Re:Still hatin' on git: now with added Actual Reasons by pyre on Thursday May 13, 2010 @04:50PM (#1345621)
Two points:

1. You can abbreviate the SHA-1's in git

2. When you are collaborating on code, it's much more common to use a global identifier so that people can all know which commit is being referenced. It seems like you are making things needlessly complex when you are trying to maintain local and global revision numbers, for little (in my opinion) return. Sure 'r37' is easier to remember off-hand than '5b98d8f' (a shortened SHA1), but if you memorize 'r37' it only means something locally, you'll still have to lookup the global revision id when you want to communicate with others.

Re:Still hatin' on git: now with added Actual Reasons by koenigdavidmj on Thursday May 13, 2010 @01:15PM (#1344873)
>Being pure Python it doesn't have the same performance that git does.

Well, hg is nearly all Python (if I recall, their diff algorithm is the only C code) and it's quite comfortably fast. Seems to me that it's a design issue with Bazaar, and not something that one can simply blame on Python.

Re:Still hatin' on git: now with added Actual Reasons by pellicle on Thursday May 13, 2010 @03:47PM (#1345399)
How do you think the Bzr UI design compares with that of Hg?