Slashdot Mirror


Linus on GIT and SCM

An anonymous reader sends us to a blog posting (with the YouTube video embedded) about Linus Torvalds' talk at Google a few weeks back. Linus talked about developing GIT, the source control system used by the Linux kernel developers, and exhibited his characteristic strong opinions on subjects around SCM, by which he means "Source Code Management." SCM is a subject that coders are either passionate about or bored by. Linus appears to be in the former camp. Here is his take on Subversion: "Subversion has been the most pointless project ever started... Subversion used to say, 'CVS done right.' With that slogan there is nowhere you can go. There is no way to do CVS right."

392 comments

  1. Re:git by koreth · · Score: 1

    And we should trust your unsupported assertion more than the educated opinion of the originator and head of one of the most successful large software projects in history because...?

  2. Merging *does* suck by Anonymous Coward · · Score: 0, Insightful

    So don't do it.

    It's always done late in a development cycle, in the rush to get the project out the door.

    So don't branch, and DON'T allow concurrent checkout of any code - FORCE the DEVELOPERS who need to work on the same code to COORDINATE their work EARLY in the development cycle. Of course they'll bitch.

    But so what. Developers always bitch when you make them do things right.

    And you make the programmers coordinate their work properly and early by not branching, and not allowing concurrent checkout of the same file. In Subversion, you lock the file, and if anyone breaks the lock they get a very public visit from the lead developer asking why.

    It works, too. You won't have any merge surprises two weeks from ship date.

    If your technical leadership has the spine to show prima donna twits who won't follow development rules the door. Of the entire company.

    1. Re:Merging *does* suck by Anonymous Coward · · Score: 1, Insightful

      Wow, that's the worst idea I've ever heard

    2. Re:Merging *does* suck by Anonymous Coward · · Score: 3, Insightful

      I hope you're working for one of my company's competitors, if you are so eager to hamstring your developers and limit their productivity! Having to wait for someone else to finish a major piece of development before I can fix a bug in an unrelated section of a file they happen to be modifying... yeah, that's the way to turbocharge your development process.

    3. Re:Merging *does* suck by chez69 · · Score: 2, Insightful

      if your working with a good SCM and have somebody with a clue who administers it (I've worked in a large clearcase setup for years, with a great admin staff) concurrent development isn't that hard to do. Good tools make the job easy.

      file locking is ok for 2 or 3 developers, any more then that, it sucks bad.

      --
      PHP is the solution of choice for relaying mysql errors to web users.
    4. Re:Merging *does* suck by Anonymous Coward · · Score: 0
      Wow, that's the worst idea I've ever heard

      Worse than, say, setting yourself on fire?

    5. Re:Merging *does* suck by koreth · · Score: 1

      It sounds like you really mean, "Doing big merges at the last minute sucks." But it's more generally the case that doing anything major at the last minute sucks. Merging two weeks before ship date is no different than checking in a big new feature or a substantial refactoring or a fix for a bug in a critical system component two weeks before ship date. If you're doing any of those things, it's a failure of your project management, but that failure has absolutely nothing whatsoever to do with merging per se.

      Merging or checking in a major new feature six months before your ship date is not any problem at all, and your methodology throws away the advantages of branch-based development during the bulk of the project's lifetime for the sake of a minor additional level of safety (which can be avoided with proper project management anyway) at the very end. If your problem is that "merges happen at the last minute" then honestly you need to look at your development processes as a whole.

      Even at the last minute, though, not all merges are major operations. In a development shop that embraces git's "branch often" philosophy, merges tend to be small and frequent, and thus no one of them has much of a chance of breaking the source base. Further, before you merge a feature-development branch into your main source base, you will almost always have done the opposite first, and done a full round of testing at that point. If you do that, the merge is almost a no-op.

    6. Re:Merging *does* suck by Frankie70 · · Score: 4, Informative


      So don't do it


      Wow! I bet you have never worked on anything other than hobby
      projects.

      Most projects I have worked on cannot do without branching &
      branching big & I am not talking about branches created for
      individual devs.

      What do you do if you have make patches on an earlier release(s)?
      What do you do if your project team has 50 devs working on
      5 different modules inside? If one guy makes a buggy submit
      it will break every one else? Typically each team does weekly
      sanity tests & then propagates the changes to the main.

      Yeah - and I agree with Linus - CVS is rubbish.

      Have used CVS, Clearcase & Source Depot. Source Depot
      is a Microsoft internal Source Control system. Microsoft
      licensed Perforce & developed on it. I used to work with
      MS long back & Source Depot was the best Source Control
      System I have ever used.

      CVS lacks too many features.
      1) Atomic checkins/submits
          I am trying to submit changes in 5 files as a single bugfix.
      A submit/checkin should either succeed for all 5 or fail for all 5.
      CVS doesn't do this. The end result is that I may end up submitting
      a change in the header without submitting a correspond change in the
      implementation file.

      2) Changelists
          After checking in multiples files together, at any point in time, I should
      be able to find out all the changes that were checked in at the same time.
      CVS has no way of doing this - Submitting 5 files together is the same as
      submitting 5 files separately as far as CVS is concerned.

      3) More Changelist features for non-submitted changes
      Let us say I am working on 3 different bugfixes. Source Depot allows me
      group together my changes in different changelists even before I
      submit the changes. That is I can create changelist A B & C.
      In changelist A - I have files a.c & a1.c changed, in changelist
      B, I have b.c & b1.c changed & so on. So I decide I am done with
      all the changes required in the subset A, I can submit it very easily
      or undo all changes in changelist B.

      4) Merges
      Merges between branches are a breeze with Source Depot. With CVS it's
      a pain. Source Depot stores a lot of information about merges which have
      already happened which in invaluable. In CVS, merges between branches
      are very little more than changes manually copied from one branch to
      another.
      I can do a lot of stuff which I can't do with CVS
      - I can very trivally merge Bugfix 1111 (comprising of 5 files
      checked into changelist XXXX) from a branch to another branch or
      the main trunk.
      - Because Source Depot stores information about merges, I can do periodic
      single command merges very easily between a branch & the trunk - Source Depot
      will not try to merge in changes which have already been merged the last
      time I did a merge.

      I could go on & on, but the point is that something Source Depot makes
      a developers life so much more easier. I could work around all these
      things in CVS (i.e. do it in multiple steps) but the ease is something
      worth paying for I think. If Microsoft ever released Source Depot
      as a commercial product, it would be great, but I don't suppose their
      license with Perforce would allow it.

    7. Re:Merging *does* suck by Timothy+Brownawell · · Score: 5, Insightful

      So don't do it.

      The Wise adapts himself to the world. The Fool adapts the world to himself. Therefore, all progress depends on the Fool.

      It's always done late in a development cycle, in the rush to get the project out the door.

      Why? It doesn't have to be. At least if you use something that isn't horribly broken.

      So don't branch, and DON'T allow concurrent checkout of any code - FORCE the DEVELOPERS who need to work on the same code to COORDINATE their work EARLY in the development cycle. Of course they'll bitch.

      Yes, they will. Because this is a monumentally stupid idea. Because the entire *purpose* of revision control systems (note: "CVS" stands for "Concurrent Versioning System") is to make it possible for developers to work on things at the same time. The idea is that you can get more benefit from the concurreny than you get difficulties from merging.

      If your technical leadership has the spine to show prima donna twits who won't follow development rules the door. Of the entire company.

      Rules like "merge early, merge often", perhaps? Fixes the problem, and *doesn't* cripple development horribly like your idea would.

    8. Re:Merging *does* suck by Anonymous Coward · · Score: 0

      I have tried that, and it does not work. You end up in a situation where each programmer owns a set of files, and the newly hired ones have to
      beg permission to make changes. Once you have checked out a file you need to quickly commit your changes before you can go home, as
      otherwise everyone will hate you for blocking progress (we used to have fines for going home with files checked out).
      This puts stress on programmers to check out, edit, and commit quickly, and
      results in untested code being comitted to the tree. The workaround is to bypass the SCM locally by overriding the write-protection of files, but
      then you are back to a very limited and error-prone poor man's branch-and-merge.

      In other words, I think *you* suck and should be shown the door.

    9. Re:Merging *does* suck by iamacat · · Score: 1

      What does "same code" have to do with SAME FILES? There are plenty of opportunities for developers to edit different parts of the same file without stepping on each other's toes. On the other hand, someone changing a header file to remove a function can wreck major havoc on people who just wrote the code that relies on it.

      Surely we all agree that, if semantically-aware source control tools are developed, it's a good idea to give developers exclusive locks on, say, basic blocks that they are actually modifying or function prototypes for functions they are calling in those blocks.

    10. Re:Merging *does* suck by Anonymous Coward · · Score: 0

      I think you just described perforce - I can do all of that in perforce. I wonder if microsoft has done anything additional to it, or if they just want internal branding (esp. after the disaster that was sourcesafe)

    11. Re:Merging *does* suck by stoicfaux · · Score: 1

      So don't branch, and DON'T allow concurrent checkout of any code - FORCE the DEVELOPERS who need to work on the same code to COORDINATE their work EARLY in the development cycle. Of course they'll bitch.

      That's very naive. At a minimum, you will (eventually) need:

      a) main trunk (2.0 development)

      b) emergency production patch (1.0.1)

      c) QA Patch (1.1) 1.1 is in QA for a week or two. People are working on 2.0. You will need to branch to fix the odd bug in 1.1 that QA finds.

      You will need decent branching and merging tools to get the bug fixes from 1.0.1 and 1.1 into 2.0. It's also amusing when someone finds a bug in 2.0 that needs to get back ported to 1.0.1 and 1.1. Agile/continuous integration only reduces the chance of needing to branch and merge, it doesn't completely eliminate it. The price for trying to figure out a branching/merging plan at the last minute is very high. And don't forget that the change control system (the "red tape") also needs to support branching.

    12. Re:Merging *does* suck by PeterBrett · · Score: 1

      I think you just described git - I can do all of that in git.

      Faster and with less faff than using *any* other version control system I've tried. However, MKS Source has some really nice features... shame it's so expensive, really!

    13. Re:Merging *does* suck by DrXym · · Score: 1
      So don't branch, and DON'T allow concurrent checkout of any code - FORCE the DEVELOPERS who need to work on the same code to COORDINATE their work EARLY in the development cycle. Of course they'll bitch.

      Sorry but this is ridiculous. I'm on a project where there are 5 or 6 independent and major features each with business and back-end dependencies which may or may not be ready in time for a particular point release. All need to be QA tested and therefore need to be checked in for release engineering builds. Branches and merging are the only sane way to manage it. I'm sure some projects have hundreds of features and subsystems in concurrent development. It would be impossible to feature work on the same branch without severely disrupting development and QA testing. Saying otherwise is living in cloud cuckoo land.

    14. Re:Merging *does* suck by OrangeTide · · Score: 2, Insightful

      Your method does work, but it is not the best method. coordinated incremental merging of sub-projects throughout the entire development life-cycle also works, assuming you have a few developers who are detail oriented enough to merge code reliably. Also one problem with merging is that most shops don't code-review merges, which is just nonsense in my opinion.

      Branching often and avoiding double-commits seems to be the way to enable parallel development. (double commits as in committing the same change to two branches, you should merge before you get to that point)

      Also just because developers bitch doesn't mean they are wrong. Developers tend to whine when they think they have some pointless burden placed on them that is preventing them from doing their job. (their idea of what their job is and the management's idea of their job rarely match up perfectly). Developers often promise schedules based on the assumption that they won't have to merge or suffer a "code-freeze" or be blocked by arbitrary rules used to beat developers over the head when management does not think they are coordinating.

      the more often you merge the less work it is. when you merge branches constantly the changes end up being trivial and you don't have to stress and fuss over a bunch of conflicting changes. it helps if you can hold a quick meeting with the two or three people that produced a merge conflict, so this technique really only works if your team is all in the same building/campus.

      I view development as a dance, we all step on each other's toes for a while but once you get used to your dance partners you get better at it. it just takes a long time with developers because they are antisocial and not hugely team oriented. Developers, in general, hate depending on other people to do their job. They also are quick to blame others for failing to take them into account (another antisocial behavior is assuming everyone around you is a mindreader, another word is egocentric)

      it's not that developers are prima donnas, which is something software managers often assume. it's that some personality types don't realize that there is actually anyone else around them. often developers have no idea that any of their peers even do any work. they might as well be equivalent to furniture, something to avoid tripping over in the hallway, but otherwise irrelevant.

      --
      “Common sense is not so common.” — Voltaire
    15. Re:Merging *does* suck by Antique+Geekmeister · · Score: 1

      Agreed. I've seen critical patches held up for up to a year because the "QA" process was not allowed to test and approve individual components for release, but had to hold up or roll back the entire software release if any individual component failed. There are uses for monolithic development models, but for large projects it's quite crippling. Developers get frustrated and lose the ability to share their work with others. Managers who don't always have the technical expertise needed wind up being gatekeepers on both development and communications.

      I'll be delighted to test out git and see if it works well, simply based on Linus's very strong recommendation. The branching model is particularly attractive for live redundant repositories.

    16. Re:Merging *does* suck by WilliamSChips · · Score: 1

      That might be a good idea as a part of a political protest(e. g. the guy on the Rage Against the Machine album cover whose name escapes me), but that guy's ideas on merging wouldn't even be useful as that!

      --
      Please, for the good of Humanity, vote Obama.
    17. Re:Merging *does* suck by Anonymous Coward · · Score: 0

      Funny thing is, Subversion actually does most of what you mention.

    18. Re:Merging *does* suck by Anonymous Coward · · Score: 0

      I bet you are not as bad a person as you describe.

    19. Re:Merging *does* suck by Trillan · · Score: 2, Informative

      Subversion does do all of that, however.

    20. Re:Merging *does* suck by aichpvee · · Score: 1

      That's why I've started putting every line of code in its own file. I haven't had this problem since!

      --
      The Farewell Tour II
    21. Re:Merging *does* suck by Anonymous Coward · · Score: 0

      Tell your employer that you want an 80 column monitor.

    22. Re:Merging *does* suck by master_p · · Score: 1

      The fundamental problem is that the smallest unit of operation if the 'file', where it should be 'the line of code'. Since we can check out files only, we have to merge changes. If we could check out lines of code, there would be no need for merging.

    23. Re:Merging *does* suck by doug · · Score: 1

      As a CC admin, I appreciate your comments. But I do have to say that CC is no where near as fast as what Linus reports git to be. I've never used git myself, but when we import an update from montavista, it is going to take a while. It happens to run on its own without human interaction, but it is going to chug for a while.

    24. Re:Merging *does* suck by doug · · Score: 1

      I'm a clearcase admin by day, so I think I have some first hand experience in this area. A single branch means a single development thread, which is not a real world scenario. For the project that I'm working on there is one release in long term maintenance, a second going from development to maintenance (GA release just happened), a third under development (will GA at the end of this year, or early next), and early prototyping for a fourth. How again is this all supposed to work on a single branch?

      Each of these four releases has its own branch, with sub-branches for development/fixes. How would your system of a single branch handle merging fixes from maintenance releases to in-development releases? And when fixes get back ported, can a single branch handle backwards merge. Does that concept even exist? This is ugly, but it is real-world.

      Please don't tell me that each and every release would be modeled as a different project. That would be the cure being worse than the disease.

      At the very end Linus explains that branches aren't the issue, it is merging. In this he is "spot on". I don't think clearcase got everything right (I've spent too much time with "merge hell" to think that), but at least it is possible. His style is vitriolic at times, but if you look past it, he makes some very valid points. I have no first hand experience with git, so I don't know if his solutions work well enough for me or not, so I have to take his "solutions" part of the presentation with a grain of salt. But I don't remember any problems with the "problem identification" bits.

      - doug

    25. Re:Merging *does* suck by Alan+Shutko · · Score: 1

      Subversion does not do merge tracking. They're hoping to add it in svn 1.5, but....

    26. Re:Merging *does* suck by Trillan · · Score: 1

      Can you explain what in particular he mentioned that you can't do with svn? I've used it a few times, including a few merges, and haven't really run into anything he described that I can't do. I'm interested in knowing more about its limitations before I run into them. A link would do, if you'd like. Thanks. :)

    27. Re:Merging *does* suck by Grishnakh · · Score: 1

      I'm using ClearCase at my present employer, and your complaints about CVS here (which I've also used in the past) sound exactly like my complaints about ClearCase. Except that, in my experience, CVS was much easier and faster to use than ClearCase. Why anyone would pay the huge license fees necessary for ClearCase when tools just as good (or just as bad, as it may be) are available for free is beyond me.

      Personally, I like Subversion the best, since it addresses most of the complaints you have here (esp. atomic commits and changelists).

      I haven't used Perforce, so I can't comment on that.

    28. Re:Merging *does* suck by Harik · · Score: 1

      Actually, no, and for the same reasons file locking is an abysmally bad idea.

      If you have to make a core API change, it's going to suck. Period. But if you lock the API that's used through the entire code (think resource allocation, for an example) that means nobody can work on anything, and all existing outstanding work has to be merged and stopped before you can even start to make the change. Refactoring is difficult enough as it is, you can't make the entire project grind to a halt over it.

    29. Re:Merging *does* suck by chez69 · · Score: 1

      We host lots of applications (over 50) on the system we have, with folks all over the world using it. speed has never been an issue for me at all.

      it's a great system when you have a good admin. I can't pimp it enough.

      --
      PHP is the solution of choice for relaying mysql errors to web users.
  3. GIT by Anonymous Coward · · Score: 0

    There have got to better acronyms out there to choose from. Whoever came up with this was a worthless git.

  4. Source Safe by EraserMouseMan · · Score: 5, Funny

    Well Linus didn't have anything bad to say about MS Source Safe. . .

    [ducking] Sorry, I couldn't resist the urge. ;-)

    1. Re:Source Safe by HaeMaker · · Score: 3, Funny

      aaaaaaaa
      aaaaaaab
      aaaaaaac
      aaaaaaad
      aaaaaaae
      aaaaaaaf
      .
      .
      .
      1,712,928 Files...

    2. Re:Source Safe by Anonymous Coward · · Score: 0

      Yes, it seems Linus just want to piss off smaller companies like Perforce... But he didn't complain about one of the most spreaded craps around: VSS

    3. Re:Source Safe by Oscar_Wilde · · Score: 1

      OK, I did some Googling but didn't find anything... what's the joke?

    4. Re:Source Safe by Nataku564 · · Score: 1

      While I could be mistaken, I believe thats how VSS tracks file versions. Its not smart enough to store diffs, so it just has a giant repository of incrimenting file versions - and none of them are named properly. It has some strange internal and cryptic database system that stores the real file's name, so just glancing at the actual contents of the VSS server will get you billions of jibberish files.

      Worst. Product. Ever.

    5. Re:Source Safe by Anonymous Coward · · Score: 2, Informative

      VSS does know about diffs. It stores them in files named aaaaaa, aaaaab, ..., aaaargh, etc.

      That's because instead of using a 'real' database, it's borrowed an ancient unix tradition: using the file system as data store. There really isn't that much difference: other source management systems put them in tables, with rows that just might be labeled 1, 2, ..., 666, etc. Users don't see the labels, so they don't use them to mock the system.

      And it can't be the worst product ever, not even in its own category. CVS already has that honor.

      And Linus may be right, but he's wrong. There's no way to make CVS better, but subversion started off as an atempt to make a versioning system that explicitly avoids CVS's known drawbacks and pitfalls, and they're doing a damn good job at it.

    6. Re:Source Safe by chthon · · Score: 1

      Talk about code reuse. This versioning system seems to have the same software life cycle as Notepad.

      I used Microsoft C V5.0 or 6.0 in 1990 and 1991 (before buying Zortech C++) and there was already an editor included which used this backup system.

    7. Re:Source Safe by MORB · · Score: 1

      I used both. Sourcesafe is way worse.

      It's a works or doesn't work deal. For some people it works just fine (well, it's slow as hell for most operations though, although not quite as bad as subversion), and for some others it will randomly trash files.

      I experienced both situations. When it doesn't work, it manage to randomly screw a file. We'd loose roughly one file every day (that we'd just reinsert from our local copy), good thing it wasn't on a huge project.

      Sourcesafe is a product about which microsoft advise "avoid to use it with repositeries more than a few GiB large". This vagueness is really inspiring trust.

    8. Re:Source Safe by maxwell+demon · · Score: 1

      He also didn't complain about RCS.

      --
      The Tao of math: The numbers you can count are not the real numbers.
    9. Re:Source Safe by Anonymous Coward · · Score: 0

      I've admin-ed both. And Subversion, and some Perforce. I'd rather gouge my own eye out than admin VSS again.

    10. Re:Source Safe by Jarik_Tentsu · · Score: 1

      Having never *really* used Linux...I thought this article was calling him a git. o.O

    11. Re:Source Safe by chrish · · Score: 2, Informative

      An exciting data point that indicates the quality of Visual SourceSafe; Microsoft will not use it in-house. Existing projects use a customized version of Perforce, and new ones are using their own Team Server (which is good... "eating your own dog food" always results in a better product).

      --
      - chrish
    12. Re:Source Safe by ClickOnThis · · Score: 1

      OK, I did some Googling but didn't find anything... what's the joke?

      At first I thought it was about Arthur C. Clarke's apocalyptic (Y2K-ish, if you will) 1953 short story, The Nine Billion Names of God, but on closer inspection, I see that they're one character short and the repeated character strings are too long.

      --
      If it weren't for deadlines, nothing would be late.
  5. Why winge? by gilesjuk · · Score: 4, Funny

    CVS and Subversion are open source projects, Linus should fix them.

    1. Re:Why winge? by Brandybuck · · Score: 3, Insightful

      The problem with CVS and Subversion are one of fundamental design. At least, that is what Linus is suggesting. You can't fix them without rewriting them completely from the ground up.

      --
      Don't blame me, I didn't vote for either of them!
    2. Re:Why winge? by zzatz · · Score: 5, Insightful

      Linus isn't saying that CVS and Subversion have fixable bugs or missing features. It's not about the code.

      He is saying that they solve the wrong problem. The Subversion team wants to solve Problem A, and Linus wants to solve Problem B. No amount of code will turn the solution to Problem A into a solution for Problem B. Bothering the Subversion team with code addressing Problem B will only irritate them, since they're working on Problem A.

      The right way to handle differing goals is to start a different project. That's what he did.

      Don't be confused by the labels. Source Code Management means different things to different people, and there isn't always much overlap in how each person defines it. Ships and airplanes are both 'vehicles', but that doesn't mean that a few changes will turn one to the other.

    3. Re:Why winge? by RedWizzard · · Score: 5, Informative

      CVS and Subversion are open source projects, Linus should fix them. He did fix them: he wrote GIT. He's no really whinging, he's saying "I wrote this tool because the other options are crap".
    4. Re:Why winge? by gronofer · · Score: 1

      He did fix them: he wrote GIT. He's no really whinging, he's saying "I wrote this tool because the other options are crap".
      I watched the entire video, and I'd have to say he was gloating, not whinging. He seems to have quite a bit of confidence in git.
    5. Re:Why winge? by marcello_dl · · Score: 1

      he's saying "I wrote this tool because the other options are crap".

      AFAIK he wrote git because he got bitten by bitkeeper :)

      Anyway I think he is just spinnin' a little his project, and git probably deserves kudos. Still, subversion is great because it's like CVS. All people used to CVS concepts could enjoy the better file handling Subversion gave them, and that made subversion successful. It might harm SCM to have people attached to CVS concepts, like it might harm to have people attached to office suites instead of document centric software. That doesn't make SVN or Openoffice less of a huge success anyway.

      Linus is a git and you, please, avoid being a bunch of darcs.
      --
      ---- MISSING MISCELLANEOUS DATA SEGMENT --- [sigdash] trolololol
    6. Re:Why winge? by Anonymous Coward · · Score: 0

      Oh, I get it. Thanks.

      Uh, what was Problem A again?

    7. Re:Why winge? by DrXym · · Score: 2, Interesting
      I don't think there is anything especially wrong with Subversion. Sure it doesn't support changesets which is an very handy feature if you're juggling lots of checkins, or your role is release engineer but it is possible to work without them, e.g. using patches and atomic fileset commits. I used CMVC with changesets and it is useful for release managed projects but its bit of a pain for casual or self-managed code.

      Other features such as replication would also be useful if svn were a slug but it isn't. Some source control systems such as Clearcase are so badly designed that replication is essential because of the bursty traffic but svn seems to run superbly even across the internet. Subversion is also cross-platform and runs anywhere which in itself is a massive bonus.

      I would like to see git be used more but it needs to be properly cross-platform with a front-end akin to TortoiseSVN and plugnis for all major development environments before that is likely to get the attention it deserves.

    8. Re:Why winge? by suv4x4 · · Score: 1

      Don't be confused by the labels. Source Code Management means different things to different people, and there isn't always much overlap in how each person defines it. Ships and airplanes are both 'vehicles', but that doesn't mean that a few changes will turn one to the other.

      I've not heard an aeroplane manifacturer say "man, all of you who drive cars, gotta be away in a mental institution or something. cars have to be thrown out, sad, but true"

    9. Re:Why winge? by Anonymous Coward · · Score: 1

      That's just his usual style. People read way too much into it.

    10. Re:Why winge? by bensch128 · · Score: 3, Informative

      SCMs like SVN and perforce are fundamentally different from GIT, darcs and bzr.

      SVN and perforce are centralized SCMs and GIT,darcs,bzr are decentralized.
      So SVN,CVS,Perforce are uninteresting to Linus because he and the linux kernel developers work in a decentralized manner. Working decentralized means that there needs to be a person to receive patches from others and apply it to his tree. Anyone with write permissions can commit to a SVN server without submitting patches to a manager. Both have their own pluses and minuses.

      KDE uses svn so there doesn't need to be one person to integrate all of the patches because it's a HUGE project. I guess linux is a lot smaller so Linus can handle all of the incoming changes. However, i think he mostly rubber-stamps most of the patches coming from his trusted lieutenants.

      Personally, I use perforce at work. Preforce has the best GUI tools I've ever had the pleasure to use. It's also got amazing merge tools for resolving merge problems.

      At home, I use svn+bzr while working on krita. svn has ok tools but bzr is amazing for transparently working as a temporary backup until i commit to the main kde svn. I find the svn cli to be good enough.

      Cheers
      Ben

    11. Re:Why winge? by DaveHowe · · Score: 2, Interesting

      Isn't that pretty much the same reason he wrote linux in the first place? :)

      --
      -=DaveHowe=-
    12. Re:Why winge? by chthon · · Score: 1

      One very expensive, proprietary tool called Continuus/Synergy does not support changesets either.

      I like Subversion. I think that at the moment it occupies the best sweet spot. I would like to use SVK, but that will not be the case until it supports externals like in in Subversion.

    13. Re:Why winge? by WgT2 · · Score: 1

      ...However, i think he mostly rubber-stamps most of the patches coming from his trusted lieutenants.

      Seems like an efficient means of getting things done and it would fit with Linus' previous admittance to being lazy... but aren't all good programmers and sys-admins?

    14. Re:Why winge? by Tickletaint · · Score: 2, Insightful

      But believe me, everyone who works in transportation and transportation policy is secretly thinking the same thing. Our dependency on the automobile is insane, and it is destroying us.

      --
      Make Slashdot readable! See journal.
    15. Re:Why winge? by turbidostato · · Score: 1

      "I don't think there is anything especially wrong with Subversion. Sure it doesn't support changesets"

      What do you mean exactly with "doesn't support changesets"? It does support atomic commits and branches. What else is need for "changesets" to be supported?

    16. Re:Why winge? by gbjbaanb · · Score: 1

      lol. and the car parks at the places these guys work at are empty, right?

      They mean - "everybody *else* needs to stop being dependant on the automobile, they're really hampering our enjoyment of driving".

    17. Re:Why winge? by Tickletaint · · Score: 1

      Does anyone really enjoy driving to and from work every day? I mean, sure, it's great to rent a car to take a road trip cross country, provided you're willing to bear the full costs of so doing. But being trapped behind the wheel of a car every day would drive me fucking crazy. Give me a real city, one where I'm free to travel without lugging along two tons of steel.

      --
      Make Slashdot readable! See journal.
    18. Re:Why winge? by grumbel · · Score: 1

      ### What do you mean exactly with "doesn't support changesets"? It does support atomic commits and branches. What else is need for "changesets" to be supported?

      A user can't modify his local checkout, add files, move files, do stuff, then do a "svn diff" and mail the result to a maintainer who then would "svn patch" his repository and commit the changes, since what "svn diff" produces isn't a complete set of changes, but only a small subset of the changes and there isn't a "svn patch" to begin with. So working together with people who don't have write access becomes a total mess as soon as they need to do things beside what the classic diff and patch can track. Subversion simply doesn't have changesets at the user level, it only has them internally when it comes to committing to the central repository, but there is no way for a user to dump those changes and send them to a maintainer for approval.

      The irony is that this wouldn't even be all that hard to implement, since it is not something that goes against the basic model of svn. It just happens to be still unimplemented after all those years, which is kind of a shame, since it would be a quite useful feature.

    19. Re:Why winge? by ultramkancool · · Score: 0

      He's already fixed them by releasing git. Making your own better product is still a valid way of "fixing" last time I checked :)

    20. Re:Why winge? by A+Holstenson · · Score: 1

      I've not heard an aeroplane manifacturer say "man, all of you who drive cars, gotta be away in a mental institution or something. cars have to be thrown out, sad, but true"
      Airplanes and cars fill different needs so your comparison doesn't count. Airplanes are useful for longer distances and cars for shorter distances. The both solve different variations of the same problem.

      The same is true for SCM systems, where several systems try to solve the same essential problem, but in that fill different needs. As other people have pointed out, GIT solves the SCM problem in a decentralized way while tools like SVN solve the problem in a centralized way.

      Choose a tool that solves your problem while catering your needs.
    21. Re:Why winge? by Eil · · Score: 3, Insightful

      Linus isn't saying that CVS and Subversion have fixable bugs or missing features. It's not about the code.

      I think it's more about bashing some thing or another to gain attention.

      I liked Linus, and I've held him in high regard for more than a decade for all that he's helped accomplished while still being mostly modest about it. But he seems to be slowly evolving into another Stallman lately. Everything has been, "I don't like x and therefore x is stupid and you're a mentally-retarded asshat if you don't agree with everything I say."

      Just last week he started a flamewar on LKML about software suspend. Linus threw a shitfit when some bugs in suspend-to-disk were affecting suspend-to-RAM. After insulting a few other kernel developers without provocation, he basically ended the conversation by saying that the whole thing was going to be ripped out and redone only as suspend-to-RAM because he didn't use suspend-to-disk. Since he himself didn't use it, he postulated that it was a completely useless waste of time for anyone to implement it.

      The Subversion team wants to solve Problem A, and Linus wants to solve Problem B.

      So why couldn't he have simply said, "GIT solves the problem that I need it to solve, which is different from Subversion's"? Oh, right, because that wouldn't be interesting enough to make the front page of Slashdot. Too bad if the alternative alienates the half of the open source community that likes Subversion for what it does.

    22. Re:Why winge? by Brandybuck · · Score: 1

      I don't think there is anything especially wrong with Subversion.

      I don't either. But Linus does. I was just telling the grandparent why his suggestion that Linus go and "fix" it himself doesn't work.

      --
      Don't blame me, I didn't vote for either of them!
    23. Re:Why winge? by Anonymous Coward · · Score: 1, Informative

      Whilst 'winge' is a misspelling, it's not a misspelling of 'whine'. It's a misspelling of 'whinge', which is a British term which is more or less a synonym of 'whine'.

      So there you go, Mr. A.C. You're not quite the linguist either.

    24. Re:Why winge? by DrXym · · Score: 1

      Imagine you have multipld different changes. Now imagine you have to backout one particular change without affecting any others. That's where changesets come in. Each set of changes is a discrete changeset that some source control systems would allow you to easily revert if need be. Subversion allows you to do atomic commits, but backing out changes is still a major pain especially if the file is touched by more than one checkin. You can't just pull a complete set of changes as you could with git. That's not to say I think git is very convenient in other ways, but changesets are one of its strengths.

    25. Re:Why winge? by coaxial · · Score: 1

      No amount of code will turn the solution to Problem A into a solution for Problem B. I beg to differ. In fact, here's a patch that does just that!

      > diff -u a b
      --- a 2007-06-03 12:17:26.000000000 -0700
      +++ b 2007-06-03 12:17:33.000000000 -0700
      @@ -1,3 +1,3 @@
        int main(int argc, char **argv, char **env) {
      - solve_problem_a();
      + solve_problem_b();
        }
      :D
    26. Re:Why winge? by Anonymous Coward · · Score: 0

      Our dependency on the automobile is insane, and it is destroying us.
      But you're missing out half the analogy there. The automobile may be a problem, but that doesn't mean that replacing it with a dependency on the aeroplane would improve matters. ;)
    27. Re:Why winge? by Anonymous Coward · · Score: 0

      If Linus worked in aeronautics, you'd be hearing that. Linus is a good asm and C hacker, but too often he thinks his opinions are revealed truth.

    28. Re:Why winge? by TekPolitik · · Score: 1

      A user can't modify his local checkout, add files, move files, do stuff, then do a "svn diff" and mail the result to a maintainer who then would "svn patch" his repository and commit the changes, since what "svn diff" produces isn't a complete set of changes, but only a small subset of the changes and there isn't a "svn patch" to begin with.

      If you use SVK on top of svn you can do this.

    29. Re:Why winge? by TekPolitik · · Score: 1

      Imagine you have multipld different changes. Now imagine you have to backout one particular change without affecting any others. That's where changesets come in.

      I use both git and Subversion, with branched development in both. I don't see how either is any better than the other at the task you describe.

    30. Re:Why winge? by nephyo · · Score: 1

      He seems to be saying something somewhat stronger than that in this talk. He is suggesting that Git and decentralized systems in general are much better at solving or preventing most problems related to scm that most developers in the real world have to deal with. He admits that Subversion, CVS, etc. work. So there's nothing "wrong" with them in that loose sense. However, it is clear from this talk that he believes Git is strictly better for most of us. And he's got a lot of very interesting and pretty interesting and convincing arguments for those claims.

      It's more like comparing a family of cars that can drive themselves, run forever on solar power with zero emissions, have a higher top speed, a faster acceleration, and are so safe that they have a near zero chance of injury let alone fatalities, to good old fashioned modern day automobiles.

      --
      I grant all that I write to the public domain.
    31. Re:Why winge? by DrXym · · Score: 1
      I use both git and Subversion, with branched development in both. I don't see how either is any better than the other at the task you describe.

      The problem is not many projects create branches to fix bugs or implement every feature. Nobody does that in the real world since a developer might have to fix 20-50 bugs during QA and it would be sheer insanity to create a branch for each. No one would do it. Normally the trunk would receive a lot of unrelated checkins for bug fixes and may ultimately need to be backed out. Sure you might use branches for major work, but even there there the branch might go through its own QA cycle where it can suffer exactly the same problem.

      I fully appreciate the changeset feature in git for what it can offer. I just don't see the tool being as convenient as Subversion especially if you have cross-platform work or expect decent integration with the desktop or major IDEs.

    32. Re:Why winge? by asuffield · · Score: 1

      CVS and Subversion are open source projects, Linus should fix them.


      Many people have tried to fix subversion. They have always been rebuffed with claims like "that's not what we're trying to do". You have to realise that subversion is, fundamentally, a commercial product designed to maximise revenue. Just because the source is public doesn't mean that it is developed in the same manner as Linux; contributions are welcome only if they are beneficial to CollabNet's goals.

      You can theorise for yourself what kind of goals a support-oriented company might have for a project they support (but I'd bet that "needing our support" is going to be on that list somewhere).
    33. Re:Why winge? by Raenex · · Score: 1

      "I don't like x and therefore x is stupid and you're a mentally-retarded asshat if you don't agree with everything I say." He's always been that way. Linus admits it himself.

      From 2000: Debugging

      "I'm a bastard. I have absolutely no clue why people can ever think otherwise. Yet they do. People think I'm a nice guy, and the fact is that I'm a scheming, conniving bastard who doesn't care for any hurt feelings or lost hours of work, if it just results in what I consider to be a better system."

      From 2001: Linus on Linus

      "'Anyone reading this column would assume the mounting pressures of my role as chief nerd has turned me into an asshole,' says Torvalds. But, he adds, that impression is wrong: 'I was always an asshole.'"
    34. Re:Why winge? by imp · · Score: 2, Informative

      I've use perforce to keep a private FreeBSD branch for about 6 years now. It just works. I've done enough commits that come from that branch (and about 6 others) to FreeBSD to stay in the top 5 kernel developers for most of that time. Perforce absolutely rocks in helping to keep me sane.

      While it is centralized, one cannot deny that its branch merging tools are about the most powerful out there.

      Warner Losh
      FreeBSD kernel hacker

      P.S. This is an abbreviated version of a much longer post to the blog listed in this article.

    35. Re:Why winge? by j_ohloh · · Score: 1

      I work at Ohloh.net, where we track thousands of OSS projects through their SCMs. After working with CVS, SVN and Git for 'a while', I've found Git's design to be both brilliant AND infuriating. Most infuriating is the command line interface, which is a result a of 'bottom-up' design. It's very functional but offers very little abstractions - one must understand how it works 'underneath'.

      The underlying architecture, however, is fantastic. Firstly, you can easily clone a remote repository - anonymously (huge help for Ohloh - but also useful for more mainstream cases). I also like how it treats patches: a 'non-committer's patch carries his/her credentials into the repository. Example:

      • Kernel 2.6: 3002 'developers' [GIT]
      • GCC: 322 'developers' [SVN].

      I quote 'developers' because we all know that a lot more than 322 people have contributed patches to GCC. However Git enables kernel patch submitters' names to go into the tree - thereby having clearer attribution. There are more goodies lurking in the Git plumbings - but i'd have to refer to my crib sheet...

    36. Re:Why winge? by petermgreen · · Score: 2, Informative

      AFAIK he wrote git because he got bitten by bitkeeper :)
      iirc the story goes something like

      linus didn't want to use version control

      linus justified his not using version control by saying all the options were crap.

      The bitkeeper guys were carefully watching his arguments and moulding thier tool based on them.

      linus was finally backed into a corner by the bitkeeper guys and ended up using bitkeeper

      bitkeeper was reverse engineered as a result of its use for the linux kernel.

      there was a big fallout between the linux kernel team and the bitkeeper guys rendering its continued use for the linux kernel impractical.

      linus wrote git because he could no longer live without version control but didn't think any of the availible soloutions were acceptable.

      --
      note: i'm known as plugwash most places but i screwd up registering that here somehow in the past and now can't register
  6. how to learn git? by zojas · · Score: 4, Informative
    I've tried to use git, and I feel like if you want to do anything more than commit, you have to jump off a cliff which has serious spikes at the bottom. seriously, if you want to learn how to do more than 1 or 2 of the simplest operations with it, you have to invest serious time. I tried, and never could get there.

    anybody have a good tutorial? (not the crappy one which comes with it)

    I'm not an SCM rube either. I've competently used tla (arch), darcs, and of course CVS. but git just seems too hard to use. damn fast though.

    1. Re:how to learn git? by Prof.Phreak · · Score: 1

      I've tried to use git, and I feel like if you want to do anything more than commit, you have to jump off a cliff which has serious spikes at the bottom. seriously, if you want to learn how to do more than 1 or 2 of the simplest operations with it, you have to invest serious time. I tried, and never could get there.

      It was hard to write...it should be hard to use...errr... this is Linus we're talking about, right?

      --

      "If anything can go wrong, it will." - Murphy

    2. Re:how to learn git? by Anonymous Coward · · Score: 5, Informative

      # set up new project
      cd project
      git init
      git add .
      git commit -a -m "Initial commit"
       
      # edit a file
      vi file.php
      git commit -a
       
      # add a file
      vi new.php
      git add new.php
      git commit -a
       
      # see the log
      git log
       
      # make a branch
      git branch working
      git checkout working
      # or in one step
      git checkout -b working
       
      # add some changes to this branch
      vi file.php
       
      # see what you changed
      git status
       
      # check it in
      git commit -a
       
      # see all branches
      git branch
       
      # go back to the first branch (initial branch is called "master" by default)
      git checkout master
       
      # make some other changes
      vi other.php
      git commit -a
       
      # merge the working branch into this one
      git merge working
       
      # see the branches and merges in a graphical browser
      gitk --all
       
      # let's do a log of all commits in "working" that don't exist in "master"
      git log master..working
       
      # hmm let's undo that last merge (tip of branch is HEAD, one commit back is HEAD^.. we are "popping" one commit)
      git reset --hard HEAD^
       
      # push your changes out (push the tip of local "master" branch to remote "incoming" branch)
      git push foo.bar.com:~/myrepo master:incoming
       
      # pull changes from another repo (remote "feature1" into local "feature1" branch)
      git pull baz.bar.com:~/otherrepo feature1
       
      # move the branch point of the "working" branch to the top of the "master" branch
      git checkout working
      git rebase master
      It can get a LOT more complex of course.

      When you're starting out, just remember "git commit -a" and you'll be fine. Also check out "git reflog" to see the linear history of your repo. The pulling/pushing stuff can get a lot more complex but it's damn powerful. If you can figure out Arch (yeesh) you can figure out git!

      SLASHDOT SEZ: you have too few characters per line. Okay, slashdot, here's part of the man page for git-rebase:

      If is specified, git-rebase will perform an automatic git checkout before doing anything else. Otherwise it remains on the current branch. All changes made by commits in the current branch but that are not in are saved to a temporary area. This is the same set of commits that would be shown by git log ..HEAD. The current branch is reset to , or if the --onto option was supplied. This has the exact same effect as git reset --hard (or ).If is specified, git-rebase will perform an automatic git checkout before doing anything else. Otherwise it remains on the current branch. All changes made by commits in the current branch but that are not in are saved to a temporary area. This is the same set of commits that would be shown by git log ..HEAD. The current branch is reset to , or if the --onto option was supplied. This has the exact same effect as git reset --hard (or ).If is specified, git-rebase will perform an automatic git checkout before doing anything else. Otherwise it remains on the current branch. All changes made by commits in the current branch but that are not in are saved to a temporary area. This is the same set of commits that would be shown by git log ..HEAD. The current branch is reset to , or if the --onto option was supplied. This has the exact same effect as git reset --hard (or ).
    3. Re:how to learn git? by linhux · · Score: 1

      We used git for a larger project (the source tree was huge, and git was the only free tool we found that could manage a project that big with reasonable performance) at work. I don't think anyone in the project group took longer than a few hours to learn the basics, including lowly testers like me. :-)

    4. Re:how to learn git? by YoungHack · · Score: 1

      I don't know if it is a good tutorial, but a skeleton bare "good start" is at http://limestone.truman.edu/~dbindner/gitnotes/git -notes.html

    5. Re:how to learn git? by MORB · · Score: 1

      You should try it again. It used to be quite low-level and thus complicated, which kind of made it mandatory to use something built on top of it like cogito.

      Recently though, they added more high level commands to the base package and day-to-day operations are as easy to do as in other SCMs. The documentation is quite good too.
      This is incidentaly why I looked at it again, tried it, and I really like it, even though I'm only using it by myself on a personal project (but it's nice to be able to play around using branches etc. when experimenting things)

      I used to love subversion, but it really disappointed me performance wise on real world, large projects. I used to think that while it was kind of slow on small projects, maybe it was designed to scale well with large projects with the trade off of being a bit slow even with small things.

      The last company I worked for used it on a MMORPG with about 20 programmers, and it turned out that it just doesn't scale well, period. Branching and tagging are fast, but day-to-day operations (update and commits) take forever, which isn't quite a good trade off.

    6. Re:how to learn git? by lcapitulino · · Score: 1

      You can try one of the GIT crash courses at: http://git.or.cz/course/index.html

      But if you're a CVS/SVN user, I'd start by trying to understand the conceptual difference between centralized and distributed development models. Linus has a detailed explanation here: http://marc.info/?l=git&m=113072612805233&w=2

    7. Re:how to learn git? by autophile · · Score: 1

      If it was hard to write, it should be hard to... use?

      --Rob

      --
      Towards the Singularity.
    8. Re:how to learn git? by obender · · Score: 1
      How do you get all the files out for a specific revision? I can only get the files out individually one by one but I would like to fetch them all with just one command.
      This is what I tried:

      ~/tmp/git_test$ vi a.txt
      ~/tmp/git_test$ vi b.txt
      ~/tmp/git_test$ git init-db
      defaulting to local storage area
      ~/tmp/git_test$ git add .
      ~/tmp/git_test$ git commit -a -m 'initial commit'
      Committing initial tree 478a3e8d61fa949e2e3b51e1ea935d3e9ba42f52
      ~/tmp/gi t_test$ vi b.txt
      ~/tmp/git_test$ git commit -a -m 'second commit'
      ~/tmp/git_test$ vi a.txt
      ~/tmp/git_test$ git commit -a -m 'third commit'
      ~/tmp/git_test$ rm a.txt b.txt
      ~/tmp/git_test$ git checkout master
      ~/tmp/git_test$ ls
      ~/tmp/git_test$ git checkout master .
      git-checkout-index: is not in the cache
      ~/tmp/git_test$ git log
      ~/tmp/git_test$ git checkout master 063e821eabea161248c7bb111977949f038caaa1
      git-chec kout-index: 063e821eabea161248c7bb111977949f038caaa1 is not in the cache
      ~/tmp/git_test$ git checkout 063e821eabea161248c7bb111977949f038caaa1
      ~/tmp/gi t_test$ ls
    9. Re:how to learn git? by bfields · · Score: 1

      anybody have a good tutorial? (not the crappy one which comes with it

      I think the current tutorial is pretty good, actually. (But I'm biased--I wrote most of it. Suggestions welcomed....)

      See also the user manual for a more thorough treatment.

    10. Re:how to learn git? by zojas · · Score: 1
      the command you're looking for is

      git-reset --hard HEAD

    11. Re:how to learn git? by zojas · · Score: 1

      you're right, the tutorial on kernel.org is pretty good! It really reflects the git porcelain-level interface improving so much from where it used to be. I feel it's actually useable now without needing something like cogito as a crutch!

    12. Re:how to learn git? by Anonymous Coward · · Score: 0
      I don't quite understand your question. Do you want "git checkout -f master"? You just deleted a.txt and b.txt; until you say otherwise, git thinks that those deletions are uncommitted edits that it won't stomp on without asking. "checkout -f" says "discard working directory edits".

      Your instance of
      ~/tmp/git_test$ git checkout master .
      git-checkout-index: is not in the cache

      is actually a missing feature that got added in version 1.5, so it'll do what you hopefully expect. It used to only accept file names; not it accepts general file patterns.

      Just to be clear, "git checkout <version>" sets the current HEAD to and updates all the checked-out files. It will preserve local edits if possible, or fail if not possible. Basically, it does a three-way merge between the old HEAD version, your current working directory, and the new version. If there are edit conflicts, the checkout will fail.

      "git checkout <version> <path(s)>" will overwrite the <path(s)> with their contents as of the given <version>. It will not affect HEAD in any way.

      So "git checkout <version>" and "git checkout <version> ." will both fill the current directory tree with the contents of <version>, but that's only a coincidence. The other side effects are very different.

    13. Re:how to learn git? by Anonymous Coward · · Score: 0

      http://git.or.cz/index.html has all you need to get started with Git. It is suggested you start with this tutorial http://www.kernel.org/pub/software/scm/git/docs/tu torial.html ; it goes over init, add, commit, branching, merging and I don't remember what else, but it is all you need to get your work done.

  7. Re:git by Anonymous Coward · · Score: 5, Interesting

    He is only human. Just because he is the head of a huge software project doesn't make him infallible.

    Just look at the whole 'RMS vs Linus' thing.

    His opinions should carry some weight, especially since he should know more than anyone what the limitations of SCM software is when it comes to larger projects like the linux kernel. But a lot of SCM comes down to the way a project is managed, the preferences of the people involved, and how they deal with their project. I doubt there is a blanket solution... a 'one SCM package to rule them all' so to speak.

    Especially in the software industry you can always find someone just as good as yourself that strongly holds opinions that are the polar opposite of yours.

  8. Godwin's law by rustalot42684 · · Score: 4, Funny

    We ALL know that the people who use CVS and SVN are version control Nazis!

    1. Re:Godwin's law by Anonymous Coward · · Score: 3, Funny

      Revisionists?

    2. Re:Godwin's law by aled · · Score: 1

      Revisionists?


      Versionists?

      Or Centralism vs. Distributionism?
      --

      "I think this line is mostly filler"
  9. Well, speaking from my own experience... by RootsLINUX · · Score: 4, Interesting

    I've used CVS, SVN, and GIT in serious projects and I can say I far prefer SVN to GIT, and GIT to CVS. GIT was incredibly confusing to use, and it may just have been the way the repository was administered was poor, but I never knew if I was synched with everyone else's checkouts and the command names made no sense. Its been over a year so I don't remember the details of GIT, but I remember having to do a lot of things "twice". Need to do a checkout? Two commands. Need to commit? Two commands. It was a bitch to use and I am glad I'm done with it. SVN, on the other hand, I felt very comfortable with from the start and most important of all, I trusted SVN to do what I wanted it to and to keep me from screwing up. In a year of using it, it has failed to lose my trust.

    I'm not trying to say SVN is better than GIT. The best repository depends on the type of project and type of development. But defaming SVN in favor of GIT is not, I believe, a valid statement. Especially when (I'm pretty certain) many, many more projects use SVN rather than choosing to use GIT.

    --
    Hero of Allacrost, a FOSS RPG for *NIX/*BSD/OS X/Win
    1. Re:Well, speaking from my own experience... by Black+Acid · · Score: 5, Informative

      Its been over a year so I don't remember the details of GIT, but I remember having to do a lot of things "twice". Need to do a checkout? Two commands. Need to commit? Two commands. It was a bitch to use and I am glad I'm done with it. SVN, on the other hand, I felt very comfortable with from the start

      Most distributed version control systems exhibit this phenomena, because by "checking out" you are actually doing two operations: pulling the latest changes from someone else, and updating your workspace. For example, in Monotone you would type (I imagine git operates similarly):

      mtn pull
      mtn update


      The first command retrieves revisions from the server, and the second updates your workspace with those new changes. To "commit" a change, in a distributed version control system you first 1) commit the change to your local repository and then 2) push it to someone else:

      mtn commit
      mtn push


      It is often useful to keep these operations separate. For example, you can commit without pushing. Make a bunch of changes, commit each one separately, and only push once you're satisfied with the result. Other developers can still see each change you made individually, but only after you've pushed, so they won't be stuck with an incomplete in-progress version of the tree.

      Similarly, by being able to update without pulling, you can revert to any revision you would like without contacting the network. Likewise, since commit does not require network access, it is no extra effort to work offline. Once an Internet connection is available, you can synchronize your repositories, but in the meantime you can make any change you want - even with no network connection.

      The main disadvantage of a decentralized version control system is that it requires workflow changes to get the most out of it. If you are only familiar with centralized version control systems, it will take some time getting used to. But I'm glad to say, an increasing number of projects are making the change to distributed version control, among them, Mozilla and Pidgin. They are not using Git (but Mercurial and Monotone, respectively) but they're all distributed. Git is being used by the Beryl project, among others. Subversion has momentum in FOSS because it is familiar for those used to centralized version control (everyone knows CVS), and SourceForge provides free SVN hosting. Once a free open source hosting site provides hosting for a distributed version control system, I expect more low-resource open source projects to use it.
    2. Re:Well, speaking from my own experience... by 644bd346996 · · Score: 1

      I've not used GIT much myself, but I did watch the video. Linus pointed out that the UI has only recently stopped sucking. Since it's been over a year, it is definitely time for another look.

  10. Well, Linus is an ass, what's new. by suv4x4 · · Score: 3, Insightful

    No one said that if you're famous and contributed something incredible to the world (such as Linux) you can't speak out of your ass most of the time, just because you enjoy how everybody listen and try to decipher if they should care about it, or just laugh and pass by.

    I use SVN if a medium sized team and see SVN used extensively in all kinds of projects around the globe with great success. I personally love the workflow of SVN.

    The only thing that they need to work is merging of branches, and incidentally I've talked to the developers, they're quite aware of this flaw of SVN and working on it. We'll see new versions that can track changes in each branch and even attempt automated merges with good success.

    I know a guy who has the same personality like Linus. The guy is very smart, he single-handedly is coding an application which is very popular in its area (won't mention it since that's internal stuff). He keeps bitching all the time: about customer feature request, about random products and how sucky they are, how people can't see that. And he could also change his opinion overnight for no apparent reason and go in the other extreme. But he's a friggin' programming genius and what he does is great, despite is takes a lot of effort to deal with him.

    Well, probably those two go together: being an amazing creator, and being an amazing ass with huge ego. Who knows.

    1. Re:Well, Linus is an ass, what's new. by True+Vox · · Score: 5, Funny

      Well, probably those two go together: being an amazing creator, and being an amazing ass with huge ego. Who knows.

      I disagree entirely that those two traits must go together. I'm living proof that you're wrong, in fact. I don't have a creative bone in my body.

      --
      "Gratuitous complexity is akin to chaos" - True Vox
    2. Re:Well, Linus is an ass, what's new. by Gactaculon · · Score: 1

      Linus communicates very much like an academic. With him, it's not personal - it's Ideas. He says what he really thinks and makes big assertions and if he's wrong, others will push back. I think this is an excellent way to conduct debate if all parties are mature enough to handle it, but it's also critical that one is always open to recognizing a superior argument. I can't say whether Linus has that critical trait, but unfortunately many lesser academics sadly lack it as well, so I think the comparison stands regardless.

    3. Re:Well, Linus is an ass, what's new. by Johnno74 · · Score: 3, Funny

      wow, you aren't just an amzing ass with a huge ego, you are modest about it too! :D

    4. Re:Well, Linus is an ass, what's new. by Anonymous Coward · · Score: 1, Insightful

      Academics usually have some expertise in their respective area, Linus does not. He is not a genius when it comes to OS design or development. The Linux OS broke no new ground; it was an imtation of existing Unix systems. Linus digs in his heals and refuses to cede ground even when he is wrong (or rants about untested design).

    5. Re:Well, Linus is an ass, what's new. by Anonymous Coward · · Score: 3, Funny
      Academics usually have some expertise in their respective area, Linus does not. He is not a genius when it comes to OS design or development. The Linux OS broke no new ground; it was an imtation of existing Unix systems. Linus digs in his heals and refuses to cede ground even when he is wrong (or rants about untested design).

      Is that you Prof. Tanenbaum?

    6. Re:Well, Linus is an ass, what's new. by ASBands · · Score: 1

      I'm a bastard. I have absolutely no clue why people can ever think otherwise. Yet they do. People think I'm a nice guy, and the fact is that I'm a scheming, conniving bastard who doesn't care for any hurt feelings or lost hours of work, if it just results in what I consider to be a better system. And I'm not just saying that. I'm really not a very nice person. I can say "I don't care" with a straight face, and really mean it.
      --
      My UID is a prime number. Yeah, I planned that.
    7. Re:Well, Linus is an ass, what's new. by SnowZero · · Score: 2, Interesting

      I use SVN if a medium sized team and see SVN used extensively in all kinds of projects around the globe with great success. I personally love the workflow of SVN.
      If all you've ever known is centralized version control, you don't know what you are missing. Having used *both* centralized and decentralized version control on the same projects, I can say that decentralized wins hands down, but you have to work with it for a while to truly appreciate it.

      The only thing that they need to work is merging of branches, and incidentally I've talked to the developers, they're quite aware of this flaw of SVN and working on it. We'll see new versions that can track changes in each branch and even attempt automated merges with good success.
      If you take branching and merging to its logical limit, you end up with distributed version control. It's far easier to design with that in mind from the beginning. SVN has probably sunk more developer hours than darcs, mercurial, and monotone combined, which is a shame when you consider those three later projects have superior branching, merging, and disconnected operation than SVN. Git, while powerful, is highly adapted to the Linux kernel workflow, so many might not find it easy to use. However, there are several good distributed VCS options to choose from now, and there is a good option available for just about any project.
    8. Re:Well, Linus is an ass, what's new. by SnowZero · · Score: 1

      The Linux OS broke no new ground; Linux broke a great deal of ground in terms of open source project development model. Many FSF projects still do not run with the same level of transparency and free code exchange as the Linux kernel. Interestingly, and not coincidentally, Linus' main point about VCS is how they can be used to enhance that development model rather than break it.

    9. Re:Well, Linus is an ass, what's new. by suv4x4 · · Score: 1

      If all you've ever known is centralized version control, you don't know what you are missing. Having used *both* centralized and decentralized version control on the same projects, I can say that decentralized wins hands down, but you have to work with it for a while to truly appreciate it.

      No, wait: I recognize the benefits if his system. The problem is, his system has benefits with open source projects at most. Since he said he believes OSS is the only good model to make a piece of software, can I blame him for saying SVN sucks? Nope.

      But here's what: in OSS, he can afford to "reject 99% of the branches out there". This is because he "believe[s] most of you guys are incompetent idiots".

      In a small team, we don't throw 99% of our work out or keep a consistent base of developers who we believe are incompetent idiots. Instead, we work together, frequently communicate, have fast turnaround times, and often work with files that can't be actually merged together (such as design related files, AI, PSD etc.).

      I clearly see the benefits of his system, but it shines for his own needs, SVN shines for the needs of the majority of small teams out there, and for more linear/classic style organized projects.

      It also works for the majority of small OSS projects, which can't afford to be spread in hundreds of branches at a time, as features are clearly defined, priorities as well, so there's no need to spread what we do in hundreds of branches by definition.

      Also one of the benefits he mentions, basically everyone has his own branch and can diff locally with the other revisions, until someone "pulls" from him. That's handy but in its very basic core is the same as SVN cache. I can diff locally, save files as much as I want, revert files to the locally stored revisions etc., before I commit to the central repo. Not quite all the features he has, but as long as it does the job, that's all that takes.

    10. Re:Well, Linus is an ass, what's new. by SnowZero · · Score: 3, Insightful

      No, wait: I recognize the benefits if his system. The problem is, his system has benefits with open source projects at most. I have several projects which have not been released as open source, and I can state for a fact there are benefits.

      But here's what: in OSS, he can afford to "reject 99% of the branches out there". This is because he "believe[s] most of you guys are incompetent idiots". What you may not realize is that those branches still feed code to his tree, through delegation. Linus trusts 10 people, and they in turn trust 10 people, and in a few levels you can accept code from all those trees through an established web of trust.

      In a small team, we don't throw 99% of our work out or keep a consistent base of developers who we believe are incompetent idiots. Can you give brand-new interns commit access to your core system? probably not. Can I code review a patch from a brand-new intern and accept it if it meets the quality standards for our core system? Yes I can. A distributed VCS can take advantage of possibly less skilled developers because its about trusting the well-defined patch, not the person. While such a workflow is not always precluded by centralized systems, distributed VCS's make this workflow very easy and natural.

      Instead, we work together, frequently communicate, have fast turnaround times, and often work with files that can't be actually merged together (such as design related files, AI, PSD etc.). Centralization of the VCS itself has little or no effect on this. How would a distributed VCS inhibit your team from acting this way?

      I clearly see the benefits of his system, but it shines for his own needs, SVN shines for the needs of the majority of small teams out there, and for more linear/classic style organized projects. Like I said, you just don't know what you are missing. If a developer has ever checked in something to mainline that wasn't done, just so another person could use it, you've just found a case where you really wanted a distributed VCS. If you've ever wanted to commit code on an airplane, so that you could easily revert if a new idea didn't work, you really wanted a distributed VCS. If you've ever wished you could test two patches together before merging them into the mainline, to avoid affecting other developers if the integrated version was buggy, you really wanted a distributed VCS. I've done all those things, and our project has had only 2-5 developers. At the same time, if you want to, you can use a distributed VCS in a centralized and linear manner; The only difference is that your team now has the choice of workflow models.

      It also works for the majority of small OSS projects, which can't afford to be spread in hundreds of branches at a time, as features are clearly defined, priorities as well, so there's no need to spread what we do in hundreds of branches by definition. You aren't being forced to have hundreds of branches, just like SVN doesn't force you to make hundreds of checkouts. This is a red herring.

      Also one of the benefits he mentions, basically everyone has his own branch and can diff locally with the other revisions, until someone "pulls" from him. That's handy but in its very basic core is the same as SVN cache. I can diff locally, save files as much as I want, revert files to the locally stored revisions etc., before I commit to the central repo. Not quite all the features he has, but as long as it does the job, that's all that takes. How about commit so that you have a logical development history, separating changes into logical parts, such as a new feature and a random bugfix you found along the way that you'd like to also push to stable -- all while disconnected. Like you say, if you don't run into that, it's not a problem. However, when I used CVS, I didn't realize all the times where I would have used a distributed VCS feature, because at the time I didn't think in those terms. Ignorance was bliss. Now that I use a distributed VCS, I use it even for single developer projects; The extra features do come in handy, and they aren't a hindrance.
    11. Re:Well, Linus is an ass, what's new. by zCyl · · Score: 0

      Academics usually have some expertise in their respective area, Linus does not.

      Uhm. I would argue that creating Linux and being the central force behind it for well over a decade exceeds the size and scope of most PhD projects in that area. That level of experience certainly qualifies as expertise.
    12. Re:Well, Linus is an ass, what's new. by suv4x4 · · Score: 2, Interesting

      Centralization of the VCS itself has little or no effect on this. How would a distributed VCS inhibit your team from acting this way?

      I said we work with plenty of binary files that can't be merged, hence they have to be locked. You can't lock a file if there's no central place where you lock it.

      Again, SVN and GIT are just two different approaches that work for different type of projects. The projects I work on are 30% design, and as such I want to give my designers webdav access or at least visual GUI that's very easy to understand and use. I'm not making kernels, and I don't work alone.

      So propositions like "you need to spend lots of time working with it to appreciate" is a deal breaker for me.

      Even if GIT has superior features, features isn't the only thing I'm interested it, but the overall package.

    13. Re:Well, Linus is an ass, what's new. by putaro · · Score: 1

      There's a big difference between saying "This idea is stupid" and "Those people are stupid". I watched the talk (it's actually the first time I've ever bothered to watch Linus talk) and he came across from start to finish as a big ass. All he talked about was how wonderful his system was but there was no real explanation of how it was so wonderful. All I got was that he was able to merge things faster which seems like a good thing for him but not how it did it or what the tradeoffs might be. He trashed the Subversion system and people repeatedly for no good reason. He trashed centralized version control for things like not being able to create tags which aren't numbers which makes no sense - that certainly isn't a result of things being centralized. CVS has weird rules on tag names but SVN has none that I'm aware of.

      Just because you say up front that you're an ass and kind of laugh at yourself about it doesn't make it acceptable to be an ass.

    14. Re:Well, Linus is an ass, what's new. by Anonymous Coward · · Score: 0

      There are a lot of humble geniouses to be found in the history.

      Usually outside the realm of software engineering, though.

      As Alan Kay said, in our business, arroganse is measured in nano-Djikstras (nD). Seems Linus is in the area of a billion or two nD.

      And let it be known: most of the good code is Linux is written by others.

    15. Re:Well, Linus is an ass, what's new. by chthon · · Score: 1

      There are two main reasons why I currently will stay with SVN.

      1. I need a feature and bug request tracking system. trac supports Subversion immediately.
      2. I see the benefits of a decentralised model, wanting to do work on my project on several systems. However, SVK does not support externals. Externals are a must for modular design and development.

      Having already a whole lot of work in my SVN repository and trac, an alternative system should be able to import SVN data and work with trac, or there should be another tracking system which can import my trac database.

    16. Re:Well, Linus is an ass, what's new. by Anonymous Coward · · Score: 0

      Linus communicates very much like an academic. With him, it's not personal - it's Ideas.

      Is that why he calls people "ugly and stupid"?
    17. Re:Well, Linus is an ass, what's new. by mindstrm · · Score: 1

      One could surmise that in open source, globally distributed kernel development, branching and merging are two of the most important features a source-control system can provide.

      And regarding bitching.. ALL Developers bitch.. Linus just gets press, becuase, well, he's Linus.

    18. Re:Well, Linus is an ass, what's new. by gbjbaanb · · Score: 1

      He keeps bitching all the time: about customer feature request

      are we talking about the SVN development team? Especially when people ask for tags...

    19. Re:Well, Linus is an ass, what's new. by smallpaul · · Score: 1

      However, there are several good distributed VCS options to choose from now, and there is a good option available for just about any project.

      Distributed SCMs have the classic problem of emergent technologies. SVN has a whole ecosystem of integrations built up around it. Distributed SCMs might make some things easier but if they don't integrate with issue tracking system, code review systems and IDEs then they will make other things harder. In addition, the SCM plugin APIs of IDEs etc. will tend to be biased towards the centralized model. The diversity of Distributed SCMs compounds this problem.
    20. Re:Well, Linus is an ass, what's new. by True+Vox · · Score: 1

      See, I've always felt that it's my modesty that makes me great.

      --
      "Gratuitous complexity is akin to chaos" - True Vox
    21. Re:Well, Linus is an ass, what's new. by nuzak · · Score: 1

      > He trashed the Subversion system and people repeatedly for no good reason.

      And this is why I dislike the man personally. He makes his opinions personal. If you ever worked on a microkernel, Linus thinks you commit academic fraud for grant money. I've never heard him moderate or apologize.

      I'm sure he's great to his wife and kids, I'm an optimist that way. But frankly he's about as bad as Theo when it comes to his sense of developer politics.

      --
      Done with slashdot, done with nerds, getting a life.
    22. Re:Well, Linus is an ass, what's new. by nuzak · · Score: 1

      > I need a feature and bug request tracking system. trac supports Subversion immediately.

      You can export a repository into svn with tailor, and there are patches to trac that support darcs and other SCM systems extremely well. Trac has been promising to support more systems generically for some time now, but it seems they're a bit slow on delivering. At least they ditched clearsilver.

      --
      Done with slashdot, done with nerds, getting a life.
    23. Re:Well, Linus is an ass, what's new. by Anonymous Coward · · Score: 0

      Trac 0.10 supports other version control systems; I use it with Mercurial (and have used it with Darcs) with no problems. You just need to install a plugin for the version control system and edit trac.ini.

    24. Re:Well, Linus is an ass, what's new. by LizardKing · · Score: 1

      Linus communicates very much like an academic. With him, it's not personal - it's Ideas.

      Quite the opposite actually - he has often described developers of other operating systems as idiots. In particular, he has often described Solaris as being crap, even though he admits to knowing little about its architecture. Whi is quite ironic when you consider that Linux is evolving to resemble Solaris from an architectural point of view!

  11. There's a difference between GIT and SVN by paroneayea · · Score: 4, Informative

    ... And that is that CVS/SVN are centralized, while GIT is distributed, like GNU Arch.

    There are appropriate uses to both of these, and in kernel development I think it makes sense to have distributed development. However, in smaller projects, which really *need* a very specific direction (example, Wesnoth, I would think would not have gotten where it is today if there were so many branches where people were all making their own art).

    Linus is enough of a famed leader that he's going to be listened to, and thus kind of pulls the community around him as a central source of development. That's not necessarily going to happen everywhere.

    --
    http://mediagoblin.org/
    1. Re:There's a difference between GIT and SVN by koreth · · Score: 2, Informative

      Nothing about git prevents you from establishing a repository and telling all your developers that it's the central integration point for your project. It supports svn-style centralized development just fine. (In fact, it even interoperates bidirectionally with existing svn repositories, though you lose some of the advanced features.) The difference is it doesn't force you into a centralized model.

    2. Re:There's a difference between GIT and SVN by Anonymous Coward · · Score: 2, Insightful

      > However, in smaller projects, which really *need* a very specific direction

      Even bigger projects need specific directions, witness GCC. I am sorry but everyone who thinks distrubuted SCM are a good thing. I am going to say they are a bad thing for free software because they allow people to develop stuff in private. Yes this already happens. This is why for an example GCC's rules for branches are that they are free for all and they are used a lot.

      Take a look at http://gcc.gnu.org/svn.html and see how many branches there are, though most of them are inactive but some are very active (and getting ready to be merged into the trunk). I guess distrubuted SCM allows for people not to develop in public any more which I say is a bad thing. I have been working on a branch of GCC and who ever says merging is hard is wrong (I am dealing with an IR change which touches all front-ends and 50% of the middle-end, the tree level and I am able to merge at least once a week and the merge sometimes fix some of the regressions I was trying to fix before :)).

      I don't know about you but having a policy of branches are free for all is a good thing and it causes what distrubuted SCM will cause which is more development and a "private" tree (though it is public but the branch is yours to deal with).

      I guess people don't see the bad side of distrubuted SCM that much because they don't deal with projects like GCC. The kernel has the same issue and I think Linus does not get the idea that public development is a good thing.

      I could have developed all of my branch (pointer_plus) in a private local tree but I would not get some of the testing I have been getting from people I did not expect to be testing my branch. Plus I don't have all the resources that other people are putting into the testing that they do.

      Thanks,
      Andrew Pinski

    3. Re:There's a difference between GIT and SVN by SnowZero · · Score: 3, Funny

      Even bigger projects need specific directions, witness GCC. I am sorry but everyone who thinks distrubuted SCM are a good thing. I am going to say they are a bad thing for free software because they allow people to develop stuff in private. Yes this already happens. This is why for an example GCC's rules for branches are that they are free for all and they are used a lot. I'm sorry but this appears to be self-contradictory. If branches are good, distributed VCS's are good, because they are based around branches as a core concept. You seem to be under the mistaken belief that a branch in a distributed VCS must be private. In fact, you can push or publish any branch if you'd like to do so, and pull and merge any branch anyone makes public. All you need is for the development website to support multiple trees (this happens on kernel.org with multiple Git trees).

      Take a look at http://gcc.gnu.org/svn.html and see how many branches there are, though most of them are inactive but some are very active (and getting ready to be merged into the trunk). I guess distrubuted SCM allows for people not to develop in public any more which I say is a bad thing. I have been working on a branch of GCC and who ever says merging is hard is wrong (I am dealing with an IR change which touches all front-ends and 50% of the middle-end, the tree level and I am able to merge at least once a week and the merge sometimes fix some of the regressions I was trying to fix before :)). For the most part you seem to be arguing for a distributed VCS, which makes branching easier. If you think CVS/SVN merging is easy, then these other systems would appear to be trivial. A not insignificant thing is that you can merge changesets from any branch, not just the trunk, and everything still works when you merge with the trunk later (think branch B which needs a feature from branch A, before A is ready to merge). No VCS forces people to work in public, and in fact distributed VCS are much better about encouraging people to check in early and often, rather than waiting until a feature is completely done (a common CVS model), or checking in too early when a feature has not been fully tested.

      I don't know about you but having a policy of branches are free for all is a good thing and it causes what distrubuted SCM will cause which is more development and a "private" tree (though it is public but the branch is yours to deal with). Nothing forces anyone to hide their trees. You could require all developers to keep up-to-date trees on a centralized machine if it really matters.

      I guess people don't see the bad side of distrubuted SCM that much because they don't deal with projects like GCC. The kernel has the same issue and I think Linus does not get the idea that public development is a good thing. I don't see how you draw that conclusion, or what evidence your conclusion is based on. Why do you feel this way?

      I could have developed all of my branch (pointer_plus) in a private local tree but I would not get some of the testing I have been getting from people I did not expect to be testing my branch. Plus I don't have all the resources that other people are putting into the testing that they do. Nothing stops you from keeping the same workflow with a distributed VCS. Just put your tree somewhere where people can pull from it. You can even have people continuously following and aggregating/merging branches, allowing you to know about integration issues ahead of time.
    4. Re:There's a difference between GIT and SVN by turbidostato · · Score: 1

      "I'm sorry but this appears to be self-contradictory. If branches are good, distributed VCS's are good, because they are based around branches as a core concept. You seem to be under the mistaken belief that a branch in a distributed VCS must be private. In fact, you can push or publish any branch"

      I think one emerging problem with distributed VCS is that branches *can* go hidden. On a centralized SCM tool, branches are *always* public by default (to those with access to the central repo, of course), so you can always have a look at what other people is going on with. That have the potential to emerge stronger sinergies within your team, since other people can peek at any branch potentially at any time (even when the creator asumes it is still not ready for public scrutiny). On the other hand, private branches (thus decentralized development) has its own advantages too: like assuming (kind of Linus' "sense of humor") that 98% of all work will be rubish, so it's better done wherever it doesn't disturb "real" work.

      So at the very end, different scenarios, different solutions. Not a great discover.

    5. Re:There's a difference between GIT and SVN by Anonymous Coward · · Score: 0

      I am going to say they are a bad thing for free software because they allow people to develop stuff in private.

      The right (and hence ability) to make private changes is an essential part of free software.
    6. Re:There's a difference between GIT and SVN by grumbel · · Score: 2, Interesting

      ### However, in smaller projects, which really *need* a very specific direction

      Yes, but that isn't an argument why you should cripple your SCM. I absolutely agree that for a lot of projects there is little to no use for distributed repositories. However just because you don't need distributed repositories doesn't mean you can't take advantage of them, i.e. you get proper offline support and you get also a proper way to distribute changesets, which SVN still doesn't support (i.e. no "svn diff/patch" that actually track all your changes like file moves and such, not just a small subset).

      That said, I don't really like the idea of forcing everybody to download the whole repository like you do with git. A lot of users just want to compile checkout and update it every now and then, but never work on it. Git seems to be a little to much a developer-only tool. That the documentation actively discourage gits central repository support also raises some doubts on how well it would work. However, I do think that in the end distributed repositories are they way to go, not because you need them, but because its simply the better design.

    7. Re:There's a difference between GIT and SVN by Anonymous Coward · · Score: 0

      The other thing is that everyone has the disk space to keep around the whole distributed branch. I know I don't. Also it is hard to get the company I work for opening ports to the outside so making a distributed extern visiable path is hard for me.

    8. Re:There's a difference between GIT and SVN by Zetta+Matrix · · Score: 1

      I think you bring up some good points, although I strongly disagree with you just like this reponse.

      The primary fault in your logic is confusing tools with methodologies and policies.

      The methodology of having multiple branches that merge in mainline changes as they go along and that have strict quality requirements before merging into mainline is just a good practice. However there is some disagreement about whether CVS, SVN, or a distributed SCM is the best tool for that job. I am of the opinion that distributed is better because I think DSCM features map onto this problem better. Apparently you do not, or are confusing methodology/policy with tools.

      Finally, people can always develop things in private. Yes, a DSCM makes that easier, but it's not impossible without it. Having that private work happen is necessary so that developers can inject some basic quality control (such as not breaking the build). The argument against private work quickly gets into a "I want to be big brother" argument which is not a very good one.

      The GCC methodologies and policies are good ones, but please don't confuse them with some intrinsic quality of CVS/SVN/centralized SCM. I suggest that most of those methodologies could be done better in a DSCM like Mercurial than they could today in SVN.

      I hope I made clear which parts of this post were argument and which were opinion.

  12. Re:Lemme check my last home appraisal... by starwed · · Score: 4, Funny

    You missed the point of the thread; to discuss git, not to be one.

  13. Re:Linus knows it. by statusbar · · Score: 1, Informative

    I personally like how git has excellent Microsoft Windows support... It makes it a great tool for use with Altium PCB design software because of the handy svn->git compatibility tools that git has for windows. It allows all people in the enterprise to use git, regardless of the platform that they use.

    Most definitely bettern than SVN, right? ;-)

    --jeffk++

    --
    ipv6 is my vpn
  14. Cvs is already done right by fnj · · Score: 1, Funny

    "Subversion used to say, 'CVS done right.' With that slogan there is nowhere you can go. There is no way to do CVS right."

    Cvs is already done right. These would-be improvements are pointless.
    1. Re:Cvs is already done right by drgonzo59 · · Score: 1

      Yes, that's your opinion and then there are hundreds of project and thousands of developers who disagree. If CVS was so good, there would not be an army of people behind SVN.

    2. Re:Cvs is already done right by abigor · · Score: 1

      I can only assume you've never actually worked with it on a large project.

    3. Re:Cvs is already done right by Anonymous Coward · · Score: 0

      How do you version directories in CVS?

    4. Re:Cvs is already done right by MichaelSmith · · Score: 1

      Cvs is already done right. These would-be improvements are pointless.

      I manage a 7 GB CVS repository serving 200 developers and you are totally wrong. If I could get buy-in from the 10 or 20 relevant stakeholders I would change to mercurial in a pinch.

    5. Re:Cvs is already done right by fnj · · Score: 1

      I can only assume you've never actually worked with it on a large project.

      You would be wrong. Any other assumptions based on nothing?
    6. Re:Cvs is already done right by jgrahn · · Score: 1

      If CVS was so good, there would not be an army of people behind SVN.
      If CVS was so good, there would not be an army of people using MS SourceSafe ..?

      OK, CVS sucks. But it sucks in well-defined and well-known ways. That's enough for me and many others, for the things we do.

    7. Re:Cvs is already done right by Carewolf · · Score: 1

      You don't do directories in CVS..
      Now go write your entire project in ONE file. That way you get it all, even atomic commits

    8. Re:Cvs is already done right by Antique+Geekmeister · · Score: 1

      You, sir, have apparently been successfully trolled.

      But what makes CVS and now SVN usable are decent interfaces: viewvc for repository browsing and tarball downloading, TortoiseCVS and TortoiseSVN for use by people who are not command line gurus. I'll be delighted to see git have similarly good tools, especially for Linux or UNIX work.

      In fact, if someone knows a good GUI for Subversion on Linux or UNIX, and knows of good ones for git or mercurial, I'd be delighted to point my acquaintances who deal with projects using them to those interfaces.

    9. Re:Cvs is already done right by drgonzo59 · · Score: 1
      You, sir, have apparently cannot read.

      I was not talking about GIT at all and I was not talking about interfaces. I was saying that CVS is deficient and SVN is usually a better choice. Both SVN and CVS have good interfaces. Please learn to read _and_ understand what is written in the post before replying. Otherwise, it is hard to take your opinion seriously.

    10. Re:Cvs is already done right by PeterBrett · · Score: 1

      I manage a 7 GB CVS repository serving 200 developers and you are totally wrong. If I could get buy-in from the 10 or 20 relevant stakeholders I would change to mercurial in a pinch.

      The GPL Electronic Design tools project will be moving to git soon. Unfortunately, not all of the developers are on platforms supported by git (and others just don't like git), so there is going to be a git-cvsserver set up to support them. This is generally considered to be a good way to do gradual migration.

    11. Re:Cvs is already done right by abigor · · Score: 1

      It wasn't based on nothing. Anyone who says cvs doesn't need to be replaced hasn't worked with it extensively. So I think you are lying, or in management, or both.

    12. Re:Cvs is already done right by Antique+Geekmeister · · Score: 1

      Sir, being trolled does not mean your comments are unreasonable.

      It means that someone has successfully gotten you to waste time or become upset by pretending to be serious about something outrageous. The more they can make you froth and become upset, especially if this can then be used to discredit your other statements to outside witnesses of the discussion, the more effective the troll has been.

      Or am I being successfully trolled? It can become difficult to keep track in such a wide-open forum.

  15. Re:how to learn git? - answer, don't! by Omnifarious · · Score: 4, Interesting

    My favorite, of course, is Mercurial. My main draw is that I had been interested in distributed SCMs for years, but had never found one that made any sense to me whatsoever. I was on the hunt again and stumbled on Mercurial, and I've been hooked ever since.

    Of the various distributed SCMs, Mercurial is the easiest to use one I've found. And it's pretty fast, though not quite as fast as git (though I have some ideas on how to fix that). And since it's written in Python with only a very small C component it runs on many platforms.

  16. Re:git by Anonymous Coward · · Score: 0, Funny

    your mom is infallible

  17. Re:git by Anonymous Coward · · Score: 0, Funny

    Shut the fuck up you scmbag git.

  18. git is pretty cool, take a closer look by Anonymous Coward · · Score: 5, Interesting

    I took a look at git a while ago and was completely underwhelmed. The UI was so bad it was useless, and it didn't "seem" to do anything that Darcs didn't do. (I used to love Darcs because of the automatic patch dependency computations).

    Now that all the "next generation" SCM tools have matured somewhat, I took a look at all of them again. I had to stop using Darcs because of the "patch of death" problem, which basically is this: after using Darcs on a project with long-lived parallel branches, the repository may eventually enter a wedged state you can't get out of, due to exponentially complex patch dependencies. Oops.

    At this point I had an idea of what an SCM should do, how it should work, what the "mental model" should be. I want to create changesets, add them to branches, combine multiple branches (and keep track of renames and so forth between branches), re-order changesets, collapse multiple changesets into one, discard old branches, etc.

    Of course, CVS and close cousin Subversion are SO UTTERLY USELESS I didn't even consider them. Seriously, Subversion is like gold-plated shit. Looks nice but it's still shit. Reading people say stuff like "Subversion is awesome" makes me wince. How can something that doesn't have "real" branches, and doesn't have tags OF ANY KIND, be useful for anything? How do you keep track of multiple merges between branches? Answer: you don't. Or you keep track of revision numbers using svnmerge and pray it all works. Even the Subversion docs sortof hand-wave this away. I.e., they hand-wave away one of the FUNDAMENTAL ASPECTS of source code management: branching and merging. It's like hearing people talk about OO databases. They mean well but they just don't comprehend the generality of the underlying problem.

    That's why I was so excited about Darcs: the author "gets it". Unfortunately the implementation is flawed.

    I checked out a few more (Mercurial, bzr) but finally settled on git because it let me do all the things I needed to do, and it did them FAST. Once I figured out the underlying model I was pretty impressed. Git can be viewed at many levels: very low-level plumbing, or UI-level, or in between. The UI and documentation is still pretty shitty, but thankfully they are working on improving it and are moving away from the idea of having interchangeable UIs. Just focus on improving "core git".

    One great thing about git is that so much of it is just files in the .git dir and shell scripts that combine very simple low-level functions. For instance, you can create a branch just by saving the SHA1 ID of the tip into a file in .git. You can branch off any point in the history this way, including branches you've deleted in the past (git keeps all the old commit objects by default, even ones that aren't pointed to by any branch or tag.. this is very simple and understandable model, like reference-counting in a way).

    The other great thing about git is how easy it is to sling changes around and reorder them and combine them. For instance let's say you add a file to your project as commit "A". Then you add some code that uses this file as commit "B". Then you fix a bug in the file as commit "C". So you have A-B-C. Now you'd like to combine A and C into a single patch A', and put B on top of it, like this: A'-B. In git, this is super-easy. I can think of two ways to do it off the top of my head.

    I was checking into a CVS project the other day (for a client) and wanted to do this. Then I realized, you can't move things around in CVS like this *twitch*. So nowdays I do everything in git and only after the changes are beautiful and self-contained and well-commented do I check them into CVS one at a time.

    Okay so they point is, check out git (or honestly? Checkout out ANYTHING that isn't CVS or svn). Even if you think Linus is an asshole (which he is) or you don't like the git UI (it's not that bad now), check it out anyway.

    And if you don't use SCM at all? You suck. Start learning. It's a best practice that you can't live without, once you start.

    1. Re:git is pretty cool, take a closer look by sqlrob · · Score: 1

      WTF are you talking about? It's trivial to branch and merge in SVN.

    2. Re:git is pretty cool, take a closer look by Anonymous Coward · · Score: 0

      Making a copy is not the same as making a branch.

      Generating a diff and applying it to a working dir is not the same as performing a merge.

      And for fucks sake Subversion, creating a copy in a directory called "tags" is not the same as making an actual tag.

    3. Re:git is pretty cool, take a closer look by 644bd346996 · · Score: 1

      You sound like a lisp coder, talking about all the features the competition doesn't have, but you can't live without. I don't mean that in a bad way, but the similarity is very striking. I guess right now GIT is the Lisp of SCMs. I hope it can catch on better, though.

    4. Re:git is pretty cool, take a closer look by thePsychologist · · Score: 1

      Of course, CVS and close cousin Subversion are SO UTTERLY USELESS I didn't even consider them. Seriously, Subversion is like gold-plated shit. Looks nice but it's still shit. Reading people say stuff like "Subversion is awesome" makes me wince. How can something that doesn't have "real" branches, and doesn't have tags OF ANY KIND, be useful for anything?
      Subversion is good for smaller projects, at least. Subversion can also be used outside of source code maintenance, for instance, for maintaining a database of data files for a scientific project.
      --
      "What lies behind us, and what lies before us are tiny matters compared to what lies within us." Ralph Waldo Emerson
    5. Re:git is pretty cool, take a closer look by Senjutsu · · Score: 4, Informative

      Making a copy is not the same as making a branch. ... And for fucks sake Subversion, creating a copy in a directory called "tags" is not the same as making an actual tag. The way subversion does "copies" (there is no duplication of shared data between copied directories), there is no difference in practice.
    6. Re:git is pretty cool, take a closer look by CaptnMArk · · Score: 1

      IMO, git could really the mercurial UI.

      It would then be a no-brainer for switching CVS(->SVN)->git.
      Right now, I'm leaning more towards mercurial.

    7. Re:git is pretty cool, take a closer look by CaptnMArk · · Score: 1

      s/could really the/would be better with the/

    8. Re:git is pretty cool, take a closer look by lorcha · · Score: 2, Interesting

      subversion lacks multiple merge points.

      Making a single branch and then a single merge is trivial in subversion. Doing anything more complicated is a nightmare.

      --
      "Avoid employing unlucky people - throw half of the pile of CVs in the bin without reading them." -- David Brent
    9. Re:git is pretty cool, take a closer look by neutralstone · · Score: 1

      WTF are you talking about? It's trivial to branch and merge in SVN.

      It's true that branching is trivial with SVN. And merging can be done. But if you think *merging* is "trivial" with SVN, then you really are using a special definition of the word "trivial".

      If you want to know what really trivial merging is, then try it with Mercurial, Bitkeeper (download the trial version), and/or git. The command-line interface is pretty much the same in each case.

      Only a masochist could (1) start out as an SVN user, (2) try merging with bk, hg or git and then (3) *choose* to go back to using SVN.
    10. Re:git is pretty cool, take a closer look by SnowZero · · Score: 1

      Btw, if you can publish your repo, the darcs developers might be interested in looking at it. Although there are still some unresolved computational issues with the patch model, darcs has improved greatly in the past year for many formerly common bad cases.

      Just so people are clear, if you merge with any frequency, darcs should work just fine. I've worked with branches active up to a year, but I generally keep pulling into those long-lived branches from mainline so that there isn't too much drift. The most common cause of "exponential" repositories is trying to check-in and version machine-generated files, which is generally a bad thing to do anyway. If things do get really bad on some setup, you always have the option of rebasing a branch as a patch against the mainline (i.e. make a new branch, copy your working copy, and check that in). We've done that once when someone had a corrupted repository due to overzealous rsyncing (running "darcs check" after moving/copying repos is a good idea.)

      Finally, a long term solution *is* being worked on in the form of a better patch model which avoids the exponential worst-case. As it stands now, darcs works great for small-to-medium sized projects, and for everything else there is Mercurial and Git.

    11. Re:git is pretty cool, take a closer look by SnowZero · · Score: 1

      Distributed SCMs are extremely addictive. Once you've gotten used to one, there really is no going back. Once I had used BitKeeper, CVS became unusable from a feature standpoint. Thankfully now there are many FOSS options for distributed SCMs. Until you have worked with one, you don't even know what you are missing.

    12. Re:git is pretty cool, take a closer look by Anonymous Coward · · Score: 0

      What's your subversion tag or branch issue? Admittedly, the built-in "tagging" is a sad joke, but it's easy to set write permissions to the tags to be "commit a new tag only" with the svnperms pre-commit hooks.

    13. Re:git is pretty cool, take a closer look by Anonymous Coward · · Score: 0

      Subversion is good for smaller projects, at least. Subversion can also be used outside of source code maintenance, for instance, for maintaining a database of data files for a scientific project.

      So can RCS - without requiring a web server and all the other bullshit. Subversion is outstanding, a truly impressive cluster-fuck of poor design.

    14. Re:git is pretty cool, take a closer look by vidarh · · Score: 2, Informative
      Reading people say stuff like "Subversion is awesome" makes me wince. How can something that doesn't have "real" branches, and doesn't have tags OF ANY KIND, be useful for anything?



      The concept of tags is a crutch for systems where a versioned copy operation is too expensive. Since subversion keeps track of history across copies, and also doesn't copy the file content unless there's changes, there's simply no reason to have a separate concept of tags in subversion. The reason systems like CVS has tags is exactly because branching is expensive in CVS.

      And a copy IS a "real" branch. To quote you further:

      "One great thing about git is that so much of it is just files in the .git dir and shell scripts that combine very simple low-level functions. For instance, you can create a branch just by saving the SHA1 ID of the tip into a file in .git. You can branch off any point in the history this way, including branches you've deleted in the past (git keeps all the old commit objects by default, even ones that aren't pointed to by any branch or tag.. this is very simple and understandable model, like reference-counting in a way)."

      Gee... Wonder how Subversion does it? Oh, that's right, it keeps a single revision number that uniquely define each commit, and a branch is just a copy of a subset of data at a specific revision, and you can branch of any point in the history by saving the revision number, including branches you've deleted in the past.

      As for your "A-B-C" example, I just don't see the point - it's just a type of situation that's never come up for me. However, if you absolutely want to do it in subversion, you certainly can. It's not particularly hard either - all you have to do is selectively copy or merge the changes you want into your working directory.

      I'm not saying Subversion is perfect, but don't blame Subversion for things that reflect your poor understanding of it rather than actual limitations.

    15. Re:git is pretty cool, take a closer look by YoungHack · · Score: 1

      I took a look at git a while ago and was completely underwhelmed. The UI was so bad it was useless, and it didn't "seem" to do anything that Darcs didn't do. (I used to love Darcs because of the automatic patch dependency computations).


      I used to love darcs too until my repositories started to grow too large for it and I was waiting 5 minutes for commits. When I switched to git, it was so fast I had to check that it did something (I thought I had done a broken install at first). That's fast. None of my repositories have outgrown git.
    16. Re:git is pretty cool, take a closer look by Anonymous Coward · · Score: 0

      Is there a way in subversion to just give a friendly name to a change number? It'll be a cheap way to implement tagging in subversion.

      I hate the fact that a "tag" in subversion is just a copy because it means that I need to checkout an entirely new workspace that points to the "tag's" location in the subversion namespace.

      I would prefer to just do a svn update -r @foobar-1_0_milestone_1 or something vs having to checkout foobar/tag/1_0_milestone else where.

    17. Re:git is pretty cool, take a closer look by 955301 · · Score: 1

      Okay, what is the point of your post? Anyone who is interested in scm and has settled on subversion to get around issues they were having with CVS is going to throw up the defense at your remarks and ignore your suggestion, and you leave the rest of your potential audience up to the crap-shoot that your remarks are so loaded with bullshit (Linus is an asshole [which he is]) that they'll ignore it as well.

      Look, subversion branches and tags are a punt on the entire idea of branching and merging, granted, but that's only if you are still doing that crap by hand! Depending on your branch policy, it might have been implemented a few different ways. If the team's goal was to resolve their issues with cvs, why would they impose a particular branching process on top of that? Just for kicks? Are you suggesting they can do improve subversion later or something? Where's your patch?

      You need to write a few scripts that do shit like remember the revision from whence you came which are specific to your software process and then reach back into your painfully shallow humility pail and pull out whatever you have and give some credit to these people for at least moving people away from cvs.

      --
      You are checking your backups, aren't you?
    18. Re:git is pretty cool, take a closer look by 1110110001 · · Score: 2, Informative

      You mean you're looking for a good book, so you can find the switch command.

    19. Re:git is pretty cool, take a closer look by 1110110001 · · Score: 1

      That should be fixed in 1.5: http://subversion.tigris.org/merge-tracking/

    20. Re:git is pretty cool, take a closer look by 955301 · · Score: 1

      basically the guy is complaining because he can't "svn tag" and "svn branch" and get his hand held the entire way. Nevermind that any project ought to have more enforcement of branching and tagging above just the simple commands.

      For all the rhetoric, he doesn't seem capable of writing a few scripts to wrap subversion. And I looked at git - it's barely a project at all - how can they expect it to be the mainstream with doc no bigger than a man page?

      --
      You are checking your backups, aren't you?
    21. Re:git is pretty cool, take a closer look by 955301 · · Score: 1

      people don't stay on svn for the merging, they stay for the tools - EVERYTHING supports svn and git is barely a blip on the ide/gui/docs screen.

      If some git fan got off their keester and actually wrote the things necessary for mainstream adoption you might have a legit flame war on your hands - until then your just waxing on about everyone adopting a nitch tool.

      --
      You are checking your backups, aren't you?
    22. Re:git is pretty cool, take a closer look by 955301 · · Score: 1

      Found it. Here is the update to merging - they even ask for input, so hop to it pal!

      http://subversion.tigris.org/merge-tracking/

      --
      You are checking your backups, aren't you?
    23. Re:git is pretty cool, take a closer look by Cyberax · · Score: 1

      Branching and tagging in SVN are OK, it has O(1) lightweight copy support. Personally, I like current SVN's tag/branching system.

      SVN currently doesn't have merge tracking system and atomic renames. SVN developers know about it and it should be fixed RealSoon(TM) now.

    24. Re:git is pretty cool, take a closer look by minniger · · Score: 1

      Thank you!

      If you can live with a centralized repository then the only major thing lacking in SVN is merge tracking. Super-parent poster is cranked up on something strong. SVN's tagging and branching model is a GOOD thing. Makes it al simple to understand and therefore something people will actually use. Dev branches are a perfectly good way to avoid contention over mainline changes.

      Also it's stupid to compare a centralized SCM and a distributed one and then complain that the centralized one doesn't solve the same problems the distributed one does (sorry linus).

      For 90+% of the projects out there SVN is perfectly fine. Another 5% could use perforce... some vanishingly small percent really need something fully distributed like GIT. IF you need it then it's worth the extra complexity. If not then you're just wasting time.

    25. Re:git is pretty cool, take a closer look by neutralstone · · Score: 1

      Only a masochist could (1) start out as an SVN user, (2) try merging with bk, hg or git and then (3) *choose* to go back to using SVN.

      people don't stay on svn for the merging
      That much is obvious. (:

      they stay for the tools - EVERYTHING supports svn and git is barely a blip on the ide/gui/docs screen.
      Ok.

      If some git fan got off their keester and actually wrote the things necessary for mainstream adoption
      Ok, so only a masochist *or* someone uncomfortable with command line & scripting environments would choose to go back to SVN *for now*.

      I don't mean to start a flame war; I just stated a fact that applies to the kinds of programmers who feel comfortable writing their own scripts to support their development processes.

      until then your just waxing on about everyone adopting a nitch tool.
      Actually, no. I don't care whether people adopt git en masse. I was merely correcting someone who wrote, "It's trivial to branch and merge in SVN."

      Not only is that utterly false, but, if we restrict our discussion to uses from command line environments, we can plainly see that git, Mercurial and Bitkeeper are all demonstrably faster (by a few orders of magnitude!) and far, far easier to use than SVN. If you first try them and later think I'm wrong on this point, I would love to hear why you think so.

      As for integration in everyone's favorite IDE (and potential subsequent mainstream adoption), I personally don't care. But it'll probably happen in the next few years in response to user demand. And for people who really need IDE integration, I certainly recommend *against* using git or Mercurial for now.
    26. Re:git is pretty cool, take a closer look by Omnifarious · · Score: 0

      I don't really have a problem with how Subversion handles tags, though, IMHO, it does obscure to some degree exactly which revision you just tagged. But I do have a major problem with three things about Subversion... It is horribly slow for what it does. It is ridiculously complex for what it does. It's over-engineered in the extreme. And it handles branching and merging extremely poorly. So poorly that I couldn't in good conscience seriously recommend performing those operations except under very controlled conditions.

      The only good thing about it is that it has a model that's very familiar to people who are used to CVS.

    27. Re:git is pretty cool, take a closer look by Anonymous Coward · · Score: 0

      I like subversion.

      I don't think you get it.

    28. Re:git is pretty cool, take a closer look by nickallen · · Score: 1

      Uhh yes there is. Subversion tagging mechanism does not do the main thing that a tagging mechanism should do: that is define a meaningful name to a revision in the repository which can be used in any command in place of that revision. If subversion really supported tagging I should be able to do this:

      svn co -r tag:VERSION_1_1 svn://host/project

      or this:

      svn diff -r tag:VERSION_1_0 tag:VERSION_1_1

    29. Re:git is pretty cool, take a closer look by Dr_Barnowl · · Score: 1

      Each tag gets a URL. If you know the URL, you can use that. How is this not the same as having a meaningful name? Since when was a URL not a name? Incidentally, a tagging mechanism doesn't define the name - the user does. It's his responsibility to make it meaningful.

      svn co svn:/host/project/tags/VERSION_1_1

      svn diff svn:/host/project/tags/VERSION_1_0 svn:/host/project/tags/VERSION_1_1

      It might be a bit more long winded, but it's the same feature. And it does it very elegantly by using the same feature used for any other copy operation, which consumes no space other than a copy of the filesystem node.

    30. Re:git is pretty cool, take a closer look by cortana · · Score: 1

      The other great thing about git is how easy it is to sling changes around and reorder them and combine them. For instance let's say you add a file to your project as commit "A". Then you add some code that uses this file as commit "B". Then you fix a bug in the file as commit "C". So you have A-B-C. Now you'd like to combine A and C into a single patch A', and put B on top of it, like this: A'-B. In git, this is super-easy. I can think of two ways to do it off the top of my head. Mind sharing that? I'm new to git and don't see the easy way to do it.
    31. Re:git is pretty cool, take a closer look by grumbel · · Score: 1

      ### So can RCS - without requiring a web server and all the other bullshit.

      Subversion never required a webserver. It works perfectly fine with direct file access, access over ssh and all that stuff. Doing it via a webserver is just one of many possible ways to get access to a repository.

    32. Re:git is pretty cool, take a closer look by sl3xd · · Score: 1

      None of my repositories have outgrown git

      Been there, done that. Git currently has issues when you start running above a 2 GB boundary. It's less severe on a 64-bit system than a 32-bit system. On a 64-bit system, you have to be careful to keep your pack files below 2 GB in size, else things blow up horribly (which means you can't use 'git repack -a -d')

      I've submitted patches to address the issue, but like quite a few projects, git's maintainers have a pretty full plate, so some things can take a while...

      Suffice it to say: even with a repository as large as mine (~4.5 GB worth of packfiles, which is quite a bit larger unpacked), speed is not a problem for git.

      --
      -- Sometimes you have to turn the lights off in order to see.
    33. Re:git is pretty cool, take a closer look by nickallen · · Score: 1

      Each tag gets a URL. If you know the URL, you can use that. How is this not the same as having a meaningful name? Since when was a URL not a name?

      Yes a URL is a name but it is a name used in a different context as far as the user is concerned. A URL specifies the branch to operate on and a revision identifier specifies the revision within that branch. They are 2 different namespaces and they should be kept that way for any kind of sane use. It does not make sense to commit to a tag so a tag should not be a URL. It is also easier for the user if tags are real tags instead of branches as this is how one thinks of them. Users are used to passing revision ids to commands and they just have to learn that a tag name can be substituted for a revision id wherever a revision id is needed or asked for.

    34. Re:git is pretty cool, take a closer look by 955301 · · Score: 1

      I think the last line of your post was their focus (granted, a very myoptic and costly mistake perhaps). But there is a python script svnmerge.py available to enforce more proper branching and merging and the project seems to at least have a track for "fixing" its lack of sufficient merging.

      I look at subversion as two things - an improvement on CVS that only takes a few steps but definitely in the right direction and a tranisitional step from corporate environments where some other horrific tool is used (Clearcase & Accurev for example). Perhaps one day in the future git will have the momentum behind subversion right now, or subversion with v3.0 themselves into a tool reliable for the big and small codebase alike.

      --
      You are checking your backups, aren't you?
  19. Re:GOOG stock split next week by Anonymous Coward · · Score: 0

    Now who's the Git ? Why would you say this if it were true ? Oh, already bought too high and want it to go higher ? I'll see it when I believe it .

  20. Re:Lemme check my last home appraisal... by feronti · · Score: 3, Insightful

    The thing is, you've got the wrong solution to the problem. Rather than not allowing branches, you need to control when and how often they're made, and how long they're allowed to survive. Your fixing a policy problem with technology, which never works well. If the branches are kept under control, you don't have the last-second merge problem. Merges should be happening constantly throughout the process so everyone stays in sync. If someone isn't committing their work at least once a day, that's when they get a stern talking to from the lead developer. Because if a developer needs to coordinate with another developer to change one line of code, then you've wasted two people's time instead of one.

  21. Re:git by Anonymous Coward · · Score: 1, Informative

    Linus's position as Linus kernel project leader may make him knowledgable about what makes a good source control system for Linux's distributed development model, but if he thinks that one size fits all for source control then he's definitely talking out of his ass and out of his area of expertise.

  22. Re:Lemme check my last home appraisal... by Anonymous Coward · · Score: 3, Funny

    Yep. $1.2 million. Well if that's you're measure of correctness then you'll have to admit Linus is right and you're wrong because his house is worth more than that.
  23. Re:Linus knows it. by CastrTroy · · Score: 4, Informative

    You might want to check out TortoiseSVN if you're using svn on windows. It makes version control really easy, and you don't even have to touch the command line.

    --

    Anthropic principle: We see the universe the way it is because if it were different we would not be here to see it.
  24. Distributed version control gaining ground in FOSS by Black+Acid · · Score: 5, Informative

    The ultimate reason why Linus dislikes SVN, CVS, etc. is that it is centralized. Everyone checks out source from a central server and commits their changes to the same centralized area. This has problems: your workspace is not versioned. By this I mean, you cannot track local changes to your workspace without committing them to the central server.

    A common pattern in development is to try one approach, test it, tweak it, and possibly try another approach if the first did not work out, perhaps reverting to a prior approach. With decentralized version control, you can commit your changes to a local repository and work from there. All the locally changes you make are versioned, and be committed, checked out, examined all without contacting a central repository. This is ideal, because you often want to try various options to find the one that works best, before pushing your changes to the rest of the world. In centralized version control, you can use a branch for this purpose, but often branches in these systems are difficult to either create, merge, or maintain, so they are rarely used. The end result is that with centralized version control, developers version their workspace in their head. DVCS systems remove the mental burden.

    Fortunately, FOSS developers are realizing the usefulness of DVCS and major projects are converting to some form of DVCS. Mozilla is switching to Mercurial. The Pidgin project, which just released 2.0.1, is using Monotone. (Linus favorably mentioned both of these distributed version control systems in his Git talk, as they are both are distributed).

    Once you accept that DVCS is better than the centralized model (which may not be true for some situations), only a few (but growing number of) version control systems are viable. This is currently a hot area in open source development, with software such as GNU Arch, Monotone, Mercurial, Git, Darcs, Bazaar, and more paving the way. Many open source DVCS's are still in development and not ready for general usage. I can't speak for Mercurial, but Monotone doesn't have the greatest performance, instead preferring integrity over speed. This led Linus to write git, since speed is very crucial for a large project like the Linux kernel.

    Whatever the actual program (git, Mercuial, or Monotone), more and more open source developers are realizing the advantages that distributed version control can offer. I encourage all developers that haven't used any DVCS to try it -- once you do, you won't go back.

  25. Re:Lemme check my last home appraisal... by Anonymous Coward · · Score: 0

    Yep. $1.2 million. Paid for by getting billed out at $400 an hour. I could probably afford more house, but I like my vacations - a train ride with my family in first class sleepers to Glacier Park, maybe take the kids to Discovery Cove for a week or so. The one I'm planning now is going to be about 3-4 weeks bouncing around the South Pacific, NZ, and Oz.

    Wow. Basing your self image on money much?

    Yeah, I don't know what I'm talking about.

    Yes, you don't know what you're talking about. I'm basing this on your idea, which is laughable, not your undoubtedly extensive credentials, spotless academic record, and huge cock.

    If you're unable to merge, your version control system is reduced to an automated system for collecting and backing up code. For mature, large projects that need constant updates but also have large features coming, sacrificing the ability to keep developers from thinking having to worry about things that are completely irrelevant to their work—in other words, the ability to merge in the features later—means giving up a significant advantage.

    If the developers write sufficiently modular code, and are aware of each other's projects even if they're not constantly looking through each other's code, eventually merging should be far easier than keeping every piece of developing code fully compatible with every other piece at every step.

    You sound like a troll, so I'm sorry to have been unable to resist the bait.
  26. Re:Lemme check my last home appraisal... by koreth · · Score: 1

    Or are you too fucking lazy and stupid to do that? Because if you work for me, that will be one of the things I expect from you. [...] You sound like one of those who needs to be shown the door.

    No need, I'm sure anyone with half a brain and an ounce of self-respect would have run screaming from such a fabulous work environment long before you had the chance to demonstrate your blindingly self-evident superiority to them.

  27. Re:git by Anonymous Coward · · Score: 0

    Linus often talks out of his ass about many things out of his area of expertise, including operating systems. \

  28. ~$ mv CommitAccess MergePrivileges by Excelcia · · Score: 4, Insightful

    Linus talks about his distributed model, how everyone has a branch, and how this avoids politics associated with who gets commit access. He claims (and I admit I've seen this happen in some) that many projects have quite the internal politicking on who has CVS commit access. But then he claims that Git's special sauce eliminates these internal politics. Ok, I was intrigued, so I listened on.

    Essentially, he explains, the secret with Git is that everyone has commit access on their own branch - they do whatever they want. He says that the way it works is that someone does something cool with their own branch, then they start hollering to say "Hey, I have a good branch, merge mine" and it will get merged. Politics over.

    Ok, so now I'm scratching my head. How is this a fundamentally different paradigm? In CVS, basically anyone can check out the whole tree and make any changes the like. They can then say, see, my changes are good and ask for them to get committed or ask for commit access themself. In Git, this commit access bottleneck is just moved from the commit stage to the merge stage. You make your changes, commit them to your separate and unique branch, and then ask someone with to merge it, or give you the ability to merge it in to mainstream. How exactly does this eliminate the politics? You are still going to have some people with "the power" and some people without. In any project where you have people who are going to fight about who gets commit access, you'll just have a fight about who has the ability to merge into mainstream.

    So, ok, distributed is nice (though for some projects central may be preferred) but I don't see how this magic system bypasses politics. In fact, I can potentially see more internal politics over this method. I can see factions gathering to support this or that branch, arguing about which is better, fighting about which one gets merged in. I can see the potential for branches going longer between merges, and more changes happening at once, making it harder to track problems. I don't claim these scenarios are more likely, but I do claim that this changing from a commit access to a merge access paradigm is just renaming the problem.

    1. Re:~$ mv CommitAccess MergePrivileges by starseeker · · Score: 2, Interesting

      I tend to agree - what becomes the "official" code (i.e. what would go into a release tarball) is a social problem without technical solution. A coordinated release requires AGREEMENT, however that agreement is arrived at.

      What GIT does differently, as I understand it, is it makes flipping around branches much easier than before. CVS and SVN have the concept of a central server, so if two developers are trying to resolve differences in their branches before either can get their changes into the main tree they have to work outside svn/cvs to communicate those changes to each other. With GIT, both developers can set up their individual archives and pull from each other, without ever involving the main tree. In other words, the benefits of version control and branch control are available between any two individuals with repositories, without relying on the main branch.

      GIT also makes it trivially easy for everyone to switch away from the "official" branch to someone else's as the standard, but that begs the question of resolving differences WITHIN the project.

      GIT is a neat tool, and I think it has a lot of potential. But like every other technological solution, it does not and cannot resolve fundamentally social issues.

      --
      "I object to doing things that computers can do." -- Olin Shivers, lispers.org
    2. Re:~$ mv CommitAccess MergePrivileges by c · · Score: 2, Informative

      > In any project where you have people who are going to fight about who gets commit
      > access, you'll just have a fight about who has the ability to merge into mainstream.

      I really wish he would have addressed that question a little more directly, too.

      I think the problem is that you're thinking about it from a classic centralized development model. I have some trouble getting my head around it, too.

      Basically, from a truly distributed SCM perspective, there is no "mainstream". All branches are equal. Obviously this isn't quite the case with Linux, but bear with me here.

      If you've got good code, what happens is that your changes get merged into more branches than bad code. The more popular your code, the more stuff gets built on top of it. If your code is good enough, eventually it gets into the "mainstream" simply by being an unavoidable dependency for other code.

      Quality (or quantity) of code rules.

      Politics are only an issue, then, if someone tries to bypass this process by skipping their changes right into the most "popular" branches. But this means they have to convince the owners of those branches to merge it. And while it's really hard to ignore changes from someone with commit access in a centralized SCM, ignoring someone in a distributed SCM is just a killfile away.

      c.

      --
      Log in or piss off.
    3. Re:~$ mv CommitAccess MergePrivileges by Endymion · · Score: 2, Interesting

      It is moving the problems to a neighboring problem-space, but that allows for a good benefit: getting everybody to check trivial changes in.

      (at least, that's what I got from his talk)

      I know I've seen it before - the problem where commits are restricted by management (for good reason), and people cannot commit their current work. I've seen this destroy some work before, as it means everybody is basically always running with a 1-2 week window of changes that are not checked in to the "safe, backed up". Ouch.

      If you defer the problem a bit, so everybody can commit changes all the time, that helps keep everybody on "good practices". Also, he mentioned a workgroup situation: if I commit changes to a local repository, I can give the other people in the repository easy, save access to it without having to mess with the main branch.

      One important change, though, is the direction of the conflict. CVS/etc uses a "push" model, where developers have to push their changes to the server. GIT (in theory) works as a "pull" model, where a manger could pull the changes the developers have made. I kindof like that idea, as it means conflicts are in the arena of the manager, in theory freeing the developers from some of the mess.

      at least, that's as I understand it...

      --
      Ce n'est pas une signature automatique.
    4. Re:~$ mv CommitAccess MergePrivileges by Chandon+Seldon · · Score: 1

      GIT is a neat tool, and I think it has a lot of potential. But like every other technological solution, it does not and cannot resolve fundamentally social issues.

      On the other hand, it does allow for the web of trust / tree of merges solution that is impossible with a centralized SCM tool.

      --
      -- The act of censorship is always worse than whatever is being censored. Always.
    5. Re:~$ mv CommitAccess MergePrivileges by norton_I · · Score: 1

      I think the way it is supposed to work (no idea how well it does for the linux kernel) is that anybody can "join" the development tree, publish "their" kernel version, including whichever patches they want, without interfereing with each other. Everybody has merge privileges on their own tree, and nobody has merge privileges on someone else's. The only reason Linus is "special" is that when he says "this is version 2.6.22, no bloody -mm -ac or -aa" everybody else listens.

      Ideally, such a system would blur the distiction between a "forked" and "not forked" state. Typically, in OSS devlopment when two developers have unreconcilable differences in the direction they think a project should go, it forks. One or both parties creates a new project, a new CVS/SVN/whatever tree, and the two projects diverge. In the git model, they both stay in the same scm universe, and either party (or a third party) can pick any improvements from the other "team". Eventually, they might merge back into one project, without even having to decide whose VC tree to use.

      In theory, this could really cut down on a lot of political arguments. As I said, I haven't followed enough kernel development recently to see how well it works in practice.

    6. Re:~$ mv CommitAccess MergePrivileges by Error27 · · Score: 2, Informative

      There are a couple things.

      Everyone has a complete tree so everyone can push patches between themselves. Linus doesn't have to accept it into his own tree. That cuts down on the politics. Before everyone had they're own tar ball and push patches around but you lose history and it takes more work.

      The other thing is that it's easier to delegate political questions. Lets say Linus pulls networking patches without even looking at them. The networking maintainer gets to deal with all the political issues. This is how it worked before but it was all manual and you lose all the commit comments etc.

    7. Re:~$ mv CommitAccess MergePrivileges by iabervon · · Score: 5, Informative

      The advantage is that MergePrivileges can be fine-grained: there can be many answers for "merge into what?" There's a -mm tree, a -stable tree, a -linus tree, a -rt tree, and a lot of vendor and distro trees. Each of these has a different maintainer, and can have a different idea of what is acceptable. And only the maintainer can merge things into their tree, and they can decide based on a variety of features of the things they're considering. For example, Linus only merges from a few people directly: maintainers of various subsystems. And he doesn't even trust them completely; if the SD/MMC maintainer has a change which changes x86 architecture code in the tree Linus is asked to merge, he'll notice and ask what's up with that. And if there are changes that look too intrusive for the current point in the development cycle, he'll put it off until the next cycle, and ask for a tree with just fixes. And -linus isn't special, except that almost everybody trusts him implicitly and merges his stuff into their trees (the main exception being -stable, which is why a new 2.6.20.x kernel isn't derived from 2.6.21; and vendor and distro kernels are generally based on -stable of some sort, and only get new stuff from Linus when they go to a new series). Also, maintainers of subsystems know the people who work in their areas, and can apply the same sorts of rules: the guy from Intel who works on their network drivers can get e100 changes into the the -netdev tree, because the maintainer knows they know what they're doing for e100 changes. And Linus sees that the e100 changes are coming in through -netdev, and the network maintainer knows what policy to apply to the drivers around there, so they're fine, even if Linus has no clue who should be allowed to do what in e100.

      It's not that the politics go away. It's that the policy is no longer a binary "yes or no" decision, so the technical arrangement mirrors the social arrangement. This doesn't work with CommitAccess because people wouldn't commit the same change everywhere they should, and they couldn't be restricted to only making changes they're trusted to make (there are people who are trusted to correct spelling in comments in any file in the tree, and Linus can look through the total changes they send and verify that they only change spelling in comments).

    8. Re:~$ mv CommitAccess MergePrivileges by richlv · · Score: 1

      this has been the best explanation of what git really is for people who have no clue :)
      thanks.

      --
      Rich
    9. Re:~$ mv CommitAccess MergePrivileges by MooUK · · Score: 1

      That explained a lot of things from other posts that I didn't quite understand. However...

      Maybe I missed something - but if he's manually checking everything he merges, why couldn't he manually check anything he merged in CVS?

      (Honest question; I'm confused!)

    10. Re:~$ mv CommitAccess MergePrivileges by Anonymous Coward · · Score: 0

      >It's not that the politics go away. It's that the policy is no longer a binary "yes or no" decision, so the technical arrangement mirrors the social
      > arrangement. This doesn't work with CommitAccess because people wouldn't commit the same change everywhere they should, and they couldn't
      > be restricted to only making changes they're trusted to make (there are people who are trusted to correct spelling in comments in any file in the
      > tree, and Linus can look through the total changes they send and verify that they only change spelling in comments).

      Actually this shows that the politics are more complex with this model really because you have not one person needing to accept your code but multiple people. Lets look at what Linux developer model, it is basically Linus is the only real maintainer and then he semi delagates to other people some parts of the code but Linus still has master control. Distributed SCM works wonders for this model of maintainership but does not help in the case when there are more than one maintainer of the whole source.

      If you give almost under the sun SCM access then the reasoning about disttibuted SCM goes down hill. GCC is an example where everyone under the sun basically gets SVN access and very quickly without much poltics involved, in fact the policy (http://gcc.gnu.org/svnwrite.html) is mostly anyone with svn access can allow someone else to get svn access. Plus there are different levels of maintainerships, global write maintainer (god but there are multiple of these), localized maintainer (way too many different areas to list here) and write after approval. Also branch creating is a free for all. So the GCC model is about not control as much as it is about being open unlike the Linux model which is about control which is why normal SCM will work for the GCC model and the distributed model could actually hurt it because it means people will more likely keep stuff in private.

      Thanks,
      Andrew Pinski

    11. Re:~$ mv CommitAccess MergePrivileges by YoungHack · · Score: 1

      Ok, so now I'm scratching my head. How is this a fundamentally different paradigm? In CVS, basically anyone can check out the whole tree and make any changes the like.


      Consider this. I once patched several small bugs in a piece of free software that was important to me. I added a couple of other modest improvements as well, all over a period of several weeks. Because encryption was involved, and encryption is easy to get wrong, the author was careful to vet my work with a mathematician in the field before merging my changes.

      While I was waiting for my changes to be merged, I was also following the development of the software, which continued as usual.

      His project was maintained in CVS, and I was currently using CVS at the time. Since my changes had not been applied to his tree, I had two options: (1) checkout his tree and never commit my changes or (2) start my own separate repository and continually apply patches generated from a read-only checkout of his CVS.

      That was a pathetic experience, and I've never considered a non-distributed SCM system since. With git, this would have been a trivial exercise.
    12. Re:~$ mv CommitAccess MergePrivileges by mindstrm · · Score: 1

      Okay, so you check out your code, you make some changes... let's say the modification you want to make is going to take you a few weeks. You want some form of version control for your own work, right? But you can't have it without checking it all back in to your own local version control system.... cvs in this aspect is useless to you as you don't have commit.

      Do CVS / Subversion allow you to give people commit access to branches, but not the trunk?

    13. Re:~$ mv CommitAccess MergePrivileges by Anonymous Coward · · Score: 0

      The special sauce is that NOBODY has commit access. Making changes and sending a big patch is possible with CVS, but it's a pain, which is why people want commit access.

      Git can do two things, and they're so convenient that all development can be done this way:
      1) You can send a whole SERIES of changes (known as "dropping a patch-bomb in someone's mailbox") that, when applied, will re-create the development history exactly, or
      2) You can send a pointer to your personal git server and let the integrator pull from that (convenient when the patch-bombs reach the kiloton range)

      The point is that, using just e-mail gives you exactly the same power, and damn near the same convenience, as someone who can commit directly into the master repository. Git had to develop several extensions to the standard "diff -u" output to make this work, but it works now.

      Rather than a binary committer/non-committer status, the question is how hard the integrator looks at the patches before merging them. So there's a smooth path from "random schmo" to "trusted committer".

      This is also why the merge utilities print out a diffstat of the result - because Linus trusts some people to hack on some parts of the code, but wants to see if they're playing in areas he doesn't trust them as much.

      Again, they won't have an ACL saying "no", just more careful review.

    14. Re:~$ mv CommitAccess MergePrivileges by Anonymous Coward · · Score: 0

      It's because of a misunderstanding about "manually checking". With most of the merges, he just looks at the list of files being touched, and decides that he trusts that person with those files. Or to tell him if there's anything that needs special review.

      Just like the editor-in-chief of the New York times doesn't proofread the business section daily. That's the business editor's job, and the business editor will tell him if there's anything that requires higher-level approval.

      But a newly hired or promoted sub-editor will get more careful review, at least for a while. And Linus will look more closely into changes from less trusted people, and changes to core parts of the kernel that he has to stay on top of.

      And git has the tools to do this, smoothly and easily. CVS very much doesn't. For example, git can apply e-mailed patchbombs at the rate of several commits per second. This means that Linus can do several hundred in a minute without getting bored, so if there's a conflict, he's right there to fix it and not off getting coffee.

      If it were slower, he'd come back from his coffee, have to fix the problem and resume the patch, and then go and get another coffee. Waste of time.

      In the last month, there have been 3032 patches to the Linux kernel (git-rev-list --since="1 month ago" origin | wc). That's an average of 100 per day. The complete raison d'etre of git is to sustain that high development rate.

    15. Re:~$ mv CommitAccess MergePrivileges by MooUK · · Score: 1

      Ah, I see. Makes sense then.

    16. Re:~$ mv CommitAccess MergePrivileges by bfields · · Score: 1

      In CVS, basically anyone can check out the whole tree and make any changes the like. They can then say, see, my changes are good and ask for them to get committed or ask for commit access themself. In Git, this commit access bottleneck is just moved from the commit stage to the merge stage. You make your changes, commit them to your separate and unique branch, and then ask someone with to merge it, or give you the ability to merge it in to mainstream. How exactly does this eliminate the politics? You are still going to have some people with "the power" and some people without. In any project where you have people who are going to fight about who gets commit access, you'll just have a fight about who has the ability to merge into mainstream.

      With git there's no *technical* difference between "mainstream" and the rest--everybody has a complete copy of the project history, so it's trivial for someone else to take over the project. Of course, you still need to coordinate, and in many cases that means you still need to agree to designate one repository as more important than the others. But that's not a choice that's enforced by the technology. (OK, maybe it's not really enforced by CVS either, but with CVS, cloning a repository and switching everyone over to it is a fair amount of work. With git it's trivial--it's the normal way that git works, so there's nothing different to do.)

      In the situation where nobody wants to change mainstream, there's still an important distinction between multiple committers and multiple people who a maintainer pulls from. The latter situation gives much finer-grained control to maintainers--even when pulling from a long-established and trusted developer, if a maintainer happens to notice something wrong, they can drop it and say "hey, fix up X first, then I'll pull again". Or they can pull some work from someone once if they think it's good work, without having to give further commit access.

    17. Re:~$ mv CommitAccess MergePrivileges by bfields · · Score: 1

      So, ok, distributed is nice (though for some projects central may be preferred) but I don't see how this magic system bypasses politics.

      Well, I agree, to a point--you can never eliminate politics. But it does make the politics better, by focusing it on the actual technical content; the example you give is right on:

      In fact, I can potentially see more internal politics over this method. I can see factions gathering to support this or that branch, arguing about which is better, fighting about which one gets merged in.

      That's exactly what you *should* be arguing about--you're arguing not about whether a certain developer can be trusted, but about whether given content should be merged in. That kind of "politics" is necessary and important. And the fact that these factions are, as far as git is concerned, on an equal footing--anyone can choose to pull from one, the other, or both, and can do so without endorsing either faction or trusting them for future development--means that the decision comes down to which tree is better, not to which group should be in charge.

    18. Re:~$ mv CommitAccess MergePrivileges by Anonymous Coward · · Score: 0

      > Everyone has a complete tree so everyone can push patches between themselves.
      > Linus doesn't have to accept it into his own tree. That cuts down on the politics.
      > Before everyone had they're own tar ball and push patches around but you lose history and it takes more work.

      How does this cut down poltics? In fact it makes poltics worse. Because there is still one person to go through to get the trunk (the official tree). Again if you look at the problem Linus is solving, GIT is a good solution for him because he wants full control over the trunk and want other developers easier development time. But guess what, this is not how most (if not all) FOSS projects work, most have multiple people being the maintainer as the project has just become too big. And having branches on the centeralized server allows people to comit to their branch without much trouble and encourges people to use branches for major stuff. I rather have day to day work, done on the trunk and then major stuff done on a branch so other people, besides the person who wrote the code on the branch, work on the branch without asking and finding the address and having to get access to the other server. That is just too much work for something as simple as allowing them to commit their own patches.

      GIT solves Linus's issue because of the way Linux kernel maintainership is handled (which is much more poltics than even what happens for GCC). So I don't see why you think there are less poltics when dealing with GIT as there are more because you have to convence mutliple people up the chain to get it into the trunk while in others you convence one other person to approve it.

      Thanks,
      Andrew Pinski

    19. Re:~$ mv CommitAccess MergePrivileges by iabervon · · Score: 1

      The interpersonal politics aren't bad with Linux, because everybody knows who Linus trusts with what; it's in the MAINTAINERS file, which tells you who to send your changes to. If Linus wasn't going to accept practically any PCI change from Greg KH, his tree wouldn't list Greg KH as the PCI maintainer. So you just have to convince Greg KH to take your patch, and Linus will be pretty much certain to take it eventually, regardless of who you are.

      Actually, gcc seems to be doing things very similarly to how git tends to work. It's perfectly fine to have multiple people have access to a single tree, so you just give everybody with global write access to some shared official tree. Alternatively, this group of people can just routinely pull from each other, or there can be a script that pulls from all of them routinely. Likewise, this central mechanism can pull from localized maintainers when those changes fit the policy. Branch stuff is just as much of a free-for-all, but the project doesn't have to host it for everybody.

      I don't think git would actually be a major policy change for gcc; it would just mean that (a) ports can be hosted elsewhere (like having the avr port at avrfreaks, where all the avr people hang out); (b) developers can do stuff offline; (c) the branch namespace doesn't have to be flat and doesn't have to affect uninterested people; and (d) branches would work a lot better (git is highly tuned for branches, because everything is a little branch until it gets pulled into a bigger branch).

    20. Re:~$ mv CommitAccess MergePrivileges by Harik · · Score: 1

      You're mistaking a single person as gatekeeper of the 'official' source as the only model to operate DVCS, though. In fact, even the linux setup defies that. Linus maintains 'linus-brand' linux, but the -mm tree is extremely used, and lots of development goes through there for a shakeout before going to 'official'. So there's seperate gatekeepers.

      There's also the possibility of running the 'official' repository on a server that multiple release managers have access to.

      Really, DVCS can handle any situation as well as (or generally better) then CVCS can. Want every developer's stuff backed up? Have a central repo that pulls every developer repo as a branch, and back it up. His PC dies, he can just re-grab his branch from the repo. No merges required, and shared history is preserved. (This would require a push-pull mode in some network setups, such as the case of a telecommuting worker behind NAT - the central repo can't reach him directly for a pull)

  29. It depends on the project by ClosedSource · · Score: 4, Interesting

    If you have a project that has thousands of developers all of the world like Linux does, a SCM system that is focused on merging makes a lot of sense. Unfortunately, there is a tendency for some people to overdo merging on small projects when they don't really need to. If the application is designed in a modular fashion and developers are assigned specific modules, than merging is rarely needed. Of course, many control freaks don't like this approach because it makes it harder for them to "correct" other developer's code.

    1. Re:It depends on the project by smallpaul · · Score: 1

      If the application is designed in a modular fashion and developers are assigned specific modules, than merging is rarely needed. Of course, many control freaks don't like this approach because it makes it harder for them to "correct" other developer's code.

      Some call this "correction" of other people's code "code review" and "collaboration". If modules are fiefdoms then the project can be severely impacted when the lone developer of a module gets another job.

    2. Re:It depends on the project by ClosedSource · · Score: 1

      "Some call this "correction" of other people's code "code review" and "collaboration"."

      I don't see how making uncoordinated unilateral changes to other developer's code qualifies as a code review or collaboration. These latter activities are not enhanced by merging nor impeded by file locking. Control freaks don't like a real code review because they might have to defend their own work.

      "If modules are fiefdoms then the project can be severely impacted when the lone developer of a module gets another job."

      There's nothing to stop you from rotating responsibility if you fear somebody might leave. Again, you can achieve these goals without the chaos of uncoordinated development.

  30. Re:Linus knows it. by statusbar · · Score: 4, Informative

    I use SVN on windows, mac os x, linux (ubuntu, debian, fedora) as well as netbsd. TortoiseSVN works great on windows especially for the point and click style users who need to use SCM. SvnX works great on Mac OS X. Altium PCB designer works great with the svn command line tools and shows graphical diffs of our circuit boards. But for some reason, Tortoise SVN and svn.exe are unable to access a GIT repositiory.

    In addition, git works well for simple projects but not so well for projects that have many different related subprojects which share code.

      For instance, our SVN repository holds everything needed for an entire product, including embedded linux with busybox, initrd and custom software and libraries - as well as DSP source code for two different add on cards, the GUI for mac, windows, and linux, the docutils xml file for the various manuals, and manufacturing and test code.

    I'd love to use git once it attains the required maturity level so that I can do what I need with it.

    --jeffk++

    --
    ipv6 is my vpn
  31. Holy crap by catbutt · · Score: 1, Flamebait

    You are the biggest ass I've seen on slashdot. And I've seen a lot of asses on slashdot. But bragging about how much money you make and the vacations you take, as if somehow that means your opinion is correct....wow.

    Smart to post as a coward tho, gotta give you that.

  32. Re:Lemme check my last home appraisal... by Black+Acid · · Score: 4, Informative

    You hit the nail on the head. Distributed version control often comes with superior merging, making the process less painful and encouraging it to occur frequently. Monotone employs a 3-way merge, Codeville has an innovative merging algorithm, and some may even support 5-way merging ("left's immediate ancestor, left, merged, right, right's immediate ancestor") in the future.

    In my experience, nearly all merges occur automatically and cleanly. Only if two developers modified code in conflicting areas of the source code do you have to merge manually--and even then, only one person has to do it. It is much better to have merging operate automatically and transparently when possible, than to have to have two people manually coordinate each and every one of their changes beforehand.

  33. RCS by flyingfsck · · Score: 2, Funny

    So what you are saying is that RCS was done right and everything done since is wrong...

    --
    Excuse me, but please get off my Pennisetum Clandestinum, eh!
  34. Re:Lemme check my last home appraisal... by KyleCordes · · Score: 3, Insightful

    I wrote about Linus's talk a few weeks ago:

    http://kylecordes.com/2007/05/17/linux-git-distrib uted/

    Looking back at that, and at your comment, some things come to mind:

    * the tool Linus is pushing, greatly facilitates the idea of frequent, easy merges, and Linus mentions that a tool with great, fast merges, helps you merge early and often.

    * on the other hand, your comment is about "you need to control when and how often [branches] are made...", while a big point of distributed SC tools is the opposite of that control: these tools make the power of the tool fully available to all users. A "main" repository may (and probably should) have permissions/hooks set to enforce some policy about what happens to what branches. Individual users can always create local quasi-branches by simply not checking things in; with a tool like they can can create real (local) branches too, which can then be promoted to official status (i.e. on a blessed central repository) if needed.

  35. Flamewars done right by Anonymous Coward · · Score: 0

    "Cvs is already done right. These would-be improvements are pointless."

    Isn't it about time to have another Vim vs Emacs flame war?

    1. Re:Flamewars done right by maxwell+demon · · Score: 1

      Both are bloated monsters. EDLIN is all you should ever need!

      --
      The Tao of math: The numbers you can count are not the real numbers.
  36. Do teams actually do this? by ClosedSource · · Score: 2, Interesting

    You may be saying this in the context of large FOSS projects, but for most projects, not allowing all the team members to commit changes seems like a really bad idea. If you don't trust them, why are they on your team?

    Complaining about the occasional inefficiencies of file locking while forcing some developers to waste time waiting for permission to commit, seems really ironic to me.

  37. Re:Distributed version control gaining ground in F by cryptoluddite · · Score: 1

    There's one trick to getting performance from monotone, which is to flip a switch on your workspace to make it use timestamps (like SVN does) instead of always re-hashing every file to see if it's different. For small projects, the rehash is best since it is certain. With timestamps on unix if you make changes in 1 sec, for example copying a different version right after a update (which can happen btw) then version control will not check in your changes and they can be lost.

    Once you enable timestamps with monotone pretty much all operations are faster than subversion. Even reverting can be faster in practice because the server typically has the files in ram vs your workstation which has to seek all over the place to make copies. Depending on your setup of course.

    Monotone is not slow anymore, and it keeps a much tidier and smaller repository. So small that in just a little more space than SVN's spare copies of all HEAD files for the past revision you can have all revision on your workstation. Why anybody would use subversion is beyond me... Linus is right on this one.

  38. Simulating distributed SCM with SVN by CharAznable · · Score: 1

    Every developer has their own repository, which they can commit as branches into a repository of repositories :P

    --
    The perfect sig is a lot like silence, only louder
  39. Re:Distributed version control gaining ground in F by Anonymous Coward · · Score: 0

    By this I mean, you cannot track local changes to your workspace without committing them to the central server.

    You're kidding, right?

    $ svn diff A.txt
        will compare your local version of A.txt to the last committed version of A.txt in the
        depository.

    Surely you don't have to do commit to do the diff.
  40. it'll never catch on by sohp · · Score: 5, Insightful

    Distributed version control the way git does it (conceptually, not necessarily the implementation) is the best idea in SCM since concurrent development and optimistic merge conflict resolution on check-in.

    Notice how, even years after better ideas superceded the lock-modify-unlock paradigm, many tools and shops still use exclusive-lock SCM.

    It could be quite a while before you see anything like the way git does SCM in use in the majority of programming shops.

    1. Re:it'll never catch on by MosesJones · · Score: 1

      And one of the reasons is that most commercial projects just don't have the "tinkering" problem that GIT aims to solve and they also don't have the "multiple people one file" problem either. This is because in a commercial project there tend to be a limited number of shared files (and these will be religiously guarded) and people are delivering to requirements.

      GIT works for Linus, but that doesn't mean that the distributed paradigm makes sense for everyone.

      --
      An Eye for an Eye will make the whole world blind - Gandhi
    2. Re:it'll never catch on by sohp · · Score: 1

      Yes, that's exactly it. Continuing to develop software with techniques and practices that made sense decades ago requires only the tools developed back then. Perhaps this style of development and the mindset that perpetuates it are factors in why the failure rate for software development projects remains high despite tremendous advances in the technology -- and the practices not adopted.

  41. VSS--SVN by traveyes · · Score: 1

    We used VSS for a long time but switched to SVN after reading numerous accounts that that VSS would eventually croak, and because we needed multiple developers working on the same source. After all the developers (~16 very active users, 20+ projects) were over the learning curve of SVN, there's not one that would go back to VSS. I can honestly say there is nothing I know of that we need that SVN doesn't do for us. We use TortioseSVN for the Windows guys, and the server-side guys (Linux/Unix) use command-line SVN. We have no need to branch local copies. We very rarely have to manually resolve conflicts. I fail to see what GIT would do for us.

    Perhaps SVN sucks for kernel-guys. But for what we do, SVN fits the bill perfectly... Central repository, easy to get up-to-date, easy to commit, easy to update, easy to review changes, easy to review history....

    SVN for us is the right tool for the job.

    .

  42. Re:Distributed version control gaining ground in F by Procyon101 · · Score: 2, Informative

    So, how do you take that diff, revert half of it back to server's version, begin coding a completely new direction, realize you were right the first time, go back to the original dif you took, then pull in half the stuff you did while doing the wrong thing, finish coding and push the commit back to the server?

    You can't because subversion has no client side version control.

  43. Re:Linus knows it. by ari_j · · Score: 1

    Have you found one that does handle subprojects well? I use darcs for most everything nowadays, but I'm always open to new ideas.

  44. Re:Distributed version control gaining ground in F by Black+Acid · · Score: 1

    Exactly. With a centralized version control system (PVCS, which is not coincidentially listed as the riskiest bet on the Forrester Source Code Management comparison) I've used in the past at a large company, everyone ended up making several different local copies of the code with various changes, in order to revert if necessary. I was dumbfounded - isn't that what version control is for, to keep track of changes?

  45. SVN not so bad by Anonymous Coward · · Score: 0
    I like SVN. And I like Mercurial. Hate CVS.

    There seems to be one thing which SVN does that Mercurial does not do, which is checkout of partial repositories. Correct me if I'm wrong, but with Mercurial (and maybe GIT too) it's all or nothing.

    On the other hand with SVN you can checkout just a directory (and everything underneath it) and work with that directory, update, commit and so on, without any consideration of the rest of the repository. That makes it a better tool if you want to have just one repository with many mostly independent directories, rather than many repositories.

    One thing I do not like about SVN is all the metadata it keeps under the .svn subdirectory. It increases the total size of the checkout by about 3 times. SVN unlike HG has a .svn directory in every checked-out directory. HG has one only at the top level.

  46. Re:Lemme check my last home appraisal... by pavera · · Score: 0

    Ok, you are a complete moron. I don't care what you say, if you were my boss you would be fired, and I would take your job.

    In my dev shop there are 2 components, a legacy thick client app which is managed in source safe (file locking, no branching, no merging), 5 devs. This project is in full maintenance mode, no new features. We have recently rolled out a web based replacement which is managed in Monotone. 2 devs. There are branches and merges constantly.

    Recently we found a bug which effected multiple areas of the code. It had to be fixed in both projects, it was a design assumption from the original legacy code which turned out to be false. It took the 2 devs on the web project less than 1 day to fix it, they were both working the whole day writing code, merging it together, testing, coding, merging, testing.

    The sourcesafe guys, well, it took almost 2 weeks. 1 dev would spend a day with a bunch of files locked, the other 4 are now stuck, they can't work on anything that touches what the first guy checked out. Since this particular bug went to the core design of the app, the core of the app was locked while the first dev implemented the "design" changes (function definitions, mostly .h stuff). He checks his work in, now nothing works, because all the old function calls don't work anymore, you can't test his checkin yet. Now the other 4 devs split up the files they want to work on and lock them, and they go through fixing things, but no one can check anything in and get a working system, everything is broken. This delays testing which is always a bad thing to do. They are forced to commit large changesets, they can't do incremental development, well, they could, but the more incremental the development, the more blocked everyone is by anyone else making changes. When changes are effecting large amounts of the code base, this basically means if you have a staff of more than 2 you are screwed. During the 2 weeks while I was sitting back (being 1 of the 2 web project coders) adding features to the product, I can't remember how many hundreds of times I heard the sourcesafe users scream "Unlock that damn file I need it" or "Why did you lock THAT file?! You aren't using it!" across the office.

    In short I don't care that you're such a great salesman that you've managed to sell yourself for > $400/hr. You suck at managing coders, and you understand so little about the process that you are ripping off everyone who ever paid you a dime.

    As to your home valuation, after the recent bubble, who's home isn't worth 1.2 million? Seriously though, you probably live in California (the only pricks I've known as big as you are all from that horrid state) where the average is probably > 1 million anymore, so you're not that special, you're slightly above average.

  47. Re:Distributed version control gaining ground in F by jgrahn · · Score: 1

    Exactly. With a centralized version control system (PVCS [...]) I've used in the past at a large company, everyone ended up making several different local copies of the code with various changes, in order to revert if necessary. I was dumbfounded - isn't that what version control is for, to keep track of changes?

    That doesn't have to do with centralized/distributed. ClearCase is super-centralized, but you do your experiments in branches, as many as you like.

  48. Re:Distributed version control gaining ground in F by Black+Acid · · Score: 3, Informative

    Monotone's inode prints (which, incidentially, Linus was a major contributor of) can speed up some things, but the initial pull of a large repository is still unacceptably slow. The Pidgin developers have worked around this performance bottleneck by supplying bzip2'd Monotone databases via http, which the developer then can sync with the latest repository on pidgin.im to obtain an up-to-date database with the latest changes. Partial pulls should partially fix this problem in a future release of Monotone, or so I hear.

    For what it's worth, I use Monotone daily and find the performance acceptable. For the record, Linus used Monotone at a particularly bad time it its development cycle, when it was very slow and the main designer was on vacation. Nonetheless, the Monotone developers emphasize correctness and integrity over speed, and Mercurial and Git were direct responses to the performance of Monotone. Still, the performance of Monotone is always improving.

  49. Re:Distributed version control gaining ground in F by Anonymous Coward · · Score: 0

    I use Perforce and people have their own branches off the development branch. It is their sandbox and they can share code with other developers if needed.

    One thing that always scares me about distributed SCMs are their lack of ACLs. I have respositories that have strict permissions because they store things besides development related files. I even have directories within branches that are not available to developers, only to release engineers. ACLs always seems to be an aftertought to these free systems; they are not ready for commercial environments.

  50. Re:Distributed version control gaining ground in F by Anonymous Coward · · Score: 0

    >By this I mean, you cannot track local changes to your workspace without committing them to the central server.

    This is actually a good thing really, be more open about your changes.
    You should look at the work I have been doing for GCC: http://gcc.gnu.org/wiki/PointerPlus .
    If I did this work in private, it will most likely not be accepted as it is a big change to the compiler. Plus this allows for and kinda forces collaboration on projects that are not part of the main trunk. Both are good things. If people do work in private in GCC, the development comunity looks down on that development as that means they will dump and run. If the work is in public, then we know people are working on that project and developer resources are not lost.

    Thanks,
    Andrew Pinski

  51. No, no, no... by Eric+Damron · · Score: 1

    For a large projects with lots of developers who work via the Internet your suggestions just don't make good sense.

    If I start a project and twenty people eventually join in and they check out various parts of the project but don't check them back in for long periods of time, following your suggestions would be horrid.

    Linus is right. You want distributed repositories not a centralized one.

    --
    The race isn't always to the swift... but that's the way to bet!
  52. Re:how to learn git? - answer, don't! by FreshOuttaMaps · · Score: 1

    And since it's written in Python with only a very small C component it runs on many platforms. Wouldn't it be safe to say that more platforms support C than Python?
  53. Re:Lemme check my last home appraisal... by Anonymous Coward · · Score: 0

    Wow. You're quite the asshole, aren't you?

    And you still don't know what you're talking about. A fat wallet and willingness to flash it around doesn't mean you know how people should program, and arguing that file locks are the future is obvious BS.

  54. Oh, jeez. by lorcha · · Score: 1

    atomic checkins?
    'cvs mv'?
    'cvs cp'?

    And that's without even exerting 3 brain cells.

    --
    "Avoid employing unlucky people - throw half of the pile of CVs in the bin without reading them." -- David Brent
  55. Git and the decentralized model by A+beautiful+mind · · Score: 1

    Git has some great features. Speed, that the whole repository with revision history is mirrored, that it's consistent cryptographically, etc.

    There is one part that I don't get and it's the decentralized part. Yeah, it is a big bonus that potentially any copy can take over would something happen to the main one or that developers can create branches and share code with each other without relying on a central server, but the part that bugs me is that according to Linus the right model is when there is a maintainer like him that avaits emails either sending him patches or giving him git repository addresses and telling him to pull. For most projects this is simply an unbelievably stupid idea, waiting for a person to judge your patches one by one. Most open source software on a small to medium level don't work this way.

    Also, there is the fundamental misunderstanding that decentralized means that there is no central server/primary copy. This is patently false even in the case of Linux. Linus' tree is the central server. For 95% of the people THAT tree is the linux kernel. For 4.9999% it is the 'real' linux kernel. For the remaining 0.00001% or less, well those are the forks.

    It's quite simple. There is a decentralized environment, but there exists a main/most influential copy. If you diverge too much from that main copy, that's a fork.

    So I was saying that for small to medium scale projects pretending that there is no centralized server, just people's repository is stupid. For large scale projects it can work, like it does for Linux, but then you have a dedicated core team that is necessary in judging what goes in and what stays out. It doesn't matter if you call it people x's tree or commit right to the central repository. That is the same thing. The terminology Linus uses is annoying because it lies. Not Linus, but the terminology.

    --
    It takes a man to suffer ignorance and smile
    Be yourself no matter what they say
    1. Re:Git and the decentralized model by Anonymous Coward · · Score: 0

      "For 4.9999% it is the 'real' linux kernel. For the remaining 0.00001% or less, well those are the forks."

      Hello, coffee machine broken?

    2. Re:Git and the decentralized model by Anonymous Coward · · Score: 0

      "Git has some great features. Speed, that the whole repository with revision history is mirrored, that it's consistent cryptographically, etc."

      I listened to Linus talk, and he mentions that they didnt need to handle hash collissions as SHA1 is so good. Can someone explain this. I mean the birthday paradox must still apply. What will happen in the case of a SHA1 collission between two files? Will git fall apart or does the system cope with this?

    3. Re:Git and the decentralized model by A+beautiful+mind · · Score: 1

      The birthday paradox still applies, but even if you account for it, sha1 is pretty damn resilient to it. This question actually was extensively discussed at the birth of git on the git mailing list, so please refer to that. The conclusion was something along the lines of "if this really bothers you, write a shell wrapper around it".

      --
      It takes a man to suffer ignorance and smile
      Be yourself no matter what they say
    4. Re:Git and the decentralized model by IkeTo · · Score: 1

      > So I was saying that for small to medium scale projects pretending that there is no centralized server, just
      > people's repository is stupid.

      I don't think everybody has to use every single feature of every tool or that is "stupid". If you are in a "small" project that you are the only user of it, you can of course have a single repository in your own hard disk. If you are in a project that you are the only developer of it, you can of course have a single repository in the server of your company and have every user checkout from there. It doesn't make use of the distributed feature, but that give you the flexibility to grow to a point where there are multiple developers and there is a QA team who want to have their own repositories.

      > For large scale projects it can work, like it does for Linux, but then you have a
      > dedicated core team that is necessary in judging what goes in and what stays out.

      If you want to "simulate" a CVS or Subversion repository, you can always have a "merge robot" in the repository that everybody uses, which tries to pull the change anybody send to it, and if successful, it is committed. It doesn't work in practice. Not because you cannot write the code, but because there are a lot of crap that people are sending in. The problem you mentioned is not a problem of the repository. It is the problem that every big enough project cannot "simply trust" the code that any programmer sends in.

      > It doesn't matter if you call it
      > people x's tree or commit right to the central repository. That is the same thing. The terminology Linus uses is
      > annoying because it lies. Not Linus, but the terminology.

      If it is not for that ability of the individual, perhaps junior, programmers to have write access to their own repository without affect the others and thus can save their partial changes, and if it is not for that ability of the individual programmers to safely merge code from multiple branches at will without worrying that some code in these branches are actually themselves merged from the same branch and thus must not be merged twice again, etc, then you're right. But because of those abilities, I do think that they are perfectly entitled to say "it is different" and "it is distributed, others are centralized".

    5. Re:Git and the decentralized model by putaro · · Score: 1

      Well, supposedly SHA-1 collisions just won't happen in our lifetimes - heh. I would say that as long as no one is actively trying to create collisions and the number of files is small this will be true. Linus mentioned that GIT is working with on the order of 22000 files which, in the SHA-1 hash space is a tiny number. When you start having to deal with multiple billions of objects then I would start to worry although mathematically the chances of a collision are still tiny.

    6. Re:Git and the decentralized model by Anonymous Coward · · Score: 0

      The birthday paradox is that if you pick k out of n distinct objects with replacement, if k is at least the square root of n you have at least even odds of getting a duplicate. With SHA1 you have a 160 bit number. Therefore the number of files k would have to be larger than anything you would see in life to get a realistic chance of a collision.

    7. Re:Git and the decentralized model by grumbel · · Score: 1

      ### For most projects this is simply an unbelievably stupid idea, waiting for a person to judge your patches one by one. Most open source software on a small to medium level don't work this way.

      Yep, that is also the main reason, why I still keep a little bit of distance to git. In most small projects you have a group of people who have commit access and they just commit when they think they are done. If conflicts appear, they are the ones doing the cleanup, there is no need for anybody to manually merge patches. If you have to add a maintainer into the mix you slow everything down to crawl. However as far as I understand git you can replicate the central repository by storing it onto a server and given everybody ssh access to that that repository. So instead of having one maintainer, everybody becomes a maintainer and things are basically the same as with SVN or CVS again.

      Another issue I have with git is that every checkout is a complete mirror of the repository, so you don't just get the latest version, but instead you get *all* versions. I do work a lot of times with repositories full of graphics and other binary data and I have some fear that if I use git I end up forcing everybody to download far larger amounts of data then they would be with SVN. I haven't actually tested how much an issue this would be, but it also one of those reasons why I still have some doubt that git would actually provide more benefit then annoyances.

    8. Re:Git and the decentralized model by Anonymous Coward · · Score: 0

      First of all, if you say that Linus's tree is the central server, you're really misunderstanding. kernel.org is the central site for distributing Linux, but a) that's only a copy of Linus's tree; if you watch the video he explains that the machine he keeps his master tree on doesn't even have ssh access, and b) Linus's tree is only central for him. Again, literally nobody else has access to it.

      But the important thing is that developers can share their work with each other, directly, without having to bother him at all. Two people can go off and collaborate on a new feature without bothering the users or maintainer of a central server. And when they're done, it will be easy to merge their changes in.

      Now, you can freely use git in a centralized way. Just enable push access from the developers and you have a CVS-like permission model. The two people mentioned above can create a branch on the server and do their hacking there. But you can also hack *at length* on your laptop without net access and check *multiple* changes in, pushing them to the main server when you have connectivity.

      Heck, I can write a script that checks and complains if I have any local changes more than 24 hours old that haven't been pushed to the master.

    9. Re:Git and the decentralized model by Jamie+Lokier · · Score: 1

      I think you're mistaken about Linus' model. Some patches, he reviews himself, but many others he doesn't review: they are simply pulled from other people he trusts, as a time to suit him. This is what 'lieutenants' are for. If you're thinking of a smaller project where _everyone_ is trusted, then it's quite similar to the centralised model anyway: patches will be pulled between developers without review, because they trust each other. The one major difference is that individual published trees will have been checked by the person publishing them to whatever level of quality they care about. In a small team, it might be "the project compiles". (This avoids the problem which occurs with centralised scms and large numbers of developers: if everyone only rarely checks in a patch which breaks the build, the build will be broken a lot of the time because of the large number of developers.) That is again very similar to the centralised process with release management: committing something to a published tree is analagous to a minor release. When you want to get the most up to date code, including code that's not gone through the basic checks of one particular developer (or testing script), you can: you simply pull directly from all the people who might have some changes of interest. In the case of a small team where everyone is trusted, that means you pull from everyone. If that's not convenient enough, you can set up a central place which constantly pulls or is pushed to by team members. Then it's quite like centralised development - except you can set up multiple such places with the work of different overlapping teams. That's quite useful when you have to work with third parties where you might trust them for some things but need to review their work for others in the same project. If you look at OSS projects which use centralised SCM tools, you'll often see that there are multiple repositories in effect, even though they're not called that. Individual contributors have their own copy of code, make local modifications, and _eventually_ they are applied centrally, after some kind of review. That is, only a few trusted develops have real check-in privileges, so everyone else (i.e. casual developers) makes patches and posts them to mailing lists, and re-post after each merge or minor change until acceptance. For contributors who maintain multiple patches for a while, until they are accepted, the contributors are doing distributed SCM "by hand". Sometimes that is quite hard work. Distributed tools help. (In my experience, commercial embedded systems projects are exactly the same except the communications are much less efficient: often, downstream customers patch their code locally, and have to maintain their local patches with changing upstream versions, but they have no good way to send the patches upstream efficiently due to bureaucracy, and new upstream versions tend to come as a gigantic patch which is harder to merge with local changes than a series of smaller patches.)

  56. Re:Linus knows it. by Anonymous Coward · · Score: 1, Insightful

    Yeah, but he's really mean!

  57. This tells you what kind of geek I am. by Dorceon · · Score: 1

    GIT and SCM? You mean Geita, Tanzania, and Scammon Bay, Alaska, USA?

    --
    What sound do people on rollercoasters make? Hint: it's not Xbox 360.
  58. One thing is for sure... by Anonymous Coward · · Score: 0

    If people spent as much time coding as they did arguing over pointless little details about source control systems (guess what kids, THEY'RE ALL FINE, SO LONG AS YOU UNDERSTAND THE TOOL) we'd have perfect software by now.

  59. Re:Distributed version control gaining ground in F by A+beautiful+mind · · Score: 3, Insightful

    Richard Dawkins spent a good deal of time in his book, "The Blind Watchmaker" talking about what the gradualist and the punctuationist view of Darwinism is. His gripe was that the latter was sold as a whole new theory, opposing the old gradualist view. Dawkins was rightly pissed about this, because the latter is merely an improved version of the former. I feel the same about the Centralized vs. Distributed topic. The distributed system is basically a centralized system where EVERY COPY HAS FULL REVISION HISTORY.

    There is still a central or main copy, otherwise you'd be herding a lot of slowly diverging forks! Most projects want to produce a release eventually and there is a main copy of sourcecode which the release is produced from.

    Imo, the reason Linus dislikes SVN and CVS and pretty much everything else is because of speed, because most SCMs lack the ability to work with merging different copies of repositories and work on a commit level instead, and do not allow for easy development routing around the central copy.

    --
    It takes a man to suffer ignorance and smile
    Be yourself no matter what they say
  60. Re:how to learn git? - answer, don't! by short · · Score: 1

    You cannot write anything in C using just its about 5 commands/statements.
    You need to use some C system (or other) libraries and these are the compatibility problem of C.
    It is about those POSIX, SystemV, ANSI, BSD, GNU etc. etc. standards conflicting each other, with incomplete specifications etc. Also you face architectural problems of different word size, endianity etc. (this remains true even for high level languages regarding binary network protocols).

  61. Re:git by Just+Some+Guy · · Score: 4, Insightful

    His opinions should carry some weight, especially since he should know more than anyone what the limitations of SCM software is when it comes to larger projects like the linux kernel.

    The thing is, Linux is actually a pretty small project. Much larger projects would include FreeBSD, which uses CVS not only for the kernel but for every line of source of the entire OS. Now, Linus is a smart guy, but I don't know why he thinks CVS (and SVN by extension) won't work for large projects. It clearly can. It may not be suitable for the way he wants to run his project, but that's a different issue.

    --
    Dewey, what part of this looks like authorities should be involved?
  62. Re:how to learn git? - answer, don't! by ceoyoyo · · Score: 1

    Depends what you're doing in C.

    Threads? Doing anything with the OS? Uh oh.

    Hello World in C runs on more platforms than Hello World in Python, but Python abstracts a lot of less trivial stuff so it works cross platform without rewriting.

  63. Maybe another difference by CuteAlien · · Score: 1

    I haven't worked with GIT so far, but i did watch the talk from Linus and some stuff he mentioned sounded like very familiar problems. Mainly when he said that even patch is better than SVN. And that's where i got the feeling that those tools solve two different problems:

    SVN is better than doing normal backups for sourcecodes.
    GIT seems better than working with patch.

  64. Re:Lemme check my last home appraisal... by Nataku564 · · Score: 1

    I agree with your statements in general. I have projects at work that use VSS, and some in CVS / SVN. VSS sucks. However, you mention your solution is web based - so I assume it isn't C++ (which I assume the legacy system is, since you mention .h). I would wager the fact that you are using a more modern language and tools probably helped out a wee bit.

    Again, not to discount your point - VSS sucks, hard - but I don't think we can take the discrepancy in time as purely due to the difference in version control.

  65. no forks? by crayz · · Score: 1

    Amusingly though, both Git and Mercurial were "inspired" by Monotone, but were created as separate projects because the developers wanted to go in different directions

  66. Re:git by SnowZero · · Score: 3, Insightful

    Yeah and luckily the whole "haves versus have nots" on who gets CVS commit access rights has never, ever, been a problem in *BSD or XFree86. Right?

    Seriously, centralized version control fails for large open source projects for political reasons, not technical ones. That's really Linus' main point, although his lack of tact in presentation is going to cause many people to miss that insight. With a changeset-based distributed version control system, you only have to trust patches and code, not people. The whole concept of "the chosen few who get commit access" goes away, and problems like the XFree86/X.org fork or the EGCS/GCC semi-fork disappear.

  67. Re:git by Anonymous Coward · · Score: 4, Interesting

    I was at the talk and I have to say he lost a HUGE amount of respect from me (and other people in the room whose job has to do with source control).

    The way git works as a decentralized solution with a chain of trust is simply not useable for really large, multiple projects with interdependencies. And it's even worse when you need to control access to certain portions of the code.

    I see Git as a pyramid scheme with Linus sitting on top. I can't start imagining the job of the poor release engineer in a big corp who would need to merge the changes of sub-engineers and the chain of trust involved to reach the top ! What I see is that everyone would code and test on out of sync code, a bit like Vista's development was.

    Git is a solution that is fine tuned to Linus specific needs, but it's ages away from a solution that's flexible for most of the industry's needs.

    I'm a big fan of subversion, and while I'll admit it's far from perfect it's way better than cvs could ever be. It does the job well most of the time, and SVK is filling some of the holes.

  68. One reason to use SVN - you can't afford better by arma300 · · Score: 0, Redundant

    Yes, yes, yes, yes... all this lies again about how good SVN or CVS are...

    Yes, they are pretty good... only when you can't afford something better!!

    Clearcase is much, much better, but it is not for programmers wanabees...
    you *MUST* understand what you're doing... yes, it is like saying Visual
    Basic is better than C/C++ or Java just because it is simple... Come on!! It
    is crap, just like CVS and SVN are crap.

    Clearcase is much, much better than cheap-free-version-control-software.
    SurroundSCM is better, and systems like PlasticSCM or Accurev even better...
    The downside? You HAVE TO pay...

    The same old story... free is good, when you pay you get better.

    1. Re:One reason to use SVN - you can't afford better by WilliamSChips · · Score: 1

      Linus' speech was really about git, which is just as free as SVN and CVS.

      --
      Please, for the good of Humanity, vote Obama.
  69. Re:Distributed version control gaining ground in F by Nataku564 · · Score: 1

    Personally, I just let the development tools manage my local workspace. They generally do a better job anyway, since they know what you are doing to it. Eclipse is my favorite tool because of this - it has local file history (with versions you can inspect, compare, and revert to) as well as undo history for all of the refactorings you have been doing (Java only, so far ...).

    This paired with SVN or CVS solves all my problems with local workspace revisioning.

  70. Re:how to learn git? - answer, don't! by SnowZero · · Score: 1

    Darcs is arguably easier to use, although it doesn't scale well to large projects like Mercurial can. In particular, Mercurial requires commits at odd times (pull + merge) and doesn't support the same level of cherry-picking that darcs can support. Anything you could imagine wanting to do is likely possible in darcs; The main problem this raises is that supporting that rich model makes efficient implementation difficult or potentially impossible. However, for small projects <100k LOC, this is not really an issue, so darcs is hard to beat.

  71. Re:git by EsbenMoseHansen · · Score: 2, Insightful

    Yeah and luckily the whole "haves versus have nots" on who gets CVS commit access rights has never, ever, been a problem in *BSD or XFree86. Right?

    I'm sure it has been a big problem, but e.g. in KDE (which is also quite large), getting commit access isn't exactly hard. And anyway, SVK provides decentralized versioning backed by a central repository, so SVN doesn't preclude this.

    Seriously, centralized version control fails for large open source projects for political reasons, not technical ones.

    I agree completely, if it fails at all.

    That's really Linus' main point, although his lack of tact in presentation is going to cause many people to miss that insight.

    His lack of tact is legendary. But his lack of tact is what makes people read his every comment, and I hardly believe I am alone in smiling when he spews out those one-liners.

    With a changeset-based distributed version control system, you only have to trust patches and code, not people. The whole concept of "the chosen few who get commit access" goes away, and problems like the XFree86/X.org fork or the EGCS/GCC semi-fork disappear.

    Disappear? Hardly, the patches still need to be accepted. But decentralized repositories are wonderful to work with, and as such removes a technical hindrance.

    Each man differs in his opinion of versioning software. For fun, here is mine: (only those I've tried)

    • git is nice (handles e.g. moves better than svn)
    • tla is too bothersome
    • svn is very well supported
    • cvs has too many strange cornercases.
    --
    Religion is regarded by the common people as true, by the wise as false, and by rulers as useful.
  72. So use SVK by Phil+John · · Score: 2, Informative

    So Use SVK, which uses the base libraries of Subversion (the atomic, versioning filesystem ones which are heavily tested and work very well) and uses them to build a distributed SCM.

    http://en.wikipedia.org/wiki/SVK

    --
    I am NaN
    1. Re:So use SVK by cduffy · · Score: 1

      Yes, you could use svk... but why, when its competition is easier to use or faster and more space-efficient and has useful things like dumb server support?

    2. Re:So use SVK by chthon · · Score: 1

      I looked this weekend to SVK, unfortunately, it does not support externals. This means a no go.

      Since SVK is built on top of Subversion, and trac integrates seamlessly with a Subversion repository, this would have been an awesome combination.

  73. If you already used CVS... by Craig+Ringer · · Score: 1

    Subversion can be quite useful for a project's "authorative" repository. Especially if that project used to successfully use CVS, as a great many small projects do/did - and some larger ones, like GNOME and KDE, too. Subversion is also quite convenient for publishing sources, though it's less than ideal for any contributors without commit trying to work from anonsvn.

    svn is supported by a number of IDE plugins & GUIs, which a surprisingly large number of people use and come to rely on. I'm not one of them, but many of the folks I work with use various svn guis.

    git-svn looks very interesting, as it should provide a way to add distributed scm capabilities on top of svn, where you're working with projects that use svn. It'd be useful even just for the ability to take partial local history and keep local modifications under revision control. I wonder if there's anything similar for Mercurial...

    What bothers me most about svn is the insufficient integrity guarantee on the repository. That, however, can be fixed, and I hope it's going to be addressed with an `fsfs2' format. Frankly, not everyone *needs* distributed SCM, and many are quite fine with a good centralized system.

    1. Re:If you already used CVS... by Anonymous Coward · · Score: 0

      git-svn looks very interesting, as it should provide a way to add distributed scm capabilities on top of svn, where you're working with projects that use svn. It'd be useful even just for the ability to take partial local history and keep local modifications under revision control. I wonder if there's anything similar for Mercurial...
      http://cheeseshop.python.org/pypi/hgsvn
  74. Re:Is it my imagination??? by Anonymous Coward · · Score: 1, Insightful

    Or is Linus turning into a replica of RMS, only without the manners? Nonsense. Unlike RMS, Linus takes himself way too seriously to do anything wacky and self-effacing like say, dressing up as St. Torvaldis, complete with a cardboard halo. But he's still nicer than Theo de Raadt.

  75. Re:git by DrXym · · Score: 1
    And we should trust your unsupported assertion more than the educated opinion of the originator and head of one of the most successful large software projects in history because...?

    Never trust an argument from authority unless it has the proper reasoning to back it up. Besides, Linus is managing a highly distributed, Linux-only (by definition) project. Git might suck badly if you have cross-platform requirements, or a centralized repository, a different development model, or simply want UI tools & IDE integration.

  76. Re:Distributed version control gaining ground in F by SnowZero · · Score: 1

    It would be interesting to know more details of what you were trying to do, to see if there is some non-ACL way of mapping it to distributed VCS functionality. From a distributed VCS background, I would probably do something like the following:
    (1) Split off non-development files into a separate repository, with different permissions to that tree
    (2) Give release engineers their own tree which developers cannot push to; If a release engineer needs a fix from a developer, he can pull it.

    In fact, a whole lot of nice things fall in to place when you make pull the fundamental operation rather than push. The general workflow is for a developer to finish an implementation, checking in as necessary, and then notify an upstream or more central developer that the patch is complete. The upstream developer reviews the patch and pulls it if is correct (works, doesn't violate policy, etc). In this flow, code review is emphasized, and at no point is any developer trusted with "push" rights until you get to the final central integrator (usually a release/QC person).

  77. Anybody got a link to download the video file? by hkBst · · Score: 1

    I would like to watch the video, but it seems impossible without flash. Anybody got a link to download the video file?

    1. Re:Anybody got a link to download the video file? by Ash-Fox · · Score: 2, Informative

      I would like to watch the video, but it seems impossible without flash. Anybody got a link to download the video file?
      Here is the video file, http://chi-v131.chi.youtube.com/get_video?video_id =4XpnKHJAok8
      --
      Change is certain; progress is not obligatory.
    2. Re:Anybody got a link to download the video file? by Anonymous Coward · · Score: 0

      Supposedly DivX version

      The prevalence of Flash wrappers is rather sad, most users don't understand how open standards enabled the web. I don't bother with the proprietary junk myself but doesn't mplayer support flv?

    3. Re:Anybody got a link to download the video file? by Anonymous Coward · · Score: 0

      mplayer supports the version of flv that youtube uses.

  78. Re:how to learn git? - answer, don't! by gweihir · · Score: 1

    Wouldn't it be safe to say that more platforms support C than Python?

    You have no idea what you are talking about, do you? Any platform that supports C also supports Python, unless you count really tiny ones that do not have enough memory.

    --
    Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
  79. Re:Is it my imagination??? by Anonymous Coward · · Score: 0

    RMS has manners? The guy bums it out in an office on a university campus and stinks of B.O., on a -good- day, and that's before he opens his mouth to talk about some software-related issue. When did that hairy gorilla freak ever have manners?

  80. Re:Is it my imagination??? by Antique+Geekmeister · · Score: 1

    Or the "secret sauce" for Linus's work is actually soap and water?

  81. "Source Code Management." by shish · · Score: 1

    SCM, by which he means "Source Code Management."

    Amen to that; saying that an SCM is a "software configuration manager", when you are using it to manage source code (and not software configuration), has always struck me as incredibly silly~

    --
    I mod down anyone who says "I will be modded down for this", regardless of the rest of their comment
  82. Re:Lemme check my last home appraisal... by Anonymous Coward · · Score: 0
    VSS is pretty craptastic, but I've never encountered most of the problems people are constantly bitching about. At work we have a several MLOC application worked on by around 40 people hosted in VSS. We don't use exclusive checkouts, and part of the process is that you do a "Get latest" before checking in your changes. It is extremely rare that someone overwrites somebody else's changes by mistake even if some common files are frequently updated. We use braches only for release versions, not normal development as that's one area where VSS sucks particularly hard.

    As I said, VSS is pretty annoying in several regards, but generally everything works well for us. The main issue we encounter is the lack of atomic checkins, but that is usually resolved at the huge cost of a few minutes of the affected developer's time.

  83. Re:git by Anonymous Coward · · Score: 0

    And bzr is the future.

  84. Re:git by Anonymous Coward · · Score: 3, Interesting

    The thing is, Linux is actually a pretty small project. Much larger projects would include FreeBSD...
    That is nonsense. linux-2.6.21.3 is 5.3 million lines of code. FreeBSD HEAD for /src checked out today is 6.2 million. So Linux is not a small project by any measure, and FreeBSD is not that much larger. Note that the FreeBSD number includes contrib which has copies of gcc, gdb, sendmail, bind, etc. For comparison, all of Debian Etch is 283 million lines of code.
  85. Actual Youtube link by beegle · · Score: 4, Informative

    http://www.youtube.com/watch?v=4XpnKHJAok8

    This is the video from the article. You can either watch it in the tiny embedded window, or you can go to youtube and click the button to watch it full-screen.

    Look, posters: if you're going to point to a video that's hosted on YouTube (or another video hosting site), just link to that site. Don't link to some random web page that has the video embedded in it.

    --
    --
  86. Re:git by Ash-Fox · · Score: 2, Informative

    Now, Linus is a smart guy, but I don't know why he thinks CVS (and SVN by extension) won't work for large projects.
    If you watched the video, he acknowledged it could but it would still be easier to use a system like Git.
    --
    Change is certain; progress is not obligatory.
  87. You are used to toy projects by kahei · · Score: 1


    On medium to large projects -- 10 to 100 developers maybe, on 1 to 5 sites, with a significant amount of metaconfiguration which is itself versioned -- it is simply impossible to forbid concurrent editing of code.

    It's also extremely hard to avoid branching. To say 'there is no branching' is to say 'nobody has any changes that need to be in version control, and yet should not be forced on all developers / all releases'. It's only possible to say this about extremely small projects -- small enough to have only one stream of development going at once.

    I'm stating the obvious here but it's worth repeating because some people do have a lot of trouble understanding that proper SCM (as opposed to the parent post's conception of SCM) is necessary.

    --
    Whence? Hence. Whither? Thither.
  88. Re:Lemme check my last home appraisal... by VGPowerlord · · Score: 1

    You missed the point of the thread; to discuss git, not to be one.

    I thought it was to discuss what Linus said.

    Personally, I think he's on crack, going on and on about the "Great Pumpkin."
    --
    GLaDOS for President 2016! "Well here we are again. It's always such a pleasure." -- GLaDOS, 2011
  89. Re:git by WilliamSChips · · Score: 2, Funny

    Either that or darcs, although darcs has a major drawback in not being able to be shortened to three letters well.

    --
    Please, for the good of Humanity, vote Obama.
  90. For once we don't have some wannabe mocking others by Qbertino · · Score: 1

    Linus has enough credentials and competence to give his opinion some serious weight. And even if he does run roughshod on SVN and CVS quite a bit, he is right in a lot of points.

    I've started using SCM on a regulary basis with Subversion for about half a year now and more often than once have I thought: 'This can't be the way SCM is done right'. Only one thing I know of that SVN does better than CVS is pure entire-project version numbers. CVS seemed like a kiddiebike with training weels that wanted to be as complicated as Kornshell. SVN did away with that but still has downsides that we needn't put up with for any reason. SCM metadata stored in each project directory is one of those little things that bug the hell out of me for instance. And when Linus says that his brain isn't damaged into thinking CVS is an OK way of doing things because he only used it when forced to - I believe him. I wasn't aware that his project Git had come so far so fast until two weeks ago, but when he says that any SCM that he can do better in two weeks of coding on his own isn't worthwhile - and SVN is one of those - that really has me thinking. I'm not so much into software developement with large groups that I could exactly tell how bad SVN is, but I'm sure Linus can.

    To use an analogy: CVS was a Ford Model T, SVN is an improved Ford Model T, but I think we should start looking for a current BMW or something. It might be a good idea to do that *before* we move a larger audience to using SCM.

    --
    We suffer more in our imagination than in reality. - Seneca
  91. How about a more rational debate, Linus? by slipsuss · · Score: 2, Interesting

    Ignoring Linus' heinous unprofessional attitude, massive ego, and completely insulting comments, there's a lesson to be learned here: you and your team need to decide whether you want centralized or decentralized version control. There are advantages and disadvantages to both methodologies. Anybody who gets up on a stage and tells you that "all centralized systems are garbage, decentralized is the one true way" isn't giving you the full picture. (And likewise, anyone who says the opposite is equally off their rocker!) 80% of software development takes place within corporations, and there's a reason centralized SCM has worked so well in that environment. Decentralized systems might be great for certain open source communities, but it's not what most organizations want or need. If you'd like another viewpoint on why centralized might sometimes be better than decentralized (even in open source projects), take a look at this essay I wrote a while back.

    I'm one of the original designers/developers of Subversion, and even we (in the svn developer community) are well aware of both sides of the coin. We're seriously considering adding decentralized features to svn 2.0. We've also added true merge-tracking magic to the imminent svn 1.5 release (so svn is no longer "hand waving" merges, they'll be just as simple as in decentralized systems.)

    If you truly believe that distributed SCM is the the Only Way of working in all situations, then I suggest you try to push these systems on corporate teams, and see how they fare. Distributed systems have a model that's much more complex for the average joe-user to understand, and as a result most existing distributed systems have extremely complicated UI's. If they're complex enough to confuse open source nerds, think about the rest of the world's programmers...

    Keep an open mind about this stuff. No matter what Linus says, there's no magic SCM bullet.

    1. Re:How about a more rational debate, Linus? by putaro · · Score: 1

      I'm glad you guys haven't sunk to Linus' level. I thought his comments about SVN and its developers were unnecessarily rude when in reality all he is saying is that SVN doesn't work for his needs. I'm using SVN and it's a big help every day so THANK YOU!

      His idea of having thousands of different branches and then picking and choosing among them is great for him but not very helpful when you have to PAY for the development of all those branches.

    2. Re:How about a more rational debate, Linus? by garutnivore · · Score: 1

      Amen to that! There is no one-size-fit-all solution to SCM. There are two methods I use for my own needs: RCS and svn. Yes, RCS does make sense sometimes. For instance, I use it for all the LaTeX source of the papers I write. I can't imagine using CVS, svn or anything more fancy-schmancy for that task. I use svn for more my source code for my software projects and for keeping system configuration files (stuff in /etc) under some sort of control. For the latter case especially, a DSCM would make no sense. One thing that people need to consider is that more freedom in an SCM system means more complexity and more ways to shoot yourself in the foot. That is to say, there's a point at which adding capabilities and facilities to do things that sound great in theory end up in practice being hurtful. Even in relatively feature-poor systems like CVS, I've seen situations in which changes had been made in such a way that caused serious problems months down the road. And I'm not talking about people being stupid or not knowing what they heck they're doing.

    3. Re:How about a more rational debate, Linus? by Anonymous Coward · · Score: 0
      > Linus' heinous unprofessional attitude, massive ego, and completely insulting comments

      I think you misspelled 'honesty', I respect him more for having the balls to say it straight. His claim that it's not possible to "do CVS right" has resonance. A decentralized system will still commonly have a centralized branch (like linus tree) so you have no argument there and your claim about the learning curve for decentralized SCM is downright strange. All SCM solutions have a learning curve, some reward the effort more than others. I can't believe anyone uses svn, I actually use RCS (currently with blame for annotation - which is important to me) for personal projects, system config files and the like. For larger projects, git and mercurial are clearly where it's at.

      Linus talk could have been better if he concentrated on scalability and stuff but he didn't. He obviously was not humbled by the google PHD ratio either. Instead he walked on stage with an unsympathetic and unapologetic attitude and said...

      How can you guys be smart enough to do distributed file systems but too stupid to do distributed SCM?


    4. Re:How about a more rational debate, Linus? by Anonymous Coward · · Score: 0

      O god why must everybody have such fragile egos?

    5. Re:How about a more rational debate, Linus? by grumbel · · Score: 1

      ### Anybody who gets up on a stage and tells you that "all centralized systems are garbage, decentralized is the one true way" isn't giving you the full picture.

      Can a centralized system do anything that you couldn't replicate with a decentralized one? I agree that for many styles of development a central repository is fine, however, I think this should be a policy issue, not a feature of the SCM, since in the end you should be able to replicate all the features with a decentralized one.

    6. Re:How about a more rational debate, Linus? by Omnifarious · · Score: 0

      Subversion has more problems that the fact it doesn't support a distributed model. I also think Linus' comments were rude, and I know the Subversion team is filled with good solid professional developers.

      At the time Subversion was created the distributed model wasn't well understood. In fact, experience with CVS led people to believe that version control in general was a complicated problem requiring a lot of careful thought and engineering to solve. This led the Subversion team to make a number of extremely conservative choices and led to a product that, IMHO, is extremely over-engineered and lacks critical features that were discovered to be important and easy to implement after Subversion's basic foundation was already layed.

      Additionally this over-engineering has resulted in a system that is very slow for what it does.

      Subversion handles branches OK, but it handles merges extremely poorly. Branching and merging were considered exotic operations when CVS was considered the peak of version control goodness, but with the rise of distributed SCMs making those operations nearly trivial, it's realized that these are actually fundamental SCM operations that every SCMS should handle very well.

      The distributed model is a strict superset of the centralized model. I don't consider them to be a choice. I would always choose to use a SCMS that could handle a distributed model over one that couldn't, all other things being equal. Becuse of worse comes to worse, I can emulated the centralized model with my decentralized tool easily enough.

    7. Re:How about a more rational debate, Linus? by slipsuss · · Score: 1

      I agree with you. This is why I'm so interested in seeing svn 2.0 as a decentralized system.

      The really hard question is: can we make it useable? Subversion prides itself on its very simple UI. So many decentralized systems have literally dozens and dozens of subcommands and even more switches, and they're daunting to even hard core technogeeks. Can Subversion 2.0 be decentralized at heart, but initially present itself as centralized? Can it keep the complexities of decentralization "hidden" for novice users, starting life centralized, and then allowing users to decentralize as they get more comfortable?

      I have a lot of respect for Mercurial. It seems to be the most usable DVCS system out there, and we have a lot to learn from it. (I already know that Subversion is planning to use its 'revlog' repository format as a successor to FSFS.)

    8. Re:How about a more rational debate, Linus? by Anonymous Coward · · Score: 0

      Thanks for the rational treatment.

      I use SVN for projects where I am pretty much the only developer. Despite the fact that the concept of branching and merging seems very useful, to date I have had extremely few reasons to branch and merge. Simply put, my projects are small and most of my development is linear. The exception is when I have a large architectural rewrite in process (with some changes committed and some pending) and in the middle of that a critical bug report needs to be addressed. SVN is good for me for most situations - kudos and THANKS!

      My single biggest problem with SVN is the .SVN subdirectories in each directory, storing base-version information for local diffs. Please, is there any way to disable this? I would use SVN for many, many more situations (such as my personal documents), if I didn't have to deal with the .SVN subdirs.

      Thoughts?

    9. Re:How about a more rational debate, Linus? by Lord+Bitman · · Score: 1

      people often tell me: "use SVK", which seems even worse, imo, but there it is.

      --
      -- 'The' Lord and Master Bitman On High, Master Of All
  92. Re:git by WilliamSChips · · Score: 1

    And the Linux kernel probably has more people working on it than FreeBSD.

    --
    Please, for the good of Humanity, vote Obama.
  93. Re:Is it my imagination??? by WilliamSChips · · Score: 1

    I heard he sleeps with nunchucks.

    --
    Please, for the good of Humanity, vote Obama.
  94. Re:Distributed version control gaining ground in F by putaro · · Score: 2, Insightful

    What you're citing as advantages for decentralized version control are not the result of decentralization.

    Cheap branches? Subversion has cheap branches.
    Better merging? This is a result of algorithms has nothing to do with whether the system is centralized or not.

    If you're on a fast net with the server you can commit as often as you like. If you can branch/merge easily it's no problem.

    If you want to cite advantages for decentralized version control it might be more like:

    If you have to talk to a server over slow links, decentralized is much better

  95. Re:Lemme check my last home appraisal... by joshv · · Score: 1

    Wow, who are your clients - I'll work cheaper and get the job done just as well. That's some mighty powerful snake oil you are selling if you've convinced folks you are worth $400/hr.

    My approach? In practice, we don't branch much at all, there is just too much risk when merging a long lived branch. I do however let people work on the same piece of code at the same time. I encourage frequent synchronization and commits.

    To force folks to wait until someone else is done with a particular source file is just not practical or productive. If people are properly tasked, and not working on the same exact same thing, it's rare that they will both need to edit the same file, and when they do, they are usually working on different parts of it.

    But when you get down to it, projects don't go over time and over budget because of misuse of source control. They go over time and over budget because of mismanagement. You can't expect all developers to be good at coordinating their work with others. That's the job of the project manager.

  96. Re:git by smittyoneeach · · Score: 2

    His lack of tact is legendary.
    That's not a bug, that's a feature.
    He emphasizes engineering over ego. It's a litmus test. If you've got the sack to get in the game, you better not mind seeing your work demolished. This is an anti-prima-donna vaccine for any organization.
    So long as he remains consistent, even-handed, and not ad-hominem, it's OK.
    --
    Get thee glass eyes, and, like a scurvy politician, seem to see things thou dost not.--King Lear
  97. Re:GIT by EsbenMoseHansen · · Score: 1

    There have got to better acronyms out there to choose from. Whoever came up with this was a worthless git.

    The manpage discusses the name.

    DISCUSSION
    "git" can mean anything, depending on your mood..sp

    &#183; random three-letter combination that is pronounceable, and not actually used by any common UNIX command. The fact that it is a mispronunciation of "get" may or
    may not be relevant.

    &#183; stupid. contemptible and despicable. simple. Take your pick from the dictionary of slang.

    &#183; "global information tracker": you&#8217;re in a good mood, and it actually works for you. Angels sing, and a light suddenly fills the room.

    &#183; "goddamn idiotic truckload of sh*t": when it breaks This is a stupid (but extremely fast) directory content manager.
    --
    Religion is regarded by the common people as true, by the wise as false, and by rulers as useful.
  98. From CVS to SVN... by pjr.cc · · Score: 1

    Personally I made 3 false-moves to svn from cvs before managing to actually move to svn for real.

    Some months ago my svn repository died and thankfully i have backups.

    Having said all that, i always felt SVN was a move in the wrong direction for the right reasons. Considering though that I use svn for only my own work (with only me coding in it), git kinda seems pointless for me (though in development with more than 2 people involved i cant certainly see where it would kick butt over svn). For me, i was thinking of getting rid of svn and putting my repo's onto an ext3cow fs!.

    I find it a little odd actually that people cant see why per-coder branching with a merge model is a big win-win. To me this is like a big "WOW, we can do QA is a logical manner finally" (keep in mind, a merge can be another branch if i understand it correctly). Of course, I haven't really used git myself other than a quick play to see what its like.

    On a side note, 2 companies I've worked with have black-listed SVN cause of its ability to be configured in an authentication mode involving plain-text. It didn't matter that no one there had planned on using that particular functionality, just that it even existed.

    1. Re:From CVS to SVN... by statusbar · · Score: 1

      On a side note, 2 companies I've worked with have black-listed SVN cause of its ability to be configured in an authentication mode involving plain-text. It didn't matter that no one there had planned on using that particular functionality, just that it even existed

      Wow... do they also black-list CVS, apache and IIS?

      --jeffk++

      --
      ipv6 is my vpn
    2. Re:From CVS to SVN... by pjr.cc · · Score: 1

      On a side note, 2 companies I've worked with have black-listed SVN cause of its ability to be configured in an authentication mode involving plain-text. It didn't matter that no one there had planned on using that particular functionality, just that it even existed
      Wow... do they also black-list CVS, apache and IIS?
      No, no and no. The main reason for it as i understood it was because of the ease of configuring the svn daemon to run a repo with its plain text password database file thingy. The same isnt true for the others (as in, configuring more secure methods in the others is a snap compared to the svn side of things).
  99. Re:git by cduffy · · Score: 0, Redundant

    cross-platform requirements - If this includes win32, yes, that's a weakness -- and one shared by not so many of its competitors these days (where "its competitors" are Mercurial, Bazaar-NG, and the like).

    a centralized repository - bzr does this well, so long as you educate your users to use "checkout" instead of "get". (Coming from the primary centralized systems, that's the common command anyhow). Can't comment on git; haven't used it.

    a different development model - There's no reason a distributed SCM can't be used effectively in centralized development models -- none. What you might need to do in that kind of case is set up an automated "patch queue manager" process which merges and tests changes on demand from those authorized to make them; software to do this is readily available. OTOH, it gives you the additional tools to manage workflows that a centralized SCM can't.

    or simply want UI tools & IDE integration - Yeah, that's an issue with pretty much anything that isn't CVS or SVN (and I'm completely with Linus regarding svn's inadequacy; it's almost 1.5 and they still don't have merge tracking?!). That said, Trac is improving its support for foreign SCMs, so at least that part of the tools-and-integration piece should be a reasonably solved problem in not-so-very-long.

    Git is very, very fast -- and for folks with extremely large trees and very little patience, that makes it nearly the only gig in town. (Yes, there are folks who use CVS for large trees; it wasn't designed for the case, and they're using the wrong tool for the job. Update time being O(n) on number of files makes things unpleasant -- never mind the locking or concurrency or history preservation issues). To be sure, it's not all things to all people -- but neither is anything else in the field. That doesn't mean folks who have worked on DSCMs don't get to pitch loogies at CVS and its descendants; it just means that folks looking for a SCM to use don't have a magic bullet available.

  100. Re:git by Anonymous Coward · · Score: 0

    I hardly believe I am alone in smiling when he spews out those one-liners
    It seems it's generally people from outside the nordic countries that get offended by him. Maybe it's in our mannerisms to say provocative things on purpose in order to emphasize our point.
  101. Re:git by Paradox · · Score: 1

    Don't get me wrong, a lot of people (myself included) would love to use Darcs. It's done a lot of thing right.

    We can't.

    Darcs is just too slow. You don't need a huge project to reveal this slowness, just a medium-sized one. It's merge algorithm freaks out when two patches appear at the same time that are identical (which happens a lot more than you might thing). It's also too freakin' slow! I'm using git until Darcs can un-slow-ify. Then I'll go back to it (unless, of course, git can simulate what darcs does, in particular interactive pulls).

    --
    Slashdot. It's Not For Common Sense
  102. Re:git by Paradox · · Score: 1

    Git might suck badly if you have ... or a centralized repository, a different development model, or simply want UI tools & IDE integration.

    Git works perfectly well with a centralized repository. This use case is fully supported and actually has some unique support in the git-hooks. However, its discouraged socially.

    I am not sure what kind of model git, darcs, mercuirial, bazaar, or monotone couldn't satisfy. They all scale from one person to many (albeit speed concerns with some). They can be used in a variety of ways. The only really annoying part I've ever found is the lack of support for empty directories, but that's what .anchor files are for, I guess.

    Git actually comes stock with some of the best UI tools I've ever had included with my version control system. Seriously. Go take a look at gitk and check out git-gui.

    As for IDE integration, a google search will show you that's already falling into place, and it took me all of 2 days to get work to play nice with TextMate (my editor of choice).

    --
    Slashdot. It's Not For Common Sense
  103. Re:Is it my imagination??? by Anonymous Coward · · Score: 0

    Linus:

    • Maintains a key open source project
    • Contributes code
    • Provides sane, reasoned replies to questions asked by journalists about current affairs
    • Earns a steady income from hard work
    • Acts like a dick on the internet

    Richard:

    • Used to create software
    • Used to contribute code
    • Preaches at anyone who'll listen, as long as they play along with his "GNU slash Linux" terminology delusion.
    • Homeless, unemployed convicted felon
    • Acts like a lunatic in real life

    Linus is a fairly typical nerdy guy. RMS is more like that guy who you walk an extra block to avoid on the way to class because if he sees you he'll want to come over and put his smelly homeless arm on your shoulder and tell you his crazy drunken theories.

  104. Re:git by Just+Some+Guy · · Score: 1

    FreeBSD HEAD for /src checked out today is 6.2 million.

    $ find /usr/src -type f | xargs cat | wc -l
    13193911

    Now, I'm tracking -RELEASE and not -HEAD, so maybe they removed half the code for 7.0, but the 6.2 codebase is significantly larger than the Linux kernel.

    --
    Dewey, what part of this looks like authorities should be involved?
  105. Synchonizing a Team by bhav2007 · · Score: 1

    Since you seem to be an informed proponent of git, maybe you can answer the one question I wish someone would have asked Linus.

    Say you have a team of, as few as six, programmers coming in for work on Monday. They've all made changes to their codebase (over the weekend, they're dedicated). How do they all manage to get each others changes, and begin working with a completely up to date version? Do they pick someone to act as the centralized repository for that day?

    1. Re:Synchonizing a Team by jZnat · · Score: 1

      They all merge from each other and eventually end up with the same (or almost the same, but eventually the same) repository. Everyone can be up to date, or some people can stay behind to continue work on an area that isn't stable.

      --
      'Yes, firefox is indeed greater than women. Can women block pops up for you? No. Can Firefox show you naked women? Yes.'
  106. Re:git by Anonymous Coward · · Score: 0

    And it's even better when you need to control access to certain portions of the code. Odd statement considering it does not support ACLs.
  107. Re:how to learn git? - answer, don't! by FreshOuttaMaps · · Score: 1

    You have no idea what you are talking about, do you? No I don't, that's why I asked the question, asshole.
  108. I'm not holding my breath by lorcha · · Score: 1

    The SVN devs have known from the beginning that the lack of merge tracking constitutes, to use their verbiage, a "headache". For 5 long years, SVN's "Best Practices" solution was to track merges manually in the commit log messages. This "Best Practice" could be best described as, to use the technical terminology, "really fucking error-prone."

    Look, I like SVN, I use SVN, I hope they get merge tracking (and 'svn obliterate', as long as I'm creating my Christmas List) ASAP. My only point here is that the great-grandparent's claim, that "It's trivial to branch and merge in SVN", is a heaping, stinking load of crap, to use the technical term. You know it, I know it, CollabNet knows it, everybody knows it.

    I'm guessing that even sqlrob (173498) knows it.

    --
    "Avoid employing unlucky people - throw half of the pile of CVs in the bin without reading them." -- David Brent
  109. Linus doesn't get it, but that's OK by nanosquid · · Score: 1

    Linus suffers from a common misconception: if something doesn't work the way he wants it to, he assumes that it's no good. And if he adds a feature that he finds useful, he can't understand why other people might object.

    Fortunately, Linus's opinions on version control systems don't matter: there are lots of version control systems to choose from, and users just choose what works for them. I bet that's a lot more Subversion than git.

  110. Re:git by EsbenMoseHansen · · Score: 1

    I hardly believe I am alone in smiling when he spews out those one-liners
    It seems it's generally people from outside the nordic countries that get offended by him. Maybe it's in our mannerisms to say provocative things on purpose in order to emphasize our point.

    Heh. You could be right. I tend to do that myself, now that you mention it.

    --
    Religion is regarded by the common people as true, by the wise as false, and by rulers as useful.
  111. Re:Distributed version control gaining ground in F by Anonymous Coward · · Score: 0

    It is not as easy as what you recommended. We have 21 active codelines. Major interdependencies. I have been using Perforce for almost 8 years (ClearCase before that) and constantly get bombarded by developers wanting to use the latest cool SCM. A migration to another SCM would be a major undertaking. ACLs are a showstopper. A hook via an external program does not cut it.

    The idea of distributed (and out-of-band) development intrigues me. Git may indeed be a great idea for Linux development. For any significant commerical environment, I do not see how it can work. I have looked at others (darcs, merc bitkeeper). I am waiting for is a hybrid solution, that offers central repositories with distributed sandboxes that can be synced back to the server.

  112. wow, he doesn't know his history by nanosquid · · Score: 1

    CVS popularized concurrent versioning and many other ideas that we are taking for granted, and there have been distributed versions of it, too. Linus may think that git does everything different from CVS, but git owes a lot of its functionality to CVS.

    As for Subversion, it does support distributed development via svk, and I suspect that's going to get integrated into Subversion.

  113. Re:git by Anonymous Coward · · Score: 0

    I used 'sloccount' for all the numbers I reported. You can find a copy in ports. I should have mentioned that in my post.

  114. Re:how to learn git? - answer, don't! by gbjbaanb · · Score: 1

    Wouldn't it be safe to say that more platforms support C than Python?

    You have no idea what you are talking about, do you? Any platform that supports C also supports Python, unless you count really tiny ones that do not have enough memory. So therefore, what you're saying is that more platforms support C than Python.
  115. Re:Synchronizing a Team by bhav2007 · · Score: 1

    This solution seems chaotic to me. Now, instead of needing to pull all the changes from one central repository, I need to pull changes from the machines of all my co-workers individually? Wouldn't this system make it difficult to guarantee that each developer was integrating the work of the others? Also, it doesn't seem very scalable. What if I have 20 co-workers?

  116. SVN etc. by Tom · · Score: 2, Interesting

    He's right about CVS, and more or less about SVN. Except for one thing: Subversion works. Not only in the technical sense, but in the sense that you can work with it, you can easily explain it to new developers, there is integration into lots of IDEs, code editors and other tools and the list goes on and on. (last, but not least: Trac!).

    I used to be passionate about arch, for example. I'm fairly sure I would've been about GIT had it existed back then. But then I learned that to get real work done in the real world, the theoretical basis of your version control system matters little. If the system doesn't work for my developers - who like many projects are doing this for their fun and in their spare time - then it doesn't work, period. If I can't explain it to the boss at work, it won't get installed.

    And that's why Subversion is everywhere and arch is, where exactly?

    Now Linus is a man with his feet on the earth, so GIT may have a different fate. Wake me when Eclipse and Textmate have built-in GIT support and at least half of my potential developers know it.

    --
    Assorted stuff I do sometimes: Lemuria.org
  117. Re:Linus knows it. by bfields · · Score: 1

    In addition, git works well for simple projects but not so well for projects that have many different related subprojects which share code.

    Linus has written some very low-level subproject support, but at this point I think it's only interesting to very early adopters and/or people who can help hack on the higher-level infrastructure that'll be needed to make it usable.

  118. Re:Is it my imagination??? by Anonymous Coward · · Score: 0

    Yeah. Definitely not wacky or self-effacing.

    He would never do anything like, you know, appear on a stage dressed in a penguin suit.

    And any references to holy penguin pee are lies. Lies, I tell you !!

  119. SVN, Merge tracking, and TortoiseSVN by cypherz · · Score: 1

    Subversion 1.5 will have automated merge tracking. The merge tracking feature is already available on the trunk, and will be released in (probably) a couple of months. This link has more information:

    http://subversion.tigris.org/merge-tracking/index. html

    With the addition of the merge tracking feature Subversion will be almost at parity (feature wise) with commercial products like P4.

    Git may be a great SCM tool for some situations, but for commercial development which doesn't require a distributed architecture, IMO, SVN is preferable to Git.

    Git needs to be supported on more platforms and have a better user interface to be accepted as widely as Subversion.

    I must mention TortoiseSVN at this point, because until Git has a user interface like TortoiseSVN, it'll never be accepted by Windows devs. I'm not asking for trouble here (in other words, I'm not trolling Linux users), it's just that I looked at lots of alternatives for our (mainly Windows and UNIX-based) shop and nothing else came close. All of our devs use Windows, even if just to host a terminal program, and the ease of training folks on the use of TortoiseSVN was a big reason for our switch to Subversion.

    http://tortoisesvn.tigris.org/

    FWIW, I'm a UNIX/OS X/Linux guy myself.

    --
    This sig kills fascists.
  120. Re:Distributed version control gaining ground in F by locofungus · · Score: 1

    The distributed system is basically a centralized system where EVERY COPY HAS FULL REVISION HISTORY.

    No. The fundamental feature of a distributed VCS is that you can ALWAYS commit your current state and get back to it.

    Once you have this feature, any centralized VCS can trivially be converted into a DVCS because on every commit you _DO_NOT_CARE_ what anybody else might have done to the repository.

    Infact, the problem that DVCS have to solve is that they do NOT have a full revision history because if you commit to the trunk in your repo and I commit to the trunk in my repo we are both completely oblivious to the other commit until we merge (my statements above immediately follow from this)

    Tim.

    --
    God said, "div D = rho, div B = 0, curl E = -@B/@t, curl H = J + @D/@t," and there was light.
  121. Re:Lemme check my last home appraisal... by Anonymous Coward · · Score: 0

    I agree with you for the most part, but a few things:

    VSS does have branches (thank god I no longer have to remember if they where called that or something else). It's just a crapshoot whether they'll finish after about half a day, or corrupt the repository instead.

    Also in my experience, locked files didn't cause work to stop, it just pushed it outside of source control. That did of course cause delays when the files were eventually unlocked and you were stuck manually merging in your changes.

  122. Re:Is it my imagination??? by SETIGuy · · Score: 1

    Flamebait? Gee, I should know better than to make jokes.

  123. Re:Distributed version control gaining ground in F by Black+Acid · · Score: 1

    This isn't always possible. The company I worked for produced software that ran on medical instruments, unable to access the network for security reasons. You couldn't use centralized version control because you couldn't access a central server.

  124. Re:Distributed version control gaining ground in F by Black+Acid · · Score: 1

    That's a valid concern, but the flipside is that DVCS allows you to commit early, and commit often. I often make small changes in my code, trying out different things, adding a function here, and it is not crucial for other developers to see these small changes immediately. However, they do see the changes -- every one of them, committed individually as I made them -- when I push to the server once I'm done working on a certain feature for the time being (at least once a day).

  125. He gets it, but "it" isn't what you think it is by Wee · · Score: 1
    Linus suffers from a common misconception: if something doesn't work the way he wants it to, he assumes that it's no good.

    He went into this at the talk (and for a bit afterwards, when the cameras were off): To Linus, it's not that CVS and SVN don't "work the way he wants them to", they're fundamentally flaw in their designs. He's all about the distributed model vs. the centralized repository. In fact, his tech talk was more about the design rationale behind git as it was git itself. He simply thinks that the repository model is the absolutely wrong way to go about SCM.

    He liked bitkeeper, and that whole fiasco caused him to look for options. He found none, and decided to implement his own. While he was doing that, he thought he'd throw in a few new ideas that he liked.

    So it's not just about them not working right, or nobody liking a certain feature. To him, there simply wasn't anything out there that met his needs, so he wrote something himself. Kinda like, well, Linux.

    Anyway, even though I'll not likely ever use git, it was cool to see him. He's certainly got some opinions...

    -B

    --

    Ash and Hickory, straight-grained and true, make excellent bludgeons, dandy for the cudgeling of vegetarians.

    1. Re:He gets it, but "it" isn't what you think it is by Anonymous Coward · · Score: 0

      To Linus, it's not that CVS and SVN don't "work the way he wants them to", they're fundamentally flaw in their designs.

      There is a bit of circular logic here. It doesn't do what he wants because it has a fundamental flaw in design, and it has a fundamental flaw in design because it doesn't do what he wants.

      There is no fundamental flaw in Subversion's design. Its design was chosen on purpose. It is just a different design than Linus wants. There are flaws in Subversion, mind, but they are not fundamental and they are not not in the design.

  126. Partial checkout by Anonymous Coward · · Score: 0

    Yeah, what git calls subprojects is a very recent feature, and I haven't played with it yet. But unless you set it up by hand, it's all or nothing. But git's packs are very compact. Two years' worth of linux kernel history is 189448 K. A single checked-out version, after compiling to object files, is 357492 K.

    And given that all-or-nothing, you can do everything locally without needing to access a central server. And incremental updates are fast.

    (It turns out to be non-trivial to do incremental updates of incomplete downloads. Being able to say "I already have this version, and everything before it" is very concise and powerful.)

  127. Done smoking that pipe by Anonymous Coward · · Score: 0

    that is Linus' dick?

  128. Re:git by bfields · · Score: 1

    The thing is, Linux is actually a pretty small project.

    OK, distributions (with FreeBSD essentially is) inherently have more lines of code. Compared to projects working on a single piece of software, Linux isn't that small. And it has a big active developer community, so the tree sees lots of commits.

    Much larger projects would include FreeBSD, which uses CVS not only for the kernel but for every line of source of the entire OS. Now, Linus is a smart guy, but I don't know why he thinks CVS (and SVN by extension) won't work for large projects. It clearly can. It may not be suitable for the way he wants to run his project, but that's a different issue.

    Hm. I've been managing to mostly avoid CVS recently, but a few years ago we tried developing with a linux kernel tree in CVS. My memory is that some operations that should have been nearly instantaneous (cvs update to fetch the latest version, cvs diff to compare two historical versions of the tree) were painfully slow.

  129. Re:Distributed version control gaining ground in F by SnowZero · · Score: 1

    I guess my question was more along the lines of "what sort of policies do you need to enforce with ACLs". Such as "a developer can only check-in under a certain subdirectory", or a certain file, or whether you need to be able to prevent developers from even reading certain subdirectories... I ask because I participate in the mailing list for an actively developed DSCM; If there's a single feature that is keeping it from being accepted in the corporate environment, the developers would like to know. From an implementation standpoint, write restrictions are relatively easy for a DSCM, while read restrictions would require more work. Several DSCMs are working on the concept of nested repositories / super-repositories as well, with some of the same usage cases as goals that ACLs might otherwise be used for. The more feedback on whether that could be useful, the better.

  130. Re:git by Raenex · · Score: 2, Insightful

    So long as he remains consistent, even-handed, and not ad-hominem, it's OK. He has remained consistently even-handed in being ad hominem. Calling people who disagree with you morons is ad hominem. Calling them ugly and stupid is ad hominem. You can tear somebody's design apart without insulting their intelligence or character.

    Somtimes he does this and tries to make a joke out of it, but more often than not you can see the real venom shining through.
  131. Well.. he right about Subversion, anyway. by sudog · · Score: 1

    Oh well.

  132. Re:git by HRogge · · Score: 1

    See the video again... you don't need ACLs in GIT because it's a "pull system". Instead of giving someone access to "your repository" (let's say you are the coordinator of a large software project) YOU decide from which people you pull... you can do it based on a web of trust ("I know this guy, he produce good code !"), on corporate politics ("I only pull from the department chief programmers") or even on a case by case decission ("Damn, this smart guy from the user interface team explained me the bug in the network code and how he fixed it... I should have a look at this code.").

  133. OT: Linus' attitude by SpaghettiPattern · · Score: 2, Insightful

    I watched the video and was baffled by Linus' attitude.

    The guy is bright on technology but what he calls strong opinions I -and almost any business person- should call them shortsighted opinions that do not appreciate other people's way of doing things.

    Saying stuff like "Those of you that like SVN would probably want to leave the room. Because it's crap too." is very stupid. I for one like SVN. It's good enough for my purposes and it sure beats quite a few commercial tools I've seen. But I sure want to know hear Linus' thoughts on the topic. Mainly because different ideas keep my mind fresh.

    --

    I hadn't the slightest objection to his spending his time planning massacres for the bourgeoisie... (P.G. Wodehouse)
    1. Re:OT: Linus' attitude by cgreuter · · Score: 1

      Saying stuff like "Those of you that like SVN would probably want to leave the room. Because it's crap too." is very stupid.

      I think it's pretty clear that Linus was deliberately being over the top here. That is, rather than tip-toeing around his (low) opinion of other SCMs, he made a joke of it and called their developers ugly and stupid. That seemed pretty clear from both his manner and the audience's reaction.

      However, the blogger who embedded the video appears not to have gotten the joke. Neither, it seems, have quite a few Slashdot posters.

  134. Re:how to learn git? - answer, don't! by Breakfast+Pants · · Score: 1

    He said: C supports more platforms than python. You said: You have no idea what you are talking about; C supports more platforms than python!

    --

    --

    WHO ATE MY BREAKFAST PANTS?
  135. Re:Synchronizing a Team by Tacvek · · Score: 1

    This solution seems chaotic to me. Now, instead of needing to pull all the changes from one central repository, I need to pull changes from the machines of all my co-workers individually? Wouldn't this system make it difficult to guarantee that each developer was integrating the work of the others? Also, it doesn't seem very scalable. What if I have 20 co-workers? The key here in Linux is the existence of the "official" repository, managed by the project leader. Code is not Official until it gets merged in there. Most people will be working on modifications to the official repository. So people always keep updating against that, and they eventually get everybody else's changes that have been approved. As long as people are not developing mutually exclusive features this generally works. It is great for Linux's development model. It might not be ideal inside a business. But git does gave support for centralized repository style SCM if desired.
    --
    Stylish sheet to fix many problems in Slashdot's D3: https://gist.github.com/801524
  136. Re:Well.. he right about Subversion, anyway. by sudog · · Score: 1

    .. and now that I've watched the entire thing, start to finish, and wrote a near-complete transcript of it, Linus gets tonnes of things wrong. Oh Linus.. why did you have to begin spewing such diatribes about stuff you visibly know nothing about? Talking about Git is one thing, but then to claim that other products don't do the stuff git does? Sigh. I mean really.. narrowing down changesets to a single directory? Pulling a report of what's changed between two dates or two revisions, narrowed to a single directory or set of directories? Everyone can do that! And you went on for like.. two minutes about how tremendously powerful that ability was, claiming that you "guarantee" that no other system can do that.

    Sooo disappointed at how little research you've done.

  137. Re:git by Anonymous Coward · · Score: 0

    So do ACs.

  138. Re:git by smittyoneeach · · Score: 1

    By ad-hominem, I mean using unique venom. Calling everyone in the room at Google 'morons' isn't ad hominem. Saying that, oh, Andrew Morton is the 'biggest lobotomy evar', or some other unprecidented slam, would be ad hominem.
    Of course, I'm probably a collosal 'tard for tweaking the mean of 'ad hominem' like this, as I tend to think you're right.

    --
    Get thee glass eyes, and, like a scurvy politician, seem to see things thou dost not.--King Lear
  139. linus is remarkably rude by sentientbrendan · · Score: 1

    I used to think that he was always joking around when he called people idiots whenever they disagreed with him... I used to think it was all a bunch of tongue in cheek bravado (partially because that's the sort of sense of humor I have). However, I was talking to one guy who got chewed out by him before, and it turns out he's usually pretty serious.

    I suspect that this is the sort of thing you see mostly in open source projects, where some people, like Linus, are their own bosses and egos get big. I haven't been in the industry that long, but most of the developers I've met are pretty polite and measured.

    That said, Linus is pretty bright, and when he's bitching someone out he usually manages to put together a pretty compelling argument of why they're wrong. I usually agree with him more often than not, even if I would explain it without calling anyone an idiot.

  140. Nope, Linus never contributed by Anonymous Coward · · Score: 0

    According to Nathaniel Smith Linus only provided the test cases to help
    them find a speed bug:
    http://www.mail-archive.com/monotone-devel@nongnu. org/msg08143.html

    - Peder

  141. Re:Lemme check my last home appraisal... by wezeldog · · Score: 1

    Right. A consultant that comes in and FIXES things...

  142. Re:Distributed version control gaining ground in F by Nevyn · · Score: 1

    Cheap branches? Subversion has cheap branches.
    Better merging? This is a result of algorithms has nothing to do with whether the system is centralized or not.

    If you're on a fast net with the server you can commit as often as you like. If you can branch/merge easily it's no problem.

    If you want to cite advantages for decentralized version control it might be more like:

    If you have to talk to a server over slow links, decentralized is much better

    As Linus said in the talk, when people say they want "cheap branching" what they really want is also "cheap merging" ... SVN has the former, which is worthless on it's own. If "fixing merging" in SVN was "just a matter of fixing the algorithms" why have the SVN/CVS developers failed to do it in the last 10/5 years? The reason is that how difficult the algorithms are depend on your storage model ... and the CVS/SVN storage models are broken. Also, even at GigE speeds, talking over the network is significantly slower than talking to the HDD.

    Also I'd like to live in your world where you always have fiber type speeds to your central repo. ... and neither the network or the machine itself ever goes down. Don't forget about when I've just taken a plane flight to X, which is 1,000s of miles from where I normal am. But however much I'd like to, I don't live in that world ... and I find it hard to believe that I'll live in that world in my lifetime.

    I've also had to "contribute" to more than one "project"[1] using a CVS/SVN repo. where I didn't have commit privs. ... I find it hard to believe anyone who has lived through this pain could argue that it's a good idea, or helps anyone. So you must also be extremely lucky in that regard. You apparently live a blessed life.

    [1] Project here isn't codeword for OSS, this is exactly as painful in CVS/SVN/clearcase/perforce/etc. inside a company.

    --
    ustr: Managed string API with ave. 44% overhead over strdup(), for 0-20B
  143. Logic and rationale in *your* argument? by ftide · · Score: 1

    >> I'm one of the original designers/developers of Subversion, and even we (in the svn developer community) are well aware of both sides of the coin. We're seriously considering adding decentralized features to svn 2.0.

    Sounds to me like what this community is proposing is evolutionary changes in version tracking and SCM, away from the prima donna model of one guy at his terminal behind the wall.

    This work won't be accomplished in a new version of git, but over several lifecycles and updates to the core routines that define what version update routines are and how they operate in a distributed environment.

    >> We've also added true merge-tracking magic to the imminent svn 1.5 release (so svn is no longer "hand waving" merges, they'll be just as simple as in decentralized systems.)

    "Magic"? You must understand sussman, there is nothing simple about merges within and without the use of decentralized systems. What I just said is the reason they're decentral and are operationally redundant in manner of time and place. The reason distributed connections should be able to handle co-dependent nodes in decentralized ways is to beat the central office model. The reason we want to beat the central office model is whenever someone takes repository A offline or makes line edits under the old framework of subversion and CVS, everyone else loses their work.

  144. rubbish by doug · · Score: 1

    If we could check out lines of code, there would be no need for merging. What complete nonsense. The merge process would be different, but something is going to have to order these lines serially. When a new line is added, exactly where does it get injected? Well, that sounds like a merge to me.

    My day job is a clearcase administrator, so I have seen more than my fair share of merges. I'd love to get rid of them, but this isn't going to do it. Not even close.

    - doug
  145. Re:git by rubycodez · · Score: 1

    dude, wc -l counts blank lines and comments

  146. Actually, don't bother... by Trillan · · Score: 1

    I found the information I needed.

  147. No he didn't. by Anonymous Coward · · Score: 0

    Nothing that Linus did in the development of linux was new or groundbreaking. Who had the first ever public, anonymous CVS server? Oh yeah, that would be openbsd. Linux may not be as closed as some projects, but it certainly didn't lead the way in open development models.

  148. Re:git by Anonymous Coward · · Score: 0

    Linus and Git are two discrete things. The validity of one does not depend on the other. So, keep them separate.

    Are you here to attack Linus or Git? Pick one. Attacking Linus does not make your arguments against Git any more valid.

  149. Re:Merging *does* suck (perforce, alien brain) by SirSlud · · Score: 1

    We just moved to perforce. From alien brain.

    You want to test a code management system? Try working at a games company. We're not just talking programmers (or code) here. We're talking versioning artistic assets, the works. Many people who use the system are not programmers (programmers are a small part of any video game .. tons of modelers, animators, texture artists, designers, illustrators.)

    Combine that with the fact that you have to produce stable builds 60 days after you start the project, one a month, for a few years .. compiled for multiple hardware (ps2/gc/wii/xbox .. any combination, depending on the game) and to me, its a crazy test on code management software.

    Alien brain was madding as hell when it came to anything more than checkouts, checkins. Perforce has a really nice command line interface, and a decent (but not as good as alien brain) gui.

    The thing I will miss from Alien brain is that you could create a custom layout locally of the gui, much like Visual Studio (although clunkier.) The thing I'm looking forward to in perforce is atomic change sets and from what I understand so far from my limited use of it, decidedly better branching. I bet dollars to donuts that our artists like Alien Brain more, but p4 seems far more capable of the tools you need to keep the build stable.

    --
    "Old man yells at systemd"
  150. Re:Distributed version control gaining ground in F by Harik · · Score: 1

    ... and the non-networked medical instruments had a functioning development suite on them? Bzzzt. You develop on a networked PC and load the software/firmware to the instruments via whatever means. If the medical instruments have a PC controlling them, you throw a goddamned nic card in your development box.

    Or are technicians supposed to say "whoops, I can fix that glitch!" as they're examining someone, drop out of the exam, fire up the IDE, fix the bug, re-start the program and complete examining the patient?

    Yeah, didn't think so.

  151. Re:Distributed version control gaining ground in F by Black+Acid · · Score: 1

    Yes, in some cases we (not me, I was just a contractor) loaded development tools, including an full IDE, onto the medical devices for development. The devices that go out to the customer do not have these tools loaded, of course.

  152. Re:Distributed version control gaining ground in F by StrawberryFrog · · Score: 1

    If you have to talk to a server over slow links, decentralized is much better

    I have recently used SVN and Microsoft TFS, and in this respect SVN is a clear winner since it keeps version history locally, and you only need to connect when getting or committing updates. I've done work on a laptop on a train with no network at all. SVN didn't bat an eyelid. TFS, by contrast, throws a hissy fit if it can't get to the version server.

    --

    My Karma: ran over your Dogma
    StrawberryFrog

  153. Sure you can. In theory, anyway. by Medievalist · · Score: 1

    Can you give brand-new interns commit access to your core system? Well, theoretically, yes. Because theoretically you have code review and regression testing and auditing and the ability to revert to any point in the development process, and because theoretically you only hire incredibly competent folks who will only recruit marvelously talented interns.

    Of course, in theory, there's no meaningful difference between theory and practice, but in practice, there is.
  154. Re:Synchronizing a Team by Paradox · · Score: 1

    This solution seems chaotic to me. Now, instead of needing to pull all the changes from one central repository, I need to pull changes from the machines of all my co-workers individually?


    Well sure it seems chaotic and different because you're not used to the idea. Assuming you're working with just 1-5 other people, it's a fairly simple cognative load. Heck, you'd probably even script it, so it'd just happen.

    I submit to you, the reader, that the subversion method is pretty chaotic too. Because of the "Thunderdome" style of launching all patches into trunk without regard for if the build works, it can be really unclear if your checkout works, has passing tests, or any other thing. All you can do is hope the logs are accurate. And this assumes you have the patience to wait for SVN to tell you these things, given how slow it can be.

    To me, that's one of the worst case scenarios. Because responsibilities are often delegated in this kind of situation, you seldom have any idea about the code that's being worked on "over there." So if it breaks in a reasonably-sized project, you're somewhat screwed.

    Wouldn't this system make it difficult to guarantee that each developer was integrating the work of the others?


    There is almost exactly the same amount of integration work. The difference is that you can defer it, or foist it off on other people. These other people may find a merge that baffles you to be utterly trivial.

    Also, it doesn't seem very scalable. What if I have 20 co-workers?


    Actually, it works fine. What you do naturally with such a large group is that you begin to delegate. You say, "It's Alice's job to get everyone's patches for this component, and she, Bob and Carlyle with be working on that part." Their patches feed up through her, and then you pull from Alice, confident that she's dealing with that part of the software.

    Obviously git scales to the large-delegated-group solution, that's where it's being used to greatest effect (i.e., the linux kernel).
    --
    Slashdot. It's Not For Common Sense
  155. Is there working alternatives by Anylo76 · · Score: 1
    If I'm in charge of a software project which contains +22k files and I would like to have SCM which is
    • distributed (hundreds or even thousands developers working same time, multiple dev teams working on different modules etc)
    • reliable and secure (I'm releasing versions quite often and those releases have to work)
    • fast (I have better things to do than wait)
    what alternatives do I have?