Not logged in
Log in now
Create an account
Subscribe to LWN
LWN.net Weekly Edition for May 23, 2013
An "enum" for Python 3
An unexpected perf feature
LWN.net Weekly Edition for May 16, 2013
A look at the PyPy 2.0 release
1. The kernel doesn't alienate it's user base.
2. git was made for Linus' needs and it's very successful elsewhere.
3. The kernel attracts and keeps more developers than just about any other project
Seigo: ending the cults of personality in free software
Posted Nov 9, 2012 3:30 UTC (Fri) by airlied (subscriber, #9104)
Posted Nov 9, 2012 4:31 UTC (Fri) by bronson (subscriber, #4806)
Posted Nov 9, 2012 4:35 UTC (Fri) by bojan (subscriber, #14302)
Posted Nov 9, 2012 4:46 UTC (Fri) by apoelstra (subscriber, #75205)
I think the previous poster was suggesting that git should have had a consistent command-line interface with a sensible mental model behind it, rather than exposing the plumbing with a bunch of bash scripts and calling it a day.
But I disagree: I think he exposed everything needed for others to build the porcelain (something he had no time or incentive to do himself). He stopped there because he's a busy man, rather than because he's an awful designer.
Posted Nov 9, 2012 5:13 UTC (Fri) by bojan (subscriber, #14302)
So, yeah, I'm with you. He had better things to do. This does not disqualify him in any way from influencing other software development, by providing commentary.
Posted Nov 9, 2012 8:34 UTC (Fri) by nhippi (subscriber, #34640)
Now, cvs and svn used checkout for well, checking out a remote repository to local directory. Git decided to confuse everyone coming from svn/cvs by reusing that command for something completely different. And worse, even in git it can be used for at least three totally different purposes:
git checkout foo # switch to branch foo
git checkout foo.c # reset foo.c the state of the last commit
git checkout -b foo bar # create a branch foo based on bar
Yes, you get used to such idiosyncrasy, but it still poor UI design.
Posted Nov 9, 2012 11:15 UTC (Fri) by bosyber (subscriber, #84963)
git checkout bar
or even better, the middle command
git checkout baz.c
The first and last command are about checking out into the working the source tree as state at a certain label or branch. This way it is clear that that the middle command is the special one, checking out (now) file baz.c with the state as it is in HEAD. And that's a very convenient special case.
Maybe a better name could have been found for it though, that's quite true. The way I see it, everything is recorded in the index, and checkout allows you to get to a certain state as recorded in the index, even if that state is fetched from a remote location.
git's command structure
Posted Nov 9, 2012 12:30 UTC (Fri) by vonbrand (subscriber, #4458)
You forget that the repository from which you are fetching stuff is local in git. CVS/SVN simply has no concept of remote changes to bring over. And git checkout -b newbranch is just a convenient shortcut for git branch newbranch; git checkout newbranch.
git checkout -b newbranch
git branch newbranch; git checkout newbranch
Yes, git's command line could be more regular, better thought out. But it sort of grew organically; changing it to something "more logical" (unless it is small step by small step, as is happening) is sadly out of the question (too many fingers know the current commands by now).
Posted Nov 9, 2012 17:41 UTC (Fri) by wirespot (guest, #87759)
Any confusion you may harbor about svn vs git checkout is therefore of your own doing. Personally, I blame those "quick git intro for svn users" tutorials.
Now, to clarify your confusion. svn checkout, switch and reset do the same thing: they get files from a repository into a working copy. svn chose to use three different commands for this, whereas git chose just one.
You may still consider that svn's approach was better, and that's fine... but please don't say git is "confusing" when it was you who made the wrong assumptions.
Posted Nov 9, 2012 23:13 UTC (Fri) by wookey (subscriber, #5501)
Posted Nov 12, 2012 17:19 UTC (Mon) by jwakely (subscriber, #60262)
> "git branch --set-upstream" is deprecated and may be removed in a
> relatively distant future. "git branch [-u|--set-upstream-to]" has
> been introduced with a saner order of arguments.
That particular one has caught me out a few times.
Posted Nov 9, 2012 13:49 UTC (Fri) by nim-nim (subscriber, #34454)
This is something Linus understands, and Linux desktop projects – not.
Posted Nov 9, 2012 15:16 UTC (Fri) by davide.del.vento (guest, #59196)
Posted Nov 10, 2012 13:31 UTC (Sat) by brianomahoney (subscriber, #6206)
Google helps but does not fix problems like broken option persistence in the Qt print dialog.
Posted Nov 9, 2012 11:25 UTC (Fri) by AndreE (subscriber, #60148)
3. None of the companies pouring money or man-hours into the kernel are providing a commercially supported Linux desktop targeted at consumers. I'd guess that a lot of the kernel developers work on things that are of little importance to the FOSS desktop
2. If Linus wants to write his own awesome DE from scratch, then he should feel free. I don't think desktop users would complain
Copyright © 2013, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds