Slashdot Mirror


Git Adoption Soaring; Are There Good Migration Strategies?

Got To Get Me A Git writes "Distributed version control systems (DVCS) seem to be the next big thing for open source software development. Many projects have already adopted a DVCS and many others are in the process of migrating. There are a lot of major advantages to using a DVCS, but the task of migrating from one system to another appears to be a formidable challenge. The Perl Foundation's recent switch to Git took over a year to execute. The GNOME project is planning its own migration strategy right now after discovering that a significant majority of the project's developers favor Git. Perhaps some of the projects that are working on transitions from other mainstream version control systems can pool their resources and collaborate to make some standardized tools and migration best practices documentation. Does such a thing already exist? Are any folks out there in the Slashsphere working on migrating their own project or company to a DVCS? I'd appreciate some feedback from other readers about what works and what doesn't."

346 comments

  1. Git links by Anonymous Coward · · Score: 4, Informative
    1. Re:Git links by Bananenrepublik · · Score: 4, Interesting

      whygitisbettertanx.com claims that mercurial doesn't have cheap branching -- the only advantage he sees git having over hg if leaving aside github. I'm surprised by this statement because I use hg branches everyday. The things he describes can all be done straightforwardly with hg, so I'm asking: can anybody in the know tell me if and how git branches are in any way more powerful than hg branches?
      FTR I love hg, and I see no reason to switch to git, even though the whole bandwagon movement seems to have jumped on the git train.

    2. Re:Git links by Anonymous Coward · · Score: 4, Insightful

      If you love Hg, there are no strong reasons to switch to Git. None whatsoever. In the same coin, if you love Git, there are no strong reasons to bother switching to Hg, either. Both are *really good* at what they do, and they do it very well. Unlike, say, SVN, which really is for the i'm-too-dumb/lazy-to-use/learn-something-better crowd.

      And it is *trivial* to learn to use both git and Hg at the same time if you already know one of them, so you can work properly on projects that use either one without much fuss.

      That said, git is evolving a lot faster than Hg. Which could be a reason to either avoid git over Hg, or to avoid Hg over git, depending on your own view of such matters :-)

    3. Re:Git links by grumbel · · Score: 5, Informative

      Some things git is bad at:

      - no of partial cloning, so a big history means lots of stuff to download, this is especially bad when it comes to binary files
      - no way to download just a single file or directory, a user always has to clone the whole repository

    4. Re:Git links by Anonymous Coward · · Score: 0

      Agreed. Those are by far the biggest issues I have personally faced. We have some very large projects (at least 20 times the size of the Linux kernel repository) and pushing the entire history to every developer is not workable. As you mentioned, binaries make it even worse as we often attach the "release" branches to a binary build that goes out to customers.

      For typical corporate development I still think a centralized repository is best.

    5. Re:Git links by Anonymous Coward · · Score: 0

      I expected to find out how Git would be able to replace the X Window System.

    6. Re:Git links by Drinking+Bleach · · Score: 3, Informative

      For problem one: git clone --depth 1 (or however far back you want your history to go); note this severely cripples git's abilities and isn't very useful at all unless you're on dialup still.
      For problem two: this isn't a real problem with git, but rather with your organization. Multiple projects don't belong in the same repository, it's as simple as that.

    7. Re:Git links by grumbel · · Score: 4, Informative

      Problem two *is* a problem with git, it has nothing to do with how you organize a project, since you can never guess what a user might want. Simple example: I would like to look at the latest version of a file in the linux kernel, with git I have to download the whole beast when all I want is a single file, which is neither pretty nor fast.

    8. Re:Git links by bheading · · Score: 2, Insightful

      What you're supposed to do in Git is organize your source code into submodules. This takes very little effort, but you have to do it when you migrate.

      SVN does let you check out subdirectories, but that is a strength which is perversely afforded by one of its main limitations. SVN does not track the state of the repository globally. Of course, if you want to track the whole repository state, then you cannot allow people to modify subdirectories independently.

      I do typical corporate development, and I don't think centralized repositories are best. I love being able to create my own independent sub-project and ask other developers to contribute to it. What possible reason would there be to not have that functionality ? You do need development and delivery processes to govern where people do work and where it is delivered to, but you'll need those irrespective of which SCM you're using.

    9. Re:Git links by benji+fr · · Score: 1

      Problem two IS a real matter in many projects, it looks like you never had a project divided into smaller chunks...

      very simple example : one folder for the code, one for the graphics, one with the html/css stuff and so on...

      Thanks for this warning : for me this is a very strong argument against git !

      --
      -- .rats live on no evil staR
    10. Re:Git links by bheading · · Score: 2, Interesting

      That is a fair point - git isn't good for looking at isolated parts or individual files in a repository. But I see it really as a matter of optimizing for the common case. Normally, I need to see the whole repository. Normally I don't need to just look at one file. Git will checkout an entire repository along with all the history faster than SVN will, in the tests that I did.

      BTW if I just want to look at one file in Git I use the web interface. That gets around the problem by querying into the main repository.

    11. Re:Git links by Drinking+Bleach · · Score: 3, Informative

      I hadn't really thought of that, I had assumed you were referring to Subversion's rather common case where multiple projects are stored in the same repo, and you checkout different directories to access one of them.

      Anyhow, most, but not all, public git servers have a gitweb or similar attached, which will at least let you browse and download files from the tree if you need to. For example, grabbing the latest README of Linus' Linux tree can be had via http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob_plain;f=README;hb=HEAD

      Git itself doesn't provide any mechanism for it, however, but it's fairly unusual to be interested in a specific file rather than the entire project.

    12. Re:Git links by Anonymous Coward · · Score: 1, Interesting

      Git works great for small project, no doubt. Not so much for very large projects. You obviously don't work in a corporate or government environment with large projects. Our projects are broken into submodules (independent SVN repositories currently) and that's what I was talking about. Some of our submodules are 20 times bigger than the Linux kernel and there is no way to subdivide them more than that. Our source base really is that big.

      In fact, I would argue that your suggestion to create many submodules is a weakness of Git. Lots of submodules just makes things even more complicated.

    13. Re:Git links by Drinking+Bleach · · Score: 1

      If your needs are so drastic, just split it into multiple projects for each team. You can tie them all together via submodules to make a meta-project git to clone when someone really wants it all.

      Really not an argument against git, you're just not thinking hard enough.

    14. Re:Git links by tg2k · · Score: 1

      SVN does not track the state of the repository globally.

      Did I miss something? What are peg revisions for then? In the TortoiseSVN UI I can just type in the global revision number and browse the repo at any given point in time.

    15. Re:Git links by maxume · · Score: 2, Informative

      Unless you are intensely involved in a project, browsing for the single file using some alternative interface is probably going to be easier. I.e.:

      http://github.com/github/linux-2.6/tree/master/kernel/fork.c

      That doesn't work if the repository doesn't have an alternative interface though (but for projects you are involved in, the download only needs to be the difference between the internal and external repositories, not the entire history).

      --
      Nerd rage is the funniest rage.
    16. Re:Git links by Entrope · · Score: 1

      git has good support for projects that are built from smaller chunks -- these are called submodules. Splitting an existing project into smaller chunks after the fact is where git becomes a bit annoying.

    17. Re:Git links by Lennie · · Score: 1

      For problem two, that's what webinterfaces are for.

      --
      New things are always on the horizon
    18. Re:Git links by Anonymous Coward · · Score: 0

      I'd like to see a comparison of tooling from HG and GIT. They seem to be about as good when it comes down to core features but unlike svn, they don't have a myriad of graphical tools, eclipse and netbeans plugins to integrate them into development.

    19. Re:Git links by Anonymous Coward · · Score: 5, Insightful

      Unlike, say, SVN, which really is for the i'm-too-dumb/lazy-to-use/learn-something-better crowd.

      I'm part of the "SVN is working just fine" crowd. If you want people to switch, being a condescending asshole is generally a great way to prevent that and make them more entrenched.

      Frankly, no one, including yourself, ever mentions a reason WHY I should switch. I think you should eat pickles for breakfast! Why? *silence* ... dumb ass.

      Until this article, I didn't even know it was a distributed system. I'm still not sure why I should care. I haven't cared enough to look into git because I'm busy, my time is important, and SVN works flawlessly for me. As far as I know, you're just the type of person that needs a high performance sports car to drive back and forth to work.

      So, the next time you're trying to convert people to your new religion by calling them imbeciles, you might want to consider throwing in at least ONE selling point before your vanishing attention span drags you off to a new shiny. K? Thx

    20. Re:Git links by bob.appleyard · · Score: 0, Flamebait

      Frankly, no one, including yourself, ever mentions a reason WHY I should switch. I think you should eat pickles for breakfast! Why? *silence* ... dumb ass.

      This thread began with a link to a site listing reasons.

      Maybe people are condescending to you for a reason?

      --
      How dare you be so modest!! You conceited bastard!!
    21. Re:Git links by Bromskloss · · Score: 3, Interesting

      For problem two: this isn't a real problem with git, but rather with your organization. Multiple projects don't belong in the same repository, it's as simple as that.

      I have been wanting to start with Git, but I find it too hard to know what should go into different repositories and what should be in the same.

      First example: I might be writing a book in book/ and keep all images in a subdirectory book/images/. I think it is not far-fetched that I might want to work on only the images without downloading all the other, possibly huge, subdirectories.

      Second example: Say I write a scientific article for which I compute a lot of numerical data. Then I write a second article, which builds upon the same data. Should the two articles go into the same repository, so that I can easily pull and compile everything at once with all dependencies in place, or should they be kept separately, so that I can work on the first article without dragging the other one along?

      --
      Swedish plasma phys. PhD student; MSc EE; knows maths, programming, electronics; finance interest; seeks opportunities
    22. Re:Git links by Anonymous Coward · · Score: 0

      Guess what? Nobody gives a shit what you use, or is trying to convince you of anything.

    23. Re:Git links by Anonymous Coward · · Score: 0

      Frankly, no one, including yourself, ever mentions a reason WHY I should switch. I think you should eat pickles for breakfast! Why? *silence* ... dumb ass.

      This thread began with a link to a site listing reasons.

      Maybe people are condescending to you for a reason?

      When was the last time you walked into a retail store and a salesman handed you a brochure and said "I'll be at the register if you need me." Shouting RTFM is the second most ineffective way to sell your technology next to calling potential converts imbeciles.

      Meanwhile, you have some pretty smart people with undisputed +5 mods for essentially saying git sucks balls for real development. So, I think I'll continue using SVN and subclipse while you feel superior because you know all the command line options to an esoteric vcs that would only waste my valuable time.

    24. Re:Git links by 644bd346996 · · Score: 1

      A post saying essentially "eclipse doesn't know how to use git" does not equate to "git sucks balls". If anything, it's a commentary on Eclipse, as it is completely unreasonable to expect the developers of a version control system to create plugins for popular IDEs. I'm sure that if Eclipse's design was such that it was easier to create version control plugins, (perhaps by making it more vcs-agnostic) there would be git plugins on par with what's available for svn, as git clearly exposes all the functionality needed to create such a plugin.

      On the other hand, it could simply be a commentary on the types of programmers that use the various tools. Given that Eclipse is a heavily Java-oriented system, and that git was created by Linus for Linux, I think it's clear where you fit into the hierarchy.

    25. Re:Git links by 644bd346996 · · Score: 1

      Git is designed for use in developing software - specifically, keeping track of source code. The needs of the people actually writing and compiling code takes precedence. That explains why git isn't the greatest tool for delivering software to users.

      If you're dealing with big binary files that change frequently, you aren't developing software. You're an artist. You shouldn't be using a tool that's made to assist with things like branches and merges, because those can't be done in an automated fashion for art. Besides, When you're testing software, how often does it really matter if you have the latest-and-greatest textures loaded? (If by chance, you are developing software, you're doing it wrong. Git is for the source code, not the binaries.)

    26. Re:Git links by davebaum · · Score: 2, Informative
      Git and Hg branches are actually quite different. In Git, a branch is just a pointer into the DAG of changesets. If you are "on" a branch and commit, the pointer is moved to the new changeset. But you can manipulate that pointer arbitrarily and point it at any changeset. These pointers are local to a single repository, although I think you can map them so that branch X in repo A corresponds to branch Y in repo B, etc.

      In Mercurial, every changeset is marked as belonging to a single branch (the default is a branch named "default"). This marking happens at commit time and cannot be changed afterwards (short of creating a new commit). Typically a changeset inherits the branch name of it first parent, but you can always mark it differently before the commit. So instead of a branch being a pointer to a single changeset, it actually identifies some subset of the DAG, and when you refer to a branch you are asking Hg to figure out the tip of the DAG subset marked with that branchname. Note that since the branch name is recorded internal to the changeset, it remains the same for all clones of the repository.

      Personally, I think the git mechanism is more flexible, but the hg mechanism suffices just fine for basic use cases, and leads to fewer surprises among new users.

    27. Re:Git links by Anonymous Coward · · Score: 0

      A post saying essentially "eclipse doesn't know how to use git" does not equate to "git sucks balls"

      It does if your primary dev tool is Eclipse.

      If anything, it's a commentary on Eclipse, as it is completely unreasonable to expect the developers of a version control system to create plugins for popular IDEs.

      Where there is demand, there is generally supply. Given the difficulty for creating a plugin should be roughly equal, there simply appears to be more demand for SVN than git.

      Given that Eclipse is a heavily Java-oriented system, and that git was created by Linus for Linux, I think it's clear where you fit into the hierarchy.

      Right, java programmer. Calling java programmers stupid because they don't run software that is broken/incompatible/unsupported with the most popular java IDE available indicates OP has some serious people skills.

    28. Re:Git links by fahrbot-bot · · Score: 2, Interesting

      it's fairly unusual to be interested in a specific file rather than the entire project.

      Except if one is simply reviewing a specific file or files - for a code review, debugging, or copying pieces to another project. I do this all the time when helping others on their projects. I don't need (or want) the whole hot-mess...

      --
      It must have been something you assimilated. . . .
    29. Re:Git links by MikeBabcock · · Score: 1, Flamebait

      So you would consider the Kernel or Gnome to be small projects? Just checking.

      --
      - Michael T. Babcock (Yes, I blog)
    30. Re:Git links by Cyberax · · Score: 1

      In defense of SVN: it works VERY WELL with large files. We keep hundreds of gigabytes of drawings/photos/designs in SVN without any problem.

      Hg/git _suck_ at handling large binary files.

    31. Re:Git links by Anonymous Coward · · Score: 0

      Apparently you don't interact very much with open source developers (or maybe you don't interact very much with anyone? i don't know), but the vast majority of them that i have spoken with talk as if they believe that they have superior intellect and knowledge over most everyone else, and that if you don't believe absolutely every word they say as if it is gospel, then you are retarded.

    32. Re:Git links by HeronBlademaster · · Score: 1

      Unlike, say, SVN, which really is for the i'm-too-dumb/lazy-to-use/learn-something-better crowd.

      It's also for the I-develop-in-Windows-and-git-isn't-ready-for-Windows-yet crowd. Not everyone wants to use cygwin or msysgit, especially when the developers you're working with have a hard time with anything not GUI-fied. There's a reason TortoiseSVN is so popular.

      Don't act like Subversion is only for lazy idiots. Subversion has its place, as does Git.

    33. Re:Git links by Elektroschock · · Score: 1

      Look, there was also a transition from CVS to SVN and SVN was designed to adapt to user expectations. If the future is Git, so be it. For most users a versioning system has to serve very limited purposes.

    34. Re:Git links by Anonymous Coward · · Score: 0

      Right, because the http://whygitisbetterthanx.com/ link in the ggp doesn't mention advantages.

    35. Re:Git links by Anonymous Coward · · Score: 0

      Both are possibilities for GSoC projects this year.
      http://git.or.cz/gitwiki/SoC2009Ideas#head-2cdf2f7bd7667427d1e20c714ca33bd92aaa4905

      Fortunately, git's design is flexible enough to handle both without much difficulty, but it could be a bit of a nuisance; it'd involve being able to punch holes in the repository and intelligently work around them and fill them in as-needed.

    36. Re:Git links by Anonymous Coward · · Score: 1, Funny

      [...] the developers you're working with have a hard time with anything not GUI-fied.

      Okay, fine, Subversion is only for lazy idiots and their coworkers.

    37. Re:Git links by EsbenMoseHansen · · Score: 4, Informative

      In case you were looking for answers rather than abuse: I have used both. For me git does what svn does, plus the following in order of most important first.

      1. Locals checkins, that is, you can check in even if offline (on the train, net down, whatever) and you can commit without the rest of the developers getting it. The latter is nice if, say, you have to write an email first to tell the other developers first.
      2. If you want to checkout your code on some meaty machine to test, without pushing the commit to the central server just yet
      3. Have a full tree locally, which means that history dependent operations works offline and fast
      4. Local branches - the advantages is quite obvious

      Of course, this is for me, and all points might be irrelevant for you.

      --
      Religion is regarded by the common people as true, by the wise as false, and by rulers as useful.
    38. Re:Git links by Anonymous Coward · · Score: 0

      Show me ANY source code control system that can merge two changes to a photo.

      No source code control system works very well with large binary files. You may be able to add the file to the repository, but the system will not do any of the things a source code control system is designed to do.

    39. Re:Git links by mcvos · · Score: 1

      I'd like to see a comparison of tooling from HG and GIT. They seem to be about as good when it comes down to core features but unlike svn, they don't have a myriad of graphical tools, eclipse and netbeans plugins to integrate them into development.

      Exactly. I don't know about Hg, bit git's biggest shortcoming is the lack of good graphical tools. There are plenty of tools, but they all either suck, or they're woefully incomplete. The command line interface is brilliant, and I use it for everything except double checking my commits and doing line-by-line commits instead of committing an entire file. git-cola is a great tool for that, but it lacks lots of other vital functionality.

      I'm very happy with the combination of command line + git-cola, however.

    40. Re:Git links by mcvos · · Score: 1

      A post saying essentially "eclipse doesn't know how to use git" does not equate to "git sucks balls"

      It does if your primary dev tool is Eclipse.

      Not at all. NetBeans doesn't know how to use git either, but that's no hindrance at all to using NetBeans and git. Sure, you have to be comfortable with the command line, but using the command line is pretty easy in git.

      (In fact, I think it should be pretty trivial to write a generic git GUI or IDE plugin that does everything you need in an easy way. I have no idea why nobody has done that yet, and why so many have failed. It really doesn't look al that hard.)

      If anything, it's a commentary on Eclipse, as it is completely unreasonable to expect the developers of a version control system to create plugins for popular IDEs.

      Where there is demand, there is generally supply. Given the difficulty for creating a plugin should be roughly equal, there simply appears to be more demand for SVN than git.

      No, SVN is merely older than git.

      Given that Eclipse is a heavily Java-oriented system, and that git was created by Linus for Linux, I think it's clear where you fit into the hierarchy.

      Right, java programmer. Calling java programmers stupid because they don't run software that is broken/incompatible/unsupported with the most popular java IDE available indicates OP has some serious people skills.

      git isn't broken or incompatible at all. It's just not integrated. Subclipse, on the other hand, is integrated but also broken. I have to jump through lots of stupid hoops if I want to rename or move a directory, or copy it to another project. In git all of that works fine with no pain whatsoever.

    41. Re:Git links by doti · · Score: 2, Insightful

      The right way to do it, at the photo editing side, is to keep the original photo and define a file format for the edits. *Then* VCS would make sense for them.

      --
      factor 966971: 966971
    42. Re:Git links by mcvos · · Score: 1

      So you would consider the Kernel or Gnome to be small projects? Just checking.

      I'd expect so, considering some of his submodules are 20 times as large.

    43. Re:Git links by Anonymous Coward · · Score: 0

      yeah, but SVN _isn't_ working just fine. you just don't understand. there are lots of websites that explain in very clear terms why it's better. just because you are too dumb or lazy to learn isn't our problem (like the OP said :)

    44. Re:Git links by Kent+Recal · · Score: 2, Insightful

      Sorry to burst your bubble but most software projects do involve artwork and it makes a lot of sense to version that, too - along with the source code.
      Do you think artists never make mistakes? Do you think nobody ever wants to go back to an older version of a button-image after a while because the new one wasn't received well?
      Well if so then let me welcome you to the real world.

    45. Re:Git links by Anonymous Coward · · Score: 0

      Exactly. And this is why GitHub is so popular: it's a web app that removes a huge limitation of Git.

      I do this at least a dozen times a day. I used to find it kind of weird that a web app is the easiest way to do some of my version control tasks, but I got over it.

      From my perspective, Torvalds completely missed the boat on "optimizing for the common case" here -- Git's interface makes possible a lot of really cool-yet-obscure features, at the expense of common operations like this. But the core does support these features, so people like the GitHub guys can plaster over the UI limitations.

    46. Re:Git links by ckaminski · · Score: 1

      Why would I switch from SVN when with SVK I get the best of both worlds? Compatibility with the vast majority of OSS repos, AND the ability to do distributed VC.

    47. Re:Git links by ckaminski · · Score: 1

      Pointless argument. The Eclipse folks only developed a CVS plugin - every other plugin was done by another group, subclipse by the Subversion folks. If the git folks can't be bothered, why should the Eclipse folks? The only adoption being hurt is that of git/hg.

    48. Re:Git links by ckaminski · · Score: 2, Insightful

      SVK. And you get compatibility with SourceForge repos, and tools like TortoiseSVN and subclipse.

    49. Re:Git links by yumyum · · Score: 1

      I use SVN too without problems. However, you MUST watch the Linus Google video it is hilarious and he brings up some good points regarding control of the source, which is a bit uncomfortable for some (many) in the corporate world.

    50. Re:Git links by Anonymous Coward · · Score: 0

      You seem to be helping to make my point. Your points... 1) You have to go to the command line to do anything with git/Eclipse. Oh goody! 2) A plugin should be trivial, yet ... *crickets* ... no plugin. 3) SVN is more mature than git. Personally, I like mature, stable software.

      I'm not saying git is broken. I'm saying it apparently isn't a good option for those of us using Eclipse on a regular basis. I'm saying the AC who said all SVN users are stupid is a social pariah for even making such an asinine statement. Git proponents should be supremely pissed with that knob goblin. I and others like myself might have been tempted to install some beta git plugin were it not for that buffoon. All we need is another camp of dim witted zealots starting yet another 'this' vs. 'that' holy war in the computer field. It's immature, unprofessional, and ultimately it reflects poorly on all involved.

      Subclipse, on the other hand, is integrated but also broken. I have to jump through lots of stupid hoops if I want to rename or move a directory, or copy it to another project. In git all of that works fine with no pain whatsoever.

      ?? Copying, moving, renaming files is handled by Eclipse. I have never had any real problems with moving or renaming files or folders linked to an SVN repository. I just right click -> Refactor -> Move and right click -> Refactor -> Rename to do it. Since those commands are available in Eclipse without the Subclipse plugin installed, perhaps you have some other plugin causing a conflict?

    51. Re:Git links by Anonymous Coward · · Score: 0

      They ARE smarter.

    52. Re:Git links by sudog · · Score: 1

      IMO, svn doesn't work so well with large files. Other systems work better and faster with them. If git seriously works more slowly with large files than svn does, I am mentally shuddering. But that's a cool datapoint..! Thank you for your comment.. awesome.

      But yikes. :)

    53. Re:Git links by sudog · · Score: 1

      Yes, they are small projects. :)

      Tens of thousands of files and a few hundred megabytes of data is very small compared to most commercial projects.

      I know parent was marked flamebait, but I think it's a perfectly valid question. It's not flamebait at all, but perhaps a bit more rhetorical than it needs to be.

    54. Re:Git links by petermgreen · · Score: 2, Insightful

      A source controls systems PRIMARY function is to keep track of how things changed over the history of a project.

      So if you have a project that contains binary files like photos as well as code it makes sense to choose a version control system that can handle both at a tollerable speed so they can be versioned together.

      P.S. I can think of ways to merge changes in images so if your vcs allows you to hook in custom merge tools you could probablly add image merge support (whether the results would be what you want is another matter of course).

      --
      note: i'm known as plugwash most places but i screwd up registering that here somehow in the past and now can't register
    55. Re:Git links by mgiuca · · Score: 2, Interesting

      I'm a Bazaar fan. That isn't to say I'm not a Git fan, I just prefer Bazaar (by a small margin, for a handful of reasons).

      That website makes a really good case, but I think they should remove "Bzr" from the "Cheap Local Branching" section. I could s/git/bazaar that entire section and it would still be almost correct.

      Bazaar has a totally different view of branches, but it gives you all the same flexibility as Git. The only thing is that Bzr branches are full copies of the entire repository - so they aren't "cheap" by default. To mitigate this, you simply create a "repository" one directory level above the branch, and then all the branches share data and are very cheap and fast.

    56. Re:Git links by Anonymous Coward · · Score: 0

      yeah, but SVN _isn't_ working just fine

      Works great for me. Maybe you're just too dumb and lazy to figure it out.

    57. Re:Git links by prockcore · · Score: 2, Informative

      Frankly, no one, including yourself, ever mentions a reason WHY I should switch.

      I can give you the reason why I switched.. which may or may not help.

      With SVN, I found that branching was so involved that I wouldn't do it. Instead, I would check out code, work on it, and wouldn't check it back in until I had completed whatever I was doing... which may be days or weeks away.

      Checking code back in with SVN almost became a "release".

      With Hg, I pull down a copy of the code, make changes, commit those changes to my local repo, even if things are so broken they don't even compile. Then, when I'm done, I'll push all my commits back to the server.

    58. Re:Git links by Anonymous Coward · · Score: 0

      2 things:

      1. All history is stored locally, so it can be used offline.
      2. You commit changes locally, then push them to the repo, thus allowing you to work on several bits of a change in small pieces. Git keeps track of everything so that you can easily merge it back with the repo. You can even stash your changes, update from the repo, then reapply your changes on top, giving you an updated revision with your work in progress.

      These are two really simple examples. These applies to most distributed VCS's though. SVN is ok for a small team working from a single office with constant access to the server, but nothing beats being able to e-mail your friend and asking them to pull from your repository. This will give them a branch of their changes, coming off of the most recent common ancestor you have. You can then merge these changes into your branch, or rebase your work on top of theirs. It really is a new type of workflow that opens up lots of possibilities. However, I will acknowledge that for many situations it is not necessary. The two things I mentioned (working offline and local commits before sending your changes to the shared repository) are really nice for nearly everyone.

    59. Re:Git links by cibyr · · Score: 1

      Tortoise is also popular because it's very good. It's highly polished, easy to use, supports everything you ever want to do with SVN and is well integrated into windows.

      It's certainly not just for lazy idiots, it's the way to do SVN on windows, and probably the best free VCS tool for the platform (I've never used any commercial VCS).

      --
      It's not exactly rocket surgery.
    60. Re:Git links by Anonymous Coward · · Score: 0

      Don't make an excuse. Most of the git users don't need fancy graphics, and if you can't be bothered to write it (see first rule of opensource), why should they?

    61. Re:Git links by MemoryDragon · · Score: 2, Interesting

      Well subclipse was started by a single person wanted to have a decent svn plugin it took the guy more than one year to get to a working level, so it takes time.

      Git would be the perfect companion for eclipse, it could replace the local history and the remote version control system but that would mean a proper integration of GIT might be 10 times as complicated because it has to replace both version control subsystems eclipse has.

      Also git has several unresolved issues, how are you going to do a server repo browser server side version browsing etc...

    62. Re:Git links by bears · · Score: 1

      If SVK actually worked, you might have a point.

      I used SVK for a year attempting to synchronise two SVN repos, a main dev repo and a secure-area repo only accessible via VPN. SVK would periodically go wild, bouncing changes endlessly between the repos, unless you use the bundle-multiple-changes-into-one mode. All syncs HAD to go via my laptop; set up the mirroring via another machine, and every damm change would get copied over again.

      SVK works OK as a satellite to a SVN repo. Try anything more distributed, and it doesn't cut the mustard.

      I'm now using Mercurial. Small, fast, easy to learn, dead easy to bring up on AIX, and works perfectly. No contest.

    63. Re:Git links by vrmlguy · · Score: 1

      This thread began with a link to a site listing reasons.

      Maybe people are condescending to you for a reason?

      When was the last time you walked into a retail store and a salesman handed you a brochure and said "I'll be at the register if you need me." Shouting RTFM is the second most ineffective way to sell your technology next to calling potential converts imbeciles.

      If I walked into the "Revision Control Systems 'R Us" store, I'd prefer live interaction as well. There are, however, lots of on-line stores (ever hear of Amazon?) where the sales process doesn't use salepeople, just lists of reasons why a produce is desirable.

      --
      Nothing for 6-digit uids?
    64. Re:Git links by Schraegstrichpunkt · · Score: 1

      Sure, you have to be comfortable with the command line ...

      If you steadfastly refuse to learn how to use the command line, you should not be writing software. The world would be better off without you.

      Laziness is not a virtue, even if you're a programmer.

    65. Re:Git links by Schraegstrichpunkt · · Score: 1

      when the developers you're working with have a hard time with anything not GUI-fied.

      Um... You're telling me that you have "software developers" who can't understand something simple like controlling a program through the command line? Either those developers need more training or they are hopelessly incompetent and should be replaced ASAP.

      If you can't grasp how to use a CLI after a few hours of training, then you aren't a developer, you're a clerk. And I know plenty of clerks who would have no trouble learning to use a CLI.

    66. Re:Git links by Schraegstrichpunkt · · Score: 2, Informative

      Some of our submodules are 20 times bigger than the Linux kernel and there is no way to subdivide them more than that.

      But do they accept more changes than the Linux kernel does? Linus Torvalds's 2.6.28 tree alone (which goes back to 2.6.12-rc2, dated April 16, 2005) has 120035 commits. That doesn't include any branches that others have worked on.

    67. Re:Git links by HeronBlademaster · · Score: 1

      No, the developers I work with aren't real programmers - they're Civil-Engineers-turned-programmers. Some of them get confused if I ask them to pull up a command prompt. These are the guys writing our flagship applications.

      As for replacing them... the boss won't replace one particular manager no matter how poorly he manages his team (and boy is it managed poorly). This is one of those companies, I think, where it is extremely difficult to get fired.

    68. Re:Git links by Geoffreyerffoeg · · Score: 2, Informative

      Ignore tha fanboys. If anything, use them as statistical evidence that there might be something worthwhile here. :-)

      Why git for a SVN user? There's nothing better than trying it for yourself (git-svn clone svn://whatever, then hack on it with git, then git-svn dcommit). But until then, two big points:

      1. It's distributed. I can make lots of commits without pushing them somewhere public, which is good for the same reasons that hitting "Save" often is good, without being worried that I've broken the build for everyone.

      Relatedly, I can put my stupid personal projects in git from the beginning, without bothering to set up a server. But if I find I do want to share it with anyone or add anyone else as a contributor, there's basically no difficulty in doing so.

      2. Git lets you rewrite your local history. If I didn't like a commit, I can edit it before sending it off. My workflow is often edit-commit-compile-test, rather than edit-compile-test-commit, which lets me remeber why I thought editing this file was a good idea. And if it's not, I can delete that commit from history, rather than having yet another one to revert it. And then when I'm done with this task, I can squash all my temporary commits down to two or three, one for each major part of what I did. As a side benefit, my commit messages only have to be useful enough for me, since I can edit them before pushing commits.

      (Obviously, once you publish a commit, it's a pain to retract that commit from everyone else's repos.)

      Another part of rewriting history is that rather than trying to do a merge when you've been hacking for a while, you can save your local commits in another branch, update to upstream, and cherry-pick the ones that make sense individually and edit the ones that need to be edited, creating a linear logical history rather than a merge between branches. This will make you saner a month later when you're trying to figure out why the code changed as it did, and you don't have to follow multiple branches and see how they were resolved.

    69. Re:Git links by bob.appleyard · · Score: 0, Flamebait

      When was the last time you walked into a retail store and a salesman handed you a brochure and said "I'll be at the register if you need me." Shouting RTFM is the second most ineffective way to sell your technology next to calling potential converts imbeciles.

      You did begin by calling everyone a condescending dumbass.

      What I said was still true. You were given reasons. You just chose to ignore them, and be insulting.

      I don't even use source control.

      --
      How dare you be so modest!! You conceited bastard!!
    70. Re:Git links by ioshhdflwuegfh · · Score: 1

      Why Git Is Better Than X.com/ YouTube - Tech Talk: Linus Torvalds on git (yeah, I'm a convert)

      One thing that Linus left uncovered is whether git does cover-sheets for TPS reports.

    71. Re:Git links by mcvos · · Score: 1

      You seem to be helping to make my point. Your points... 1) You have to go to the command line to do anything with git/Eclipse. Oh goody!

      Why is this making your point? There's always stuff you need to do on the command line. Sticking to what some IDE offers is way too constricting.

      2) A plugin should be trivial, yet ... *crickets* ... no plugin.

      People are working on plugins for a variety of IDEs, but apparently it's not a big priority. Many programmers seem to be perfectly comfortable with the command line.

      3) SVN is more mature than git. Personally, I like mature, stable software.

      Git is perfectly stable. It just doesn't have all the bells and whistles.

      I'm not saying git is broken. I'm saying it apparently isn't a good option for those of us using Eclipse on a regular basis.

      And I'm saying there's no reason not to use git from the command line if you're using eclipse.

      I'm saying the AC who said all SVN users are stupid is a social pariah for even making such an asinine statement.

      That was a bit extreme, I agree. Many git users were SVN users once. I have used eclipse with subclibse and subversive, and was usually quite productive with it, despite the bizarre frustrations those plugins sometimes caused. Git has its own frustrations of course, but on a different level. Personally I'm quite happy with having switched to git.

      Subclipse, on the other hand, is integrated but also broken. I have to jump through lots of stupid hoops if I want to rename or move a directory, or copy it to another project. In git all of that works fine with no pain whatsoever.

      ?? Copying, moving, renaming files is handled by Eclipse. I have never had any real problems with moving or renaming files or folders linked to an SVN repository. I just right click -> Refactor -> Move and right click -> Refactor -> Rename to do it. Since those commands are available in Eclipse without the Subclipse plugin installed, perhaps you have some other plugin causing a conflict?

      I had several other plugins, but my problems were always with SVN. When I drag and drop a directory to another location (within a project or to another project), or I simply rename a folder, Eclipse doesn't clean up or refactor the .svn stuff in that directory.

      One of the major advantages of git is that directories contain only code, and not the meta info required for version control. All of that is in the .git directory in the project root, which means you can work on your project with whichever editor or IDE you prefer, and that editor doesn't have to be aware of git at all. You can move, remove, rename anything you want, and git will figure it out for you.

      The downside is that you always need to have the project root. You can't check out only part of a project and work on that (which you can in SVN). Personally I don't see this as a meaningful shortcoming of git.

    72. Re:Git links by jon3k · · Score: 1

      MOST commercial projects are a FRACTION of that size.

    73. Re:Git links by jon3k · · Score: 1

      "First example: I might be writing a book in book/ and keep all images in a subdirectory book/images/. I think it is not far-fetched that I might want to work on only the images without downloading all the other, possibly huge, subdirectories."

      check out gitweb

    74. Re:Git links by Anonymous Coward · · Score: 0

      Are you using a web browser at the moment?
      Do you own an iPod?
      Do you use a Debugger?
      I think you've just proved that you're a moron. UI is important for a reason.

    75. Re:Git links by Ant+P. · · Score: 1

      You get that with git-svn too, plus the ability to do a "status" command on a 2GB repo in seconds instead of minutes, plus the fact said 2GB repo would be twice the size as a plain SVN checkout.

    76. Re:Git links by Anonymous Coward · · Score: 0

      If you want people to switch, being a condescending asshole is generally a great way to prevent that and make them more entrenched.

      Condescending assholes are entrenched in using SVN? We can figure that one out without you telling us...

    77. Re:Git links by epine · · Score: 1

      Unlike, say, derogating SVN, which really is for the i'm-too-dumb/lazy-to-explain/post-something-notable crowd.

      Much better.

      I just introduced an Eclipse/SVN/JIRA/wiki solution to a small embedded company which previously had none of the above. Tortoise and the Subversion plug-in made the transition relatively painless. I've mostly used distributed SCM in the past. For this project, svn was an easy place to start.

      [Actually, I wrote this the other night, and got called away from the keyboard before I hit "submit".]

    78. Re:Git links by ckaminski · · Score: 1

      I'm trying mercurial, it seems to have better tool support. But you're right with SVK, allowing individual changes to be applied is a serious deficiency - it has some nuances in changeset management that lead to a righteous PITA when I first started.

      But I use it for three system synchronization and I love it.

    79. Re:Git links by Anonymous Coward · · Score: 0

      Some of our submodules are 20 times bigger than the Linux kernel and there is no way to subdivide them more than that.

      But do they accept more changes than the Linux kernel does? Linus Torvalds's 2.6.28 tree alone (which goes back to 2.6.12-rc2, dated April 16, 2005) has 120035 commits. That doesn't include any branches that others have worked on.

      You're kidding, right? How big do you think Adobe's source code repository for their Creative Suite is? Or Apple's repository for OS X is? How many commits do you think get checked in in a month there?

  2. Meanwhile... by MichaelSmith · · Score: 4, Funny

    In my day job we are migrating to something totally new...clear case.

    (shit).

    1. Re:Meanwhile... by bheading · · Score: 5, Informative

      I'll pray for your soul. There's nothing worse than a group of managers who think that the world will get better when Clearcase is employed. I swear, that tool seems to be deliberately designed to slow you down.

      Git or BK command :

      git pull

      Clearcase command :

      cleartool findmerge -avobs -fversion MYLABEL -merge -gmerge

    2. Re:Meanwhile... by vally_manea · · Score: 1

      If it only were that easy to use clear case....sigh In my day to day job we have a lot of >10 line view config specs....

    3. Re:Meanwhile... by JamesP · · Score: 1

      The solution to clearcrap is a baseball bat

      I swear to God, last time someone suggested Clearcase at my job I said "OVER MY DEAD BODY"

      --
      how long until /. fixes commenting on Chrome?
    4. Re:Meanwhile... by bheading · · Score: 1

      Well, to use Clearcase properly you have to write a wrapper script that manages and updates the config specs for you. That's the part that they don't tell you when they're selling it to you. Ordinarily, users shouldn't be modifying the config spec.

      I love the way when you change the Clearcase config spec and accidentally enter a typo, it doesn't tell you. So you get subtle changes in your repository that you don't expect. I've seen people spend days trying to figure out what was going on when they accidentally modified their config spec with an error.

    5. Re:Meanwhile... by bheading · · Score: 2, Insightful

      You can actually make Clearcase work quite well, without resorting to a baseball bat. The trouble is that you have spend a lot of time and money doing it, substantially more than with any other VCS.

      A properly-configured and administrated Clearcase environment is very effective - but not good value for money, IMO. I don't believe there is any other revision control system that can do the build auditing stuff that CC does. Unfortunately, some of the ISO capability maturity model stuff seems to require this. I wonder if any IBM/Rational employees were on the standards boards ..

    6. Re:Meanwhile... by David+Gerard · · Score: 3, Funny

      I foolishly touched Clearcase at work in 2001 and left it on my CV until 2004. I still get calls from pimps desperate for a Clearcase admin to work in deepest suburban Berkshire for GBP30k. (I'm currently a sysadmin in London on GBP40k.) It's one of those cursed words on a resume - if it's ever on your resume, it'll taint it forever and those are the only calls you'll get.

      --
      http://rocknerd.co.uk
    7. Re:Meanwhile... by CarpetShark · · Score: 1

      Have you put together a clear, serious, constructive proposal for an alternative that spells out the pros and cons? If you haven't, its your own fault really. But if you have, and they don't listen, then yeah, "shit" about sums things up. At any other time, I'd say find better bosses and quit in that situation, but few have that option at the moment.

    8. Re:Meanwhile... by JamesP · · Score: 1

      I agree, this reminds me of that false-myth: "USA spend $1M in a pen that work in space, Russians used a pencil"

      Another thing I tend to notice: sw companies that use CC WILL GO BANKRUPT

      Not maybe, WILL.

      Companies where software is not what the company essencially sells or only supports their operation can stand it (pretty much like a benign cancer)

      --
      how long until /. fixes commenting on Chrome?
    9. Re:Meanwhile... by ThePhilips · · Score: 2, Interesting

      I feel you pain. I'm in the same boat. You can't work with CC effectively without 20-30 helper scripts. Hijacked/checked-out files is major pain. Dynamic views are great feature yet are completely useless.

      Though that still doesn't mean you can't use Git like local tool.

      I used before RCS (ci and co command) to preserve history of my modifications locally. Now due to various circumstances I moved to use Git locally and it works quite well.

      After "ct update" (alias ct=cleartool), you go to directory (and in my case to Linux server) where you plan to work and do "git init" and "got add" for the affected files. I'm type of person who like to commit dozen times a day and Git helps greatly to not to impose my deficiency on others.

      Though I'm using Git for about year now, I'm pretty much n00b. Outside of the obvious - git init/add/commit/diff/pull/push/update + gitk - I know very little. That's why it is also very hard for me to understand the usual complain about Git that it is very arcane. Yes, documentation is very poor and still can't catch up with all the features, yet you rarely run into the need for some esoteric function or syntax. Basic commands are pretty much "intuitive".

      --
      All hope abandon ye who enter here.
    10. Re:Meanwhile... by CrashandDie · · Score: 0

      I'm guessing by the way you phrased that you're not really interested in doing some consulting on the side then?

      dammit

    11. Re:Meanwhile... by Erich · · Score: 1

      Make sure you do your own regular backups, clearcase will eat your repository in a disastrous way, and you'll wait for IT to fix it for 2 weeks. At least, that was my experience with clearcase.

      --

      -- Erich

      Slashdot reader since 1997

    12. Re:Meanwhile... by BlueCodeWarrior · · Score: 1

      Though I'm using Git for about year now, I'm pretty much n00b. Outside of the obvious - git init/add/commit/diff/pull/push/update + gitk - I know very little. That's why it is also very hard for me to understand the usual complain about Git that it is very arcane. Yes, documentation is very poor and still can't catch up with all the features, yet you rarely run into the need for some esoteric function or syntax. Basic commands are pretty much "intuitive".

      I'm basically the same as you. I rarely use anything but those commands, and I'd agree that git is pretty easy to use, as long as you're sticking to the basics.

      From what I understand, git used to be a huge patchwork of scripts that were much more difficult, and they spent some time a while ago making them a bit easier.

    13. Re:Meanwhile... by corporate+zombie · · Score: 1

      I also am forced in to clearcase. Here's the workflow I use:

              ct mkview ...
              cd /view/VIEW/vob/blah/dir
              git init
              git add .
              git commit -m 'Init'
              cd /somewhere/else
              git clone /view/VIEW/vob/blah/dir
              # do real work rather than fight clearcase

      Git plays quite nicely with other systems.

              -CZ

      PS - Easy enough to write a small script to sync difference back to clearcase or update your clearcase master and merge into your workspace.

    14. Re:Meanwhile... by jgrahn · · Score: 2, Interesting

      You can't work with CC effectively without 20-30 helper scripts.

      Where do people get ideas like this? I use CC effectively with one trivial Perl script. It converts "my feature is on this branch off this label" descriptions into config specs -- raw config specs are too complicated to handle, so you need a layer above them which matches your CM process. Yes, IBM/Rational should explain that to their customers. Or maybe make UCM not suck.

      Hijacked/checked-out files is major pain.

      Then you're not branching, like you're supposed to do, and a hijacked file is the *least* of your problems. You cannot use CC as if it was CVS; a dynamic view is not a sandbox if you set it up to silently show other people's possibly incomplete changes.

      Dynamic views are great feature yet are completely useless.

      Use them correctly for a few years, then report back.

    15. Re:Meanwhile... by pcraven · · Score: 1

      We were required to use it at a bank I worked at. We had a CVS repository and wrote a script to occasionally move stuff over to clearcase.

      CVS required almost no administration, and the clearcase repository had a whole team dedicated to its maintenance.

      I've started the migration from SVN to Git. Once I learned not to 'git push' to a repository with working files, I've found it works well for me.

    16. Re:Meanwhile... by ThePhilips · · Score: 3, Interesting

      You can't work with CC effectively without 20-30 helper scripts.

      Where do people get ideas like this? I use CC effectively with one trivial Perl script. It converts "my feature is on this branch off this label" descriptions into config specs -- raw config specs are too complicated to handle, so you need a layer above them which matches your CM process. Yes, IBM/Rational should explain that to their customers. Or maybe make UCM not suck.

      What about normal diff? CC still doesn't allow to use external diff program. And "ct diff" insists on two files - it can't diff hijacked file against original.

      What about normal recursive diff for two branches?

      What about patch generator? So that you can back up you unchecked-in changes.

      What about change log? Recursive change log showing changes for all files in directory?

      How about converting change history into set of patches? To allow easier investigation of regressions.

      The moronism with R/O files? All extracted/"ct get -to" files are marked R/O.

      And this is from top of my head. For all of that I have scripts. And with the scripts, I'd say, CC isn't half bad.

      But to the point of original question, with Git I would not need any of the scripts.

      Hijacked/checked-out files is major pain.

      Then you're not branching, like you're supposed to do, and a hijacked file is the *least* of your problems. You cannot use CC as if it was CVS; a dynamic view is not a sandbox if you set it up to silently show other people's possibly incomplete changes.

      We do branching and hijacked files are not problem per se. It is just better half CC tools, when given as parameter hijacked file, would simply say "f-off, this is view private file."

      In some situations checked-out files are even worse since CC treats checked out files like files on a special branch. Consequently half of CC tools accept the file as parameter, yet show dick but no information about the file.

      Git doesn't draw any difference between the files and files in repo. At any time you can do whatever you like with any accessible file/revision.

      Dynamic views are great feature yet are completely useless.

      Use them correctly for a few years, then report back.

      Care to elaborate on "correct" usage pattern then?

      People tried them in company few years ago and pretty much abandoned them. They are still accessible, yet generally unused. Our CC admins would be happy to know the "correct" usage for them.

      You can't index dynamic view - because it contains all possible vobs and all possible files. And I do not want to deal with 150K files of the whole project, I need only 3.5K files belonging to my part.

      You can't compile in dynamic view - because even if only dozen of people compile simultaneously, CC server simply dies under load.

      Heck, simple "ls" spits on screen bunch of errors every time, because dynamic view can't properly show branch, but shows all files on all branches (readdir() lists all of them). And if file did happen to be not on the branch of the dynamic view, stat()ing it would give you an error.

      If you can't do development with them, what else can you do with the dynamic views?

      I used in past dynamic views solely for porting semi-automatically (with script) trivial fixes into many branches. For more than that dynamic views are useless.

      Please, reveal me the secret: how do I use dynamic view "correctly"? Many people in my company would be happy to know it too.

      --
      All hope abandon ye who enter here.
    17. Re:Meanwhile... by MichaelSmith · · Score: 1

      Have you put together a clear, serious, constructive proposal for an alternative that spells out the pros and cons? If you haven't, its your own fault really. But if you have, and they don't listen, then yeah, "shit" about sums things up. At any other time, I'd say find better bosses and quit in that situation, but few have that option at the moment.

      Yes I spent two years running the CM system. Before I moved into that area I did some investigation into migrating from CVS to bitkeeper. When the BK license issues became apparent I started trialling Mercurial, building migration infrastructure and using it for areas where a DSCM is a big help. I pushed for an open evaluation of tools we could move to and got pushed out of tha role as a result.

    18. Re:Meanwhile... by HeronBlademaster · · Score: 1

      I've spent countless hours convincing my employer to switch to Subversion from Visual SourceSafe. Over the last year or so, the best I have been able to do is get our peripheral libraries moved over...

      I held a training meeting for Subversion, and supposedly one guy is working on some sort of repository layout, but I have no idea how long it will take to get the actual move put through the red tape.

      And we're just a small 20-developer software company. I feel bad for anyone trying to get larger companies to switch.

    19. Re:Meanwhile... by HeronBlademaster · · Score: 1

      Can't be as bad as Visual SourceSafe, can it? ;)

    20. Re:Meanwhile... by doug · · Score: 1

      My day job is with SCM systems, and I was a CC admin for nearly a decade. You're right about CC needing a bunch of helpers. Don't consider CC to be a standalone tool and you're OK. It is more of a tool kit with all the primitives that you need to build something custom for your group. UCM is more full blown, and is too much into bondage for my taste. CC is a fine environment, it isn't slow when set up right, and you can make it do lots of things. But it is expensive, and it is showing its age. I'm not sure that anyone should move to CC now, but if you're there, you don't need to abandon it. Soon you will, but not yet.

      If you're talking about "cleartool update" and hijacking files, then you're using snapshot views. Ungh. They suck. Stick with dynamic views, and get your winkins to work, which usually means major makefile hackage. It is worth it.

      That said, I'm different company now and going through a git vs. subversion selection process. For some reason I can't get motivated by subversion. Git seems like a whole lot more fun. Not a very scientific or profession attitude, but that is also the reason I first switched to perl oh so many years ago.

      - doug

    21. Re:Meanwhile... by Anonymous Coward · · Score: 0

      Clearcase has a lot of problems.
      1. It is hard to use. It is not Git-hard, it is really, really hard. Just installing it required several hours and help from several people. Making first commit was the same. Making second commit was the same.
      2. It is slow, really slow. It is so slow that you can't really use it unless you are in the same local network with it. Even then, it is slow.
      3. It jams your whole computer, even when you are not using it.
      4. It is expensive, very expensive.

      Never ever use Clearcase. Don't even try it. When you are in a job interview, ask if they use Clearcase at there. If they use it, don't go there. Using Clearcase is a very good sign that they do a lot of things wrong.

    22. Re:Meanwhile... by ThePhilips · · Score: 1

      If you're talking about "cleartool update" and hijacking files, then you're using snapshot views. Ungh. They suck. Stick with dynamic views, and get your winkins to work, which usually means major makefile hackage. It is worth it.

      Unfortunately, our main project is very large and when lots of people work with dynamic views, CC server simply dies under load. That was already tried right after CC deployment.

      That said, I'm different company now and going through a git vs. subversion selection process. For some reason I can't get motivated by subversion. Git seems like a whole lot more fun. Not a very scientific or profession attitude, but that is also the reason I first switched to perl oh so many years ago.

      If your company needs good Windows support - then you have to go with SVN or Hg (Mercurial) as only usable options. Git as *nix tool in its heart not very good on Windows. Folks with "msysgit" try to bring the power of Git to Windows and from comments I can judge that it mostly works, yet you shouldn't expect SVN level of integration with Windows out of it.

      On other side, if development happens exclusively under *nix, then Git (or Hg) is really great tool. Especially if compared to SVN.

      Unfortunately, I have experience only with SVN. Several of my past employers use it without major problems. I use Git for all of my pet hobby projects and pretty happy with it. I'm no novice to DVCS and I have used before Arch and Darcs. Darcs is very simple and Arch is very very powerful (and complicated). Git is good compromise between the two: simple things in Git are very simple but some complicated things are darn complicated. (Though I'm still missing Arch's archive system, which allowed to (in a way) partition version information so that size of currently used repository stays within some sane limits.)

      --
      All hope abandon ye who enter here.
    23. Re:Meanwhile... by GooberToo · · Score: 2, Funny

      How to identify managers promoted beyond their capability?

      They recommend, or worse, force a migration to Clearcase; usually based on lies about the existing solution to their management.

    24. Re:Meanwhile... by chafey · · Score: 1

      Actually, there is something worse than managers who want to deploy clearcase - it is developers that hold onto a clearcase deployment when managers want to move to perforce or SVN to improve productivity. *cry*

    25. Re:Meanwhile... by ewhac · · Score: 2, Informative
      We had ClearCase at MOTO. Complete mess. Nobody -- not even the admins -- could explain how it worked or how to use it. It was also supported only on an ancient version of RedHat Enterprise Linux, since it required a binary filesystem blob to support its version-tracking filesystem. If you didn't have exactly the kernel version it was looking for, ClearCase was simply not available to you. (You'd think, given the sums of money involved in procuring and deploying ClearCase, that Rational/IBM would offer a custom build service, where you'd feed them your kernel config and they'd mail you back a filesystem blob compiled for your kernel. But no, that would have made sense...)

      Based on my imperfect reading, I can see two main appeals of ClearCase:

      1. Everything is version-tracked, including the tools and environment variables you used to build the project. Thus, you are supposed to be able to roll your entire development environment forward and backward through time, and exactly reconstruct any project at any point in time. If you're working on a government project with a 15-year service life, I can see this as being very useful.
      2. ClearCase appears to let you mechanize local management hierarchy and policy. If your manager -- and only your manager -- is authorized to commit code changes to the shipping base of code, ClearCase will let you describe that workflow and enforce it for you. For large organizations with a management fetish, this too is a "feature".

      Schwab

    26. Re:Meanwhile... by ckaminski · · Score: 1

      I keep saying it on this article... and I don't think I can say it enough. SVN + SVK. 95% of git/hg with all the compatibility and tools support of SVN.

    27. Re:Meanwhile... by vally_manea · · Score: 1

      Actually what I like the most about ClearCase is when for no apparent reason the server crashes and only 50% of your views disappear. To be honest after working with the old SourceSafe I never thought I would ever find a more retarded SCM but for me ClearCase is no. 1

    28. Re:Meanwhile... by chthon · · Score: 1

      Bah, or Continuus. But luckily Continuus has been bought by IBM, and I think they are end-of-life-ing it (I hope). Jurgen

    29. Re:Meanwhile... by nuttycom · · Score: 1

      ClearCase appears to let you mechanize local management hierarchy and policy. If your manager -- and only your manager -- is authorized to commit code changes to the shipping base of code, ClearCase will let you describe that workflow and enforce it for you. For large organizations with a management fetish, this too is a "feature".

      Of course, Git also supports this feature. In fact, if you're using Git in the normal distributed fashion where everyone pushes to their own public repositories and pulls from the master, it's the default behavior.

      I mean, who has more of a management fetish than Linus? Of course, his idea of management is not horribly dysfunctional like you're suggesting...

  3. bzr vs. git? by Anonymous Coward · · Score: 0, Offtopic

    I always though bzr had the edge on git in terms of being a better DVCS. Is there a reason why the article seems to think that git is the default?

    1. Re:bzr vs. git? by Anonymous Coward · · Score: 0

      No offense, but bzr is not a better DVCS. They both have their advantages and disadvantages, but in the end it's up to decide for the users what they like best. It's not like cvs and svn, where everyone knows that svn is superior.

    2. Re:bzr vs. git? by kripkenstein · · Score: 4, Informative

      I always though bzr had the edge on git in terms of being a better DVCS. Is there a reason why the article seems to think that git is the default?

      No such thing as 'better' here.

      Bazaar was the runner-up DVCS, and rightfully so, but it has both advantages and disadvantages. Git is faster and currently more popular. Bazaar has an easier interface, better GUIs, is more easily extensible (Python), and runs better on non-Linux platforms.

      So which you prefer is a matter of what you are looking for.

    3. Re:bzr vs. git? by David+Gerard · · Score: 0

      Think of it like this:

      RCS = DOS.
      CVS=Windows 95.
      Subversion=Windows 2000.
      DVCS = Unix varieties.

      Now, which is the right system to run a web server on?

      --
      http://rocknerd.co.uk
    4. Re:bzr vs. git? by uassholes · · Score: 1

      But if you watched TFVideo, Linus doesn't even mention it. According to him only Git and Mercurial are worth considering.

    5. Re:bzr vs. git? by kripkenstein · · Score: 2, Informative

      The video is from almost two years ago. Back then, Git and Mercurial really were the main options.

    6. Re:bzr vs. git? by Dwonis · · Score: 1

      I switched from bzr to git after I lost data to bzr-rebase. It was partly my own fault, but it wouldn't have happened if I had been able to easily rewrite the history, since then I would have been committing stuff more often.

      I'd rather use git-svn than touch bzr ever again.

    7. Re:bzr vs. git? by doom · · Score: 1

      RCS = DOS

      That's a gross insult to RCS -- it does a very simple job, but does it very well.

    8. Re:bzr vs. git? by David+Gerard · · Score: 1

      And CVS is way more robust than Windows 95.

      Perhaps I should have made it about cars ;-p

      --
      http://rocknerd.co.uk
  4. Slashsphere by Anonymous Coward · · Score: 0

    Wow, you're really asking for it...

  5. Adopt a git... by TapeCutter · · Score: 4, Funny

    In the UK and to a lesser extent here in Australia a "git" is akin to a moron.

    --
    And did you exchange a walk on part in the war for a lead role in a cage? - Pink Floyd.
    1. Re:Adopt a git... by WarwickRyan · · Score: 5, Informative

      It's more than just an moron, it's an nasty, stubborn, selfsentered and selfish moron.

      "Our neighbour is an right old git" could be used to describe an elderly neigbour who, say, regularly blocked your driveway because your car got in the way of the sunlight on his garden.

      The old neighbour from Dennis, or Victor Meldrew from One Food In The Grave are both fine examples of gits.

      It's like a weaker version of the c-word.

    2. Re:Adopt a git... by Wild+Bill+TX · · Score: 5, Informative

      Quoth Linus Torvalds, "I'm an egotistical bastard, and I name all my projects after myself. First Linux, now git." :)

    3. Re:Adopt a git... by Anonymous Coward · · Score: 0

      The connotation was intentional:

      http://www.infoworld.com/article/05/04/19/HNtorvaldswork_1.html
      When asked why he called the new software, "git," British slang meaning "a rotten person," he said. "I'm an egotistical bastard, so I name all my projects after myself. First Linux, now git."

      Git - "The Stupid Content Tracker"

    4. Re:Adopt a git... by James+Youngman · · Score: 1

      Not a moron really, at least in terms of UK usage. Stubborn and irritating, yes, but there is not really an implication of idiocy. The phrase "stupid git" is quite common and isn't a tautology. The OED rather bloodlessly defines "git" as "a worthless person".

    5. Re:Adopt a git... by arevos · · Score: 1

      In the UK and to a lesser extent here in Australia a "git" is akin to a moron.

      Actually, git is more akin to "bastard" or "son of a bitch". You can say to someone "he was a clever old git" without it being considered an oxymoron.

      Incidentally, Linus claims he named Git after himself.

    6. Re:Adopt a git... by Yetihehe · · Score: 1

      [Git is] like a weaker version of the c-word.

      You mean... cvs?

      --
      Extreme Programming - Redundant Array of Inexpensive Developers
    7. Re:Adopt a git... by DNS-and-BIND · · Score: 1

      It's still a better name than "The Gimp". Seriously, what was the guy thinking? LOL Pulp Fiction LOLZ!@#!#!@

      --
      Shutting down free speech with violence isn't fighting fascism. It IS fascism!
    8. Re:Adopt a git... by bheading · · Score: 1

      The c-word is still very much socially unacceptable here (and in the US too - how often to you hear it in movies ? very rarely), so I don't see "git" as a weaker version of it.

      I'd put "git" alongside "moron" or "jerk". Nobody's going to raise their eyebrows if you say it.

    9. Re:Adopt a git... by jackharrer · · Score: 1

      We also have GIMP. I think there's some kind of competition going on ;)

      --

      "an experienced, industrious, ambitious, and often, quite often, picturesque liar" - Mark Twain
    10. Re:Adopt a git... by TapeCutter · · Score: 2, Informative

      GP here or "useless git" as my farther used to say. The word originaly comes from foundry workers in the north of England, a "git" is the bit of metal left on the cast where the hole in the mold was. The original metalic git was useless and in the way. - At least that's how BBC's Time Team tells it.

      I wonder if Linus knows?

      --
      And did you exchange a walk on part in the war for a lead role in a cage? - Pink Floyd.
    11. Re:Adopt a git... by ettlz · · Score: 1

      I think it's a corruption of "get" implying "ill-gotten" or something. See http://en.wiktionary.org/wiki/git#Etymology

    12. Re:Adopt a git... by TapeCutter · · Score: 1

      Great program, I ignored disparaging references to the disabled but never noticed the connection to Pulp Fiction and will probably never get it out of my mind now.

      --
      And did you exchange a walk on part in the war for a lead role in a cage? - Pink Floyd.
    13. Re:Adopt a git... by Eunuchswear · · Score: 5, Funny

      Yes, but only a cunt would say "the c-word".

      --
      Watch this Heartland Institute video
    14. Re:Adopt a git... by DNS-and-BIND · · Score: 1
      Never noticed the connection? That's what it's named after, man. They came out in the same year, 1994...I thought it was blazingly obvious. "Har har I gave my software a ridiculous name, now everyone will have to use it"

      PS it's not a slur against the disabled, get your head out of that victim-as-hero nonsense. Gimp means...well...how shall I say this? Do you know Mr. Slave from Southpark? A gimp is a leather-wearing gay S&M freak.

      --
      Shutting down free speech with violence isn't fighting fascism. It IS fascism!
    15. Re:Adopt a git... by Daniel+Phillips · · Score: 1

      My understanding always was, Linus wasn't too proud of having driven a wedge through the middle of the kernel community, that's what the "Git" was about. Now that he went on to change the entire world of revision control, I would say... the pain was worth it. Probably.

      --
      Have you got your LWN subscription yet?
    16. Re:Adopt a git... by MrHanky · · Score: 2, Funny

      In the language Dogg, the word 'git' means 'sir'. So one would politely ask a stranger: 'Cretinous pig-faced, git?', meaning 'Have you got the time please, sir?'

      Then there's this.

    17. Re:Adopt a git... by CrashandDie · · Score: 1, Funny

      A few months ago I was in Peterborough for an interview. I had three senior programmers in front of me interviewing me, asking me various questions. They were shooting the questions in rapid-fire. The one on the left asked me "Are you familiar with Revision Control Tools? If so, which one do you use?", I had barely finished answering a question coming from the right and dodged one coming from the centre, I quickly looked left and plainly said "Git."

      For a moment they all went silent, and looking at my interviewer on the left, he was looking at me a bit white-faced, and then asked, with half a smile, half a what-the-hell-did-this-little-fucker-just-say-look on his face, "I'm sorry, what?". One of his colleagues then jumped in, and said "Oh right, I know what you're talking about, it's the one written by the Linux guy right?"

      I was offered the job but turned it down.

    18. Re:Adopt a git... by siride · · Score: 1

      '"A lot" is two words. You wouldn't say "alittle", would you?'

      No, but I would say "another" ;).

    19. Re:Adopt a git... by Mr.+Bad+Example · · Score: 1

      > In the language Dogg, the word 'git' means 'sir'. So one would politely ask a stranger: 'Cretinous pig-faced, git?', meaning 'Have you got the time please, sir?'

      Afternoon, squire.*

      Full disclosure: I once played the Inspector in a production of Dogg's Hamlet, Cahoot's Macbeth. It was some of the most fun I've ever had on stage, despite wearing a full-length trenchcoat under stage lights in the middle of June. I got to be menacing and smarmy and supercilious without any consequences. It was like being a BOFH in leather.

      *"Get stuffed, you bastard."

    20. Re:Adopt a git... by MikeBabcock · · Score: 1

      Which is why Linus made the very quotable statement "I have named both my projects after myself. First Linux then Git." -- PS, not a direct quote, but from memory.

      --
      - Michael T. Babcock (Yes, I blog)
    21. Re:Adopt a git... by MikeBabcock · · Score: 1

      Of course he knows -- he's from northern Europe and claims to have named it after himself (only somewhat in jest) just like Linux.

      --
      - Michael T. Babcock (Yes, I blog)
    22. Re:Adopt a git... by Anonymous Coward · · Score: 0

      What's wrong with referencing female genitalia particulary since dick is used commonly? Does cunt mean something else also? The Cunt Version System would find its use for administering a porn archive...

    23. Re:Adopt a git... by Raenex · · Score: 1

      My understanding always was, Linus wasn't too proud of having driven a wedge through the middle of the kernel community, that's what the "Git" was about.

      I don't believe that without a quote from Linus himself.

    24. Re:Adopt a git... by HeronBlademaster · · Score: 1

      According to the TV interviews and such I've seen, Linus didn't pick the name "Linux" himself.

    25. Re:Adopt a git... by mcvos · · Score: 1

      According to the TV interviews and such I've seen, Linus didn't pick the name "Linux" himself.

      No, but it makes for a nice joke.

    26. Re:Adopt a git... by Anonymous Coward · · Score: 0

      Great program, I ignored disparaging references to the disabled but never noticed the connection to Pulp Fiction and will probably never get it out of my mind now.

      "Bring up the GIMP."
      "The GIMP's not installed."
      "Well, I guess you'll have to compile it, won't you?"

    27. Re:Adopt a git... by TapeCutter · · Score: 1

      "PS it's not a slur against the disabled, get your head out of that victim-as-hero nonsense. Gimp means...well...how shall I say this? Do you know Mr. Slave from Southpark? A gimp is a leather-wearing gay S&M freak."

      Mind that generation gap, in my day a "gimp" was the same thing as a "cripple" and a "leather-wearing gay S&M freak" was either a member of parliment or in a padded cell. I was also under the impression Mr Slave was a parody of the pulp fiction character and that the pulp fiction character was called gimp because he was metaphorically crippled.

      --
      And did you exchange a walk on part in the war for a lead role in a cage? - Pink Floyd.
    28. Re:Adopt a git... by boots@work · · Score: 1

      I always thought, based on the original posts, it was based on Linus being pissed off with tridge for releasing a BitKeeper export tool. If that's true, and only Linus truly knows, it doesn't improve my opinion of Linus.

  6. Git more popular than Linux by Anonymous Coward · · Score: 0

    Wouldn't it be funny if git were to become more popular than Linux? Linus would be remembered as the Finnish hacker who gave the world a decent source version control system. Oh and he also used it for his own kernel.

  7. we are also going to migrate!!! by Anonymous Coward · · Score: 0
    At my job we use subversion, and while I would rather a system with off-line commits, and can live with it.

    The problem is that the very upper management (that one that lives in another continent) has decided that we are migrating.... to Perforce.

    When we tried to argue against it, that we actually prefer FOSS tools (support & integration being always better), the answer was: "oh don't worry, we bought a company-wide license"

    1. Re:we are also going to migrate!!! by Anonymous Coward · · Score: 0

      > At my job we use subversion, and while I would rather a system with off-line commits, and can live with it.

      You could use git-svn, I prefer it since it means that your central directory uses subversion which is easier to use for first-time users (also thanks to many GUIs like TortoiseSVN, git is a bit lacking there), but you can still branch and commit as you like locally.
      Personally I also use these scripts:
      http://natsuki.mplayerhq.hu/~reimar/git-mycommit.sh
      http://natsuki.mplayerhq.hu/~reimar/git-updateall.sh

      to ease updating of all branches and proper review of patches before finally applying them.

    2. Re:we are also going to migrate!!! by Frankie70 · · Score: 1

      I haven't used Subversion.
      I have used Perforce & CVS.
      Perforce beats the pants off CVS - no competition at all.

    3. Re:we are also going to migrate!!! by skolima · · Score: 1

      And by the way, walking beats the pants off crawling with both your legs broken. What was your point?

    4. Re:we are also going to migrate!!! by BlackCreek · · Score: 1
      But that doesn't says much, does it?

      Pretty much *any* other VCS tool still in development today beats CVS hands down.

  8. The best SCM by gluliverk · · Score: 1, Redundant

    I think the best SCM is that SCM which you known the best

    --
    JMule user, enjoy it : http://www.jmule.org
    1. Re:The best SCM by James+Youngman · · Score: 1, Insightful

      This is obviously not true though - it's a general argument against the adoption of any new tool. Otherwise all computer science would still be conducted in FORTRAN IV and Autocode. Any potential switch has costs and risks, as well as benefits. All of those should be weighed.

    2. Re:The best SCM by Anonymous Coward · · Score: 0

      Bullshit. I used CVS (and once upon a time, RCS), switched to SVN, and very recently picked up Mercurial, which is simply amazing. If you're unwilling to learn something new, you're missing out on a lot of good stuff. I'm certainly switching all my personal projects to hg. And I'm using it for backing up all of my important small files (encryption keys, documents, etc).

    3. Re:The best SCM by CarpetShark · · Score: 1

      I think the best SCM is that SCM which you known the best

      Since SCMs are designed for collaboration, that's very unlikely to be true. Perhaps, if your use of an SCM is entirely as a private timeline tracking and branching tool.

  9. "Better"? by warrax_666 · · Score: 1

    In what way?

    I'll happily admit that I do prefer bzr for its UI, but I hardly think either is objectively "better", whatever that means.

    --
    HAND.
  10. If it looks like a tree, you'll probably be fine by James+Youngman · · Score: 5, Informative

    If the system you are migrating from manages trees, you should be fine. CVS migration is pretty easy and I understand that Perforce works quite well too (in both directions!). Most of the migration tools are listed in the GIT FAQ.

    The places where people are likely to have trouble is migrating from tools that don't understand that there's more than one file. For example, RCS and SCCS both support branches, but in a completely different way to git (branches are per-file, they're not for the whole repository). This means that during conversion, something useful has to happen with them, but the right answer isn't clear to a program. If versions 1.1, 1.1.1.1, 1.1.1.2 and 1.2 of file "foo" exist, then versions 1.1.1.2 and 1.2 are on different branches and either may be the older revision. It's not clear if revision 1.43.1.3 of file "bar" is the same "branch" as "foo" 1.1.1.2 or not. Because RCS and SCCS deal with single files only, it's not possible to find an answer to these questions in the history files at all - if there is an answer, it's just a convention of the user. Essentially what's happening here is that the git import process requires information which isn't represented in the files you're converting from. For what it's worth, migrating from SCCS or RCS to CVS has a similar problem.

    Personally, I've migrated from CVS to git for findutils (well, Jim Meyering did the actual migration; he migrated coreutils too). I haven't regretted migrating at all. It took me a long time of using git locally before I was comfortable migrating the master repo, though. As a git beginner the thing I found most worrying was that I found it hard to envisage the effect of the git command I was typing. The thing it took me a long time to figure out is that with a distributed version control system, it's safe to screw up your local copy, as long as you don't push the result.

  11. Why is it soaring? by SecondaryOak · · Score: 1, Redundant

    I've been working with BitKeeper over the past 3 years. From what I understand Git and BitKeeper share exactly the same concept, all differences being minor ones (for example see http://versioncontrolblog.com/comparison/BitKeeper/Git/index.html). BitKeeper has been around for a while. Why is Git suddenly so popular? Is it so popular? What has changed?

    1. Re:Why is it soaring? by at_slashdot · · Score: 2, Insightful

      Free software tends to soar.

      --
      "It is our choices, Harry, that show what we truly are, far more than our abilities." -- Prof. Dumbledore
    2. Re:Why is it soaring? by Anonymous Coward · · Score: 2, Insightful

      Git is Free and does not cost thousands of dollars. Two pretty good reasons.

    3. Re:Why is it soaring? by Anonymous Coward · · Score: 0

      http://github.com

    4. Re:Why is it soaring? by kyz · · Score: 4, Informative

      It's four good reasons.

      1. You can use git for any purpose. You have to pay serious coin before you can use Bitkeeper for any purpose.

      2. You have the freedom to see how git works, down to every last line of code. I can't comment on whether Bitkeeper also includes this level of freedom.

      3. You can make any damn changes you want to Git, without prior approval.

      4. You can pass on all these freedoms, and the freedom to use your change, to anybody you want. It was precisely the fact you can't do that with Bitkeeper that led to it being dropped by the Linux developers and replaced with a coded-from-scratch replacement.

      --
      Does my bum look big in this?
    5. Re:Why is it soaring? by anarxia · · Score: 3, Informative

      Another reason is that the bitkeeper license prohibits users to work on competing products.

    6. Re:Why is it soaring? by bheading · · Score: 5, Interesting

      I think it's more popular for one of the same reasons that Bitkeeper initially became popular - it's being used by Linus for the kernel. Getting Linus to use one of your tools is one of the best marketing coups you can land. Outside of this, Bitmover is a small company and it's hard to see how they would have gotten the kind of exposure that they did with the kernel. That said, they seem to be surviving just fine today.

      The other reason that it's popular is because it's free. This is fine for open source projects. In the commercial land, managers tend to underestimate the importance of good revision control tools and processes, and the importance of tools which make it easy to build and enforce those processes. Bitkeeper (and some of it's competitors) go to a lot of effort to provide both tools and processes. Git is not so good at this. Other tools that are not good at this include Clearcase (although UCM is an attempt, albeit a controversial one) and CVS.

      And I wouldn't say that Bitkeeper and Git are the same. The underlying design concept - distributed version control, changesets, and the benefits that flow out of this eg proper merge tracking and a greater degree of determinism - are the same. Bitkeeper has much better GUI tools, and it's a lot more user-friendly; the command interface is coherent and consistent, and the commands are simpler and easier to remember, options that do similar things are the same across different commands. For example, the "-r" flag always refers to a changeset number, in any command that accepts this parameter. I used BK on a project with between 20 and 45 users; it never once corrupted the repository and there wasn't a single time when the server went down. There were a few times when things were weird when new users unfamiliar with the tool broke their repos, but that stopped after a couple of weeks. The real benefit is that it makes it very easy to see who broke what, and how - whether it was during development or during a merge.

      Git isn't friendly or forgiving at all, and you need to really know what you are doing. There are operations that are very dangerous, like the rebase operation; BK does have an equivalent but it incorporates some basic measures to stop someone from messing up the repository they are pushing to.

      Additionally, Git will break things in unexpected ways. Try pushing a change into another Git repository, then navigate to that repository and run "git status" - git does not auto-checkout changes in the destination repository during a push. It's the user's responsibility to detect this and deal with it. I find that design approach - the idea that the user is expected to spot and deal with the internal behaviour of the tool - to be pretty bad.

      Linus says that anyone who thinks Git is hard to use is an idiot. Idiocy is not the problem here. The developers in the organization I work in do not want to have to know or care about how the internals of the tool work. They want to cut their code, merge it and integrate it as quickly and as effectively as possible. BK easily beats Git on this measure. On the other hand, Git is far and away the superior open-source revision control tool. Anyone who thinks that Subversion is better just doesn't get it.

    7. Re:Why is it soaring? by Anonymous Coward · · Score: 0

      He didn't say free. He said Free.

      The Oxford Dictionay says:

      free, a. 1. Not in bondage to another. ... 3. gratuitous

      Many people us "Free" when referring to 1. and "free" when referring to 3.

    8. Re:Why is it soaring? by Anonymous Coward · · Score: 1, Informative

      1. It does the DVCS work as well as bitkeeper
      2. It is free software in both senses of the word
      3. It doesn't have a non-compete clause (a very large number of developers don't tolerate such crap)
      4. It has reached critical mass (in fact, it is, like the Linux kernel, far above the critical point), and there are so many good people working on every aspect of git (core, enhancements, CLI interface, GUIs, IDE integration plugins, and even "tortoise" crap for the lesser capable) that it is making a LOT of progress, very very quickly.

      So, while bitkeeper has superior UI tools, that won't last long. That doesn't mean you're wrong at using bitkeeper in your company, as bk is a far, FAR better VCS than anything else in the proprietary software world.

    9. Re:Why is it soaring? by gmack · · Score: 4, Informative

      It's worse than that. The bitkeeper author at one point tried to extend that as a ban on anyone who works for a company that has a competing product with bitkeeper.

    10. Re:Why is it soaring? by cdfh · · Score: 4, Insightful

      Try pushing a change into another Git repository, then navigate to that repository and run "git status" - git does not auto-checkout changes in the destination repository during a push. It's the user's responsibility to detect this and deal with it. I find that design approach - the idea that the user is expected to spot and deal with the internal behaviour of the tool - to be pretty bad.

      At first, I found this pretty unintuitive, however, I now feel that automatically checking out the changes would be a Bad Thing(tm).

      Most of the time, repositories you push to will be bare repositories, with no working tree. If there is a working tree present, then presumably someone is actively working on it. Imagine you are implementing some new feature in your local copy, which is all very experimental, and perhaps not even compiling yet. Now imagine someone pushes a major refactorisation directly onto your working tree, which does not merge cleanly. I would find this exceedingly annoying. [You have not yet committed any changes, and so the push does merge cleanly with the HEAD, but just not the working tree]

      In addition, I think it would be quite distracting if bits of code changed behind my back, when I wasn't expecting it. Especially if I happened to be editing the file in question when it got updated.

    11. Re:Why is it soaring? by cdfh · · Score: 1

      Actually, I just noticed that in the above scenario, git just overwrites the major refactorisation when the local working tree is committed. This is almost certainly not what I'd want :-) I was hoping it would force a merge when I commit the working tree.

      I think all in all, pushing to a non-bare repository should probably be discouraged.

    12. Re:Why is it soaring? by ciderVisor · · Score: 1, Funny

      bk is a far, FAR better VCS than anything else in the proprietary software world.

      Visual Source Safe is surely the better option if you're developing using Visual Studio.

      --
      Squirrel!
    13. Re:Why is it soaring? by Anonymous Coward · · Score: 1, Informative

      Actually, behind the hood Git is technically way superior to BitKeeper.

      The only thing they really share is using the
      distributed model. In other respects, Git is to BitKeeper like Svn is to CVS. Like CVS, BitKeeper uses per-file revisioning, with all of the subtle problems it entails. Git, like Svn, uses a solid approach of revisioning trees.

      Another thing is that Git understands branches, BitKeeper only has the concept of trunk. This means no cheap branches, and makes merging a pain (you can't even try to _compile_ a merge to check your conflict resolutions before you commit).

      The only reason to use BitKeeper is that your revision history is locked into its proprietary format.

        - Kristian.

    14. Re:Why is it soaring? by bheading · · Score: 1

      For most commercial organizations, maintaining (including managing change, testing and QA) or their own revision control software is not an option, so having the source code available is not a big selling point. Sure, it's nice to have that flexibility just in case, but in practice it is unlikely you will need it. And to be honest, I really don't give a damn how git works and the less I need to know, the better. My customers don't pay me to be an expert in Git's implementation.

      What is more valuable to a commercial organization is the option to pay someone to fix problems when they arise and provide support. If I have a bug that's causing me problems with development, I want to fix it now. Not to have to reassign a team of developers to figure it out.

      So I think your argument certainly applies in the open source world, but not for commercial organizations. That's cool - apples and oranges.

    15. Re:Why is it soaring? by David+Gerard · · Score: 1

      Because, being free software, people can actually use the damn thing.

      --
      http://rocknerd.co.uk
    16. Re:Why is it soaring? by bheading · · Score: 1

      Now imagine someone pushes a major refactorisation directly onto your working tree, which does not merge cleanly

      You deal with that by locking out the destination tree and attempting to apply the merge as an atomic transaction. If it cannot be applied because the user has already begun making modifications, then you abort the transaction and rollback to the point you were at before.

    17. Re:Why is it soaring? by David+Gerard · · Score: 3, Informative

      Even Microsoft don't use Visual Source Sink for their own code. (They use Perforce by preference.)

      --
      http://rocknerd.co.uk
    18. Re:Why is it soaring? by bheading · · Score: 1

      If you think that the the four points you raised are relevant to a commercial organization, then you probably haven't worked in one for very long, if at all. Cost of ownership is what is important, not the cost of the tool. And since the set of companies working on VCS tools is a small subset of the set of all companies doing software development, the non-compete clause (which is common enough in the commercial world) isn't a problem either.

      And "critical mass" as in lots of cool bells and whistles is not as important as stability, ease of use and reliability. Open source projects are not driven by commercial concerns, but by whatever the maintainer of the project thinks is cool and whatever a programmer decides would be fun to implement. You're giving away your time for free - why would you spend it doing boring stuff like fixing hard concurrency bugs instead of adding whizzy cool things ?

      That is all fine - I am not saying that open source projects must be driven by commece - but this is a limitation that you need to be aware of when you (in a commercial role) decide to adopt open source tools. Of course, there are many many cases where this all works out fine - Linux itself being one of those.

    19. Re:Why is it soaring? by bheading · · Score: 1, Interesting

      VSS is probably one of the worst VCSs ever conceived, worse even than SVN. You clearly have a very limited experience of real-world team oriented software development.

    20. Re:Why is it soaring? by Anonymous Coward · · Score: 0

      > the non-compete clause (which is common enough in the commercial world) isn't a problem either.

      That probably is true, but probably more because nobody takes it too seriously. Because if you did, it would mean you'd at least have to get a lawyer involved all the time.
      E.g. if you implemented a change tracking feature to some office software, does that fall under the non-compete?
      If not, where is the point where it does? How about git during the time where it had no (useable) GUIs and did not work on Windows, would that fall under the non-compete?
      Or is it based on whether you intend to compete? Would you then have to regularly ask every developer on what they intend? Or is only the intention of upper management relevant?

    21. Re:Why is it soaring? by Anonymous Coward · · Score: 0

      Please accept my apologies for overloading your mind with the complex concept of single words having several meanings. I'll try to make sure it never happens again.

    22. Re:Why is it soaring? by Anonymous Coward · · Score: 0

      Troll? Flaimbait? Can't decide how to mod you...

    23. Re:Why is it soaring? by Anonymous Coward · · Score: 0

      I'm not going to comment on the rest of your comment, but you're using git incorrectly (I made the same mistake starting out). Granted, it's the most obvious way to set up a repository, but I dunno why they don't make it more obvious that you shouldn't do it (i.e. git init . & then on another machine clone that directory).

      Instead, do git --bare init on your server, & use that as the origin (your directory should have a .git suffix).

      You're not expected to deal with the internal behaviors - you're meant to use it properly. Think of it this way - I'm working on a tree and someone has cloned it. The decide to push. As the developer, do I want to automatically have their changes merged (in the best case with no issues) without ever having been told that that is what's happening?

      This use case is very clearly explained in the git documentation.

      Compare this to the bare repository. You'll push into that, but it doesn't actually contained a checked out copy. Somewhere else (perhaps on the same machine) you might have a checked out copy, but it should be obvious to you that you'll need to do git pull on it to get updates. This is the exact same scenario as with any other revision control - pushing to the central repository does not automatically update all the checked out copies (which would be a horrible design decision).

    24. Re:Why is it soaring? by Anonymous Coward · · Score: 1, Funny

      You clearly have a very limited experience of real-world sarcasm.

    25. Re:Why is it soaring? by dozer · · Score: 1

      Nope. Visual Source Safe is a horrible hack -- VCS extensions on top of a file sharing protocol. It's such a disaster to use that Microsoft won't even use it internally.

      They'll sell it but they won't use it. Gotta love Microsoft.

    26. Re:Why is it soaring? by Anonymous Coward · · Score: 0

      Just read the documentation:

      One important thing is that you should push only to remote branches that are not currently checked out on the other side (for the same reasons you never switch to a remote branch locally)! Otherwise the working copy at the remote branch will get out of date and confusion will ensue. The best way to avoid that is to push only to remote repositories with no working copy at all - so called bare repositories...

      http://git-scm.com/course/svn.html

    27. Re:Why is it soaring? by doug · · Score: 1

      If your dog food tasted that bad, would you eat it?

    28. Re:Why is it soaring? by doug · · Score: 1

      Technically it was only the free bitkeeper license that had that restriction. If you had paid for a copy, I'm pretty sure that you could have used bk to develop whatever you liked.

      - doug

    29. Re:Why is it soaring? by mcvos · · Score: 1

      For most commercial organizations, maintaining (including managing change, testing and QA) or their own revision control software is not an option, so having the source code available is not a big selling point.

      Having the source code available to you may not be a big selling point, but having the source code available to other developers who are willing to improve upon the original is most definitely a big advantage.

      Sure, it's nice to have that flexibility just in case, but in practice it is unlikely you will need it.

      The linux people needed it. That's how git came to be.

      So I think your argument certainly applies in the open source world, but not for commercial organizations. That's cool - apples and oranges.

      Did you know plenty of commercial organisations use and develop open source software?

    30. Re:Why is it soaring? by Tracy+Reed · · Score: 1

      git and bitkeeper do not share much in concepts. Didn't you watch the video? He talks at length about how content is king, sha-1 hashes, etc. Bitkeeper mainly pushes around diffs. git works quite differently.

    31. Re:Why is it soaring? by MasterOfMagic · · Score: 1
  12. strategy by carnicer · · Score: 4, Informative

    I have migrated to svn many repos from older stuff, like SCCS and VSS. Migration strategies are important, and to decide about them you need to answer a few questions. First of all, ask yourself if git or DVCS is the best option for you, your project and your company. Just don't be led by hype. It may be that a centralized VCS like svn may be a better option. There are tools to make them perform as DVCS, like the plugins git-svn and bzr-svn. Second, ask yourself how much of the project history is needed, if any is needed at all. That may save you lots of time, disk, chaos and entropy. When migrating, it is very important to tidy up the repo. Purge unnecessary files, binaries, archives, branches, etc. I have seen people who use VCSs like a trashcan. Bad practices may sink the repository performance. After migrating, make sure users know how to use the repo and that understand the basic VCS concepts, either generic or specific for the VCS of choice. Try to remove practices and concepts from the older VCS. As you mentioned it, best practices are very important, and they are not easily found on literature. There is more I could say, but I guess by now it's ok.

    1. Re:strategy by bheading · · Score: 3, Informative

      It may be that a centralized VCS like svn may be a better option.

      I cannot conceive of a scenario where this is true. In any case, you can use Git or any other distributed tool as a centralized VCS if you wish. Just tell all your developers to merge their code into the central location, and not to clone from each other's repositories. Dead easy. Although the idea that anyone would seek to make those restrictions makes no sense.

    2. Re:strategy by grumbel · · Score: 4, Insightful

      DVCS is in concept always better then centralized VCS, since it offers all the same features plus a lot more. However there are things that git handles pretty badly. Binary files are such a thing, you really wouldn't want to keep large binary files in git, since git forces you to download all the history of them, unlike SVN which allows you to only download the latest version. Another thing missing from git is a way to checkout just a single directory or file, when I am just interested in the latest version of a single kernel module its kind of annoying being forced to download the whole kernel source tree.

    3. Re:strategy by drinkypoo · · Score: 1, Troll

      As just some schmuck who downloads sources over the internets for compilation, I will give my POV: git is shit! So far I have done pulls from cvs, cvsnt, svn, git, and mtn that I know of. Of these, the only one worth one tenth of one shit from the user's perspective is svn. Why is that? Because every other remote source code control system will happily corrupt your copy of the repository the majority of the time that there is some communications problem. In the case of svn, you can at least almost always resume a get. svn was invented specifically because cvs couldn't do this properly; with cvsnt it is possible to complete the get with a bunch of sub-gets. Monotone and git both do a WHOLE BUNCH of transfer before actually even sending any files, so if you have users on slow links, they are NOT repeat NOT a fit for you.

      If you will never open up remote access to your source, then perhaps any repo will do for you. But if you plan to open up remote access, PLEASE do not use anything other than svn. Subversion can be painful too (why they couldn't create .svn/tmp directories in the new version instead of just failing because they weren't there, I don't know, but I suspect it can be traced back to developer laziness.)

      --
      "You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
    4. Re:strategy by carnicer · · Score: 1

      i can concede that in *concept*, D-VCS is better than C-VCS (as you put it, C-VCS is a subset of D-VCS). but when it comes to getting things to work, have non-geek developers use it, have multiplatform tools, interoperability, etc, or simply, that the company does not *need* or *want* to use a D-VCS (i.e. does not want the source code to leave *easily* the office), a popular C-VCS like svn may be the choice. also, the learning curve. i have read recently that git's has been flattened in the last year (last time i tried to learn to use it), but if it is already difficult for some developers to use svn, let alone try git (or bzr). fyi, i am using bzr as my D-VCS of choice (was much easier to use than git). i won't of course say that C-VCSs are suitable for all the projects / companies.

    5. Re:strategy by ThePhilips · · Score: 1

      It may be that a centralized VCS like svn may be a better option.

      I cannot conceive of a scenario where this is true.

      You need to work shortly in some large corporate R&D. Average level of corporate developer is quite low. You wouldn't want to give all the power of Git (or any other DVCS) to them because quite quickly it would turn into total mess.

      Also, I have seen that some not very bright developers are always on look out for features to abuse. E.g. I have colleague who always compiles whole tree (that takes about 2 hours). Whenever anybody ask him what he did on any particular day, he normally says "oh, some flags were set not right so I had to recompile." Adding here "oh I messed up my tree and had to clone again" wouldn't help the situation.

      In corporations, you have not choice but to limit what developers can do with their time. Unfortunately in large R&Ds you always have to align on lowest competence level.

      --
      All hope abandon ye who enter here.
    6. Re:strategy by EtaCarinae · · Score: 1

      Well, in a centralized VCS it's probably easier to automate the backup. If you also deploy centralized checkout areas like e g ClearCase dynamic views you get continuous integration.

    7. Re:strategy by ion.simon.c · · Score: 1

      (i.e. does not want the source code to leave *easily* the office),

      I, um. Maybe you're thinking of the entire *history* of the source code? Cause any dev can (generally) burn a couple of discs containing the contents of an 'svn checkout' and carry them out of the door.

      (Though dumping the entire history of a repo is possible using 'svn log' and 'svn diff', if more time consuming.)

    8. Re:strategy by Anonymous Coward · · Score: 0

      Quite the contrary, actually. Since a DVCS is always cloned, backups are as easy as doing periodic pulls from the main repository. Plus, each developer has a full backup on their workstation.

      With SVN for example, I believe your only real option is to make snapshots; tar up the whole directory of database files, etc. It's less efficient, and it has to be done from a local SSH shell, whereas I can use Mercurial or Git over HTTPS.

    9. Re:strategy by dozer · · Score: 1

      What an odd post. There are two VCSes that I've used that regularly suffer from corruption issues: cvs and svn. I have used Git since pre-1.0 and have not seen even a single corruption. In fact, git and hg's repo formats make it almost impossible for a corruption to go unnoticed -- not true of svn or cvs.

      And, you say everybody should use svn for the wire protocol? Yeah, just because one VCS is crippled, let's force everybody to use wheelchairs! Horrible idea.

      The world has moved way past svn dude. You might want to sign up for an account on one of the newer project hosting sites and catch up.

    10. Re:strategy by Jack9 · · Score: 1

      I cannot conceive of a scenario where this is true.

      Really? I wonder what your experiences have been, to expect you're going to have familiar expectations. Off the top of my head, what about people who want to be able to review your commits (anywhere) over time (many commercial settinga)? DCVS speaks to end results, but tosses individual process. That's fine for certain endeavors, not all.

      --

      Often wrong but never in doubt.
      I am Jack9.
      Everyone knows me.
    11. Re:strategy by Kent+Recal · · Score: 1

      Unfortunately in large R&Ds you always have to align on lowest competence level.

      If that's your premise then you're dead in the water anyways. I have a better idea: Why don't you just fire the incompetent slacker instead of slowing down the rest of your team?

    12. Re:strategy by mcvos · · Score: 1

      Really? I wonder what your experiences have been, to expect you're going to have familiar expectations. Off the top of my head, what about people who want to be able to review your commits (anywhere) over time (many commercial settinga)? DCVS speaks to end results, but tosses individual process. That's fine for certain endeavors, not all.

      I'm not sure what you really mean here. Why would this be a problem in git?

    13. Re:strategy by ThePhilips · · Score: 1

      Company can't fire people left and right. Because it's Germany.

      In past my employer tried to "restructure" the company, yet some slackers - who were fired with the premise that their department isn't needed anymore - sued employer and got their positions back.

      But also, from my experience even with most competent R&Ds is that you always have some people who "do not get it."

      "Backbone" of R&D often are some spineless bunch of people living on payroll and living solely for the payroll. They have no opinions, they have no ideas. You can only set rules and give them assignment. Very manageable bunch, yet in the end - unmotivated and incompetent. And company-wide deployed tools are always selected looking back at the "backbone". I call it "backbone," because management see that as "backbone". Competent people who have opinion often are quite unmanageable (e.g. me). Managers do not like people like I am - yet they depend on us: because we give ideas to move product (and company) forward.

      And then we come to a paradox. Company selects some stupid tool - because its level fits to average level of competence in R&D - and they tell me that since me is smart as I'm, I could figure my way around. And generally I do.

      Like it is now with ClearCase in my company. From all CVS clones I worked before, CC is probably one of the best. Yet, it is a CVS in its heart. But I'm already (slowly) implementing some DVCS-like features. I already can "push" patch into branch (provided that there are no merge conflicts).

      --
      All hope abandon ye who enter here.
    14. Re:strategy by turbidostato · · Score: 1

      "I have a better idea: Why don't you just fire the incompetent slacker instead of slowing down the rest of your team?"

      Because as the previous poster already stated, it is a corporation environment. You can hope on a short company to have above average developers, but on a big corporation you know your average whatever, (not only developer) will be, well, average, and then the clever thing is to manage for that. And then, that average worker's job is not dealing with the SCM but dealing with his part of code; if he does it well enough then is nothing but proper management practice to get out of his way anything else. Remember corporate burocracy is basically the art of dealing with mediocrity.

    15. Re:strategy by sudog · · Score: 1

      Commercial development shop that wants to make *more* sure that all development work happens in a place that is backed-up and supported by IT. Additionally, if a developer is using a tool that encourages him to do a pile of work offline then he is more likely to do so. Enforcing the use of a centralised VCS of some sort is a risk mitigation strategy. The corporate SAN? Backed-up administered, carefully managed. The lame little 2.5" HDD in a typical laptop? Could go at any time and all that developer's work is destroyed.

      Additionally, encouraging the cooperative use of a VCS mainline or dev branch measurably decreases the amount of work that a developer has to do. The "merge late" strategy is just putting off and piling up and actually *increasing* total work that must be done. "Merge early, merge often," is an almost dogmatic mantra for a reason: codeline divergence creates unnecessary additional work. If you keep branches that are closely related, closely related by merging regularly, you are reducing divergence and merging becomes much more trivial.

      I don't mean to say that all divergence is bad, nor that decentralised VCS is a bad idea. I just mean to say that I can understand why commercial enterprises are reluctant to embrace the sort of development model that git encourages in its users.

      The real reason why large development shops refuse to pull git in is actually a scaleability problem. Specifically, git doesn't scale up. If it worked as well for millions of files and terabytes of information, everyone would be stampeding to use it. It doesn't and so they won't.

    16. Re:strategy by Kent+Recal · · Score: 1

      Remember corporate burocracy is basically the art of dealing with mediocrity.

      You say that as if it's a good thing or an unchangeable fact of life. Having worked with my share of mediocre teams I can't disagree more. Mediocrity may work out in other departments and a few subsections of IT as long as there's a strong puppetmaster pulling the strings. But I don't believe in the common "100 codemonkeys will hammer out a shakespare" notion.

      A coder who can't properly handle a daily SCM workflow or who even deliberately screws it up to slack off will hurt productivity, no matter how you spin it. Anyone who tolerates such people on their team either has no clue (the common failure-mode in smaller corps) and/or just doesn't care (the common failure-mode in large corps where managers spend most of their time fighting over budgets and bonuses).

      It's no secret anymore that the difference in productivity between a great coder and a mediocre coder is measured in orders of magnitude. I have witnessed teams of 3 outpace teams of 30 more than once and you probably have, too.

      Moreover, if you look at the hiring strategies of the big guys you'll notice that they tend to agree with me here.
      Google, Yahoo, Microsoft, Oracle and others are all said to aim for top-notch only. Ofcourse you can seldomly assemble teams of *only* Einsteins, simply because not so many Einsteins are available. But the idea is to have Einsteins in all critical positions, partly because that's also a natural protection against slackers like the one described by grandparent.

    17. Re:strategy by Kent+Recal · · Score: 1

      Interesting view of the "backbone"-problematic and I can second some of the restructuring problems, as I'm also from germany. :-)

      I generally agree with your backbone-view, but as I described in my reply to turbidostato I don't think that this is a sustainable strategy.
      I have seen the same effects that you describe in many companies but imho those of them that survived only survived because everyone else in their market is *also* working in the same failure-mode. It's nearly impossible to gain or sustain any momententum when you work in this "lazy backbone"-mode.

      That is okay as long as nobody else has any momentum either. But "unfortunately", especially in the web-business, we see these young, unconventional startups pop up left and right. I guess quite a few CEOs cry a lot these days because they must watch how their cake is eaten by a bunch of university-dropouts who simply get shit done without wasting so much time on playing "real company".

    18. Re:strategy by drinkypoo · · Score: 1

      In fact, git and hg's repo formats make it almost impossible for a corruption to go unnoticed -- not true of svn or cvs.

      If your git repo gets corrupted (happened to me three times in a row trying to pull some git tree over a modem) then you cannot necessarily repair it. If the initial pull fails, you cannot continue it. This is broken by design.

      I've never used Mercurial, so I wouldn't know. But monotone certainly has precisely the same problem.

      --
      "You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
    19. Re:strategy by turbidostato · · Score: 1

      "You say that as if it's a good thing or an unchangeable fact of life."

      Of course it's not a good thing but, to an extent yes, is an unchangeable fact of life. You just take the corporation case to the extreme and imagine a single corporation hiring the whole world population, or at least, the whole population of "whatever" (say, Java developers). It's then self-evident that their average-whatever will be *exactly* world's average for such position. This is the limit corporations tend to as they grow their ranks.

      "A coder who can't properly handle a daily SCM workflow [...] Anyone who tolerates such people on their team either has no clue"

      "Proper" daily SCM workflow for an average coder limits to update and check out; changing his working branch at most. Anything else is probably that the team organization "has no clue". And this three common operations can be managed by a visual app or simple command line aliases at worst so no coder has the chance to screw or slack due to this.

      And regarding "tolerating such people on their teams" I just point to this very Slashdot article: just see how *many* people says it's from quite incovenient to intolerable that Git has no proper plug-in for their IDE du jour being that SCM operations are basically independent from their development efforts. In your account most if not all of them enter on the category of those not being worth enough and should be fired. Now ask them if they really consider themselves unfitted for their share of software development and/or ask their managers. The developers will tend to consider themselves "avobe average" on average and their managers will probably consider them "average".

      "It's no secret anymore that the difference in productivity between a great coder and a mediocre coder is measured in orders of magnitude."

      True. As it has been known for ages that some horses run faster than others. The key is to know in advance *which* horse will run the race faster than the others. An inspection to the horse-racing gambling bussiness, it seems not to be such an easy task.

      "Google, Yahoo, Microsoft, Oracle and others are all said to aim for top-notch only."

      Looking at their factual results it would seem that well, either "aiming" and "getting" is quite a different bussiness or that there's no such big difference on net results between "top-notch" and "average". On the other hand, that they aim for (and maybe even get) top-notch doesn't mean that their internal management practices are not oriented towards allowing mediocrity to add up productivity and not hurting too much.

      "But the idea is to have Einsteins in all critical positions"

      Of course yes. But "average team programmer" is not a "critical position". Corporation-wide "critical position" means CxO and related.

    20. Re:strategy by StrawberryFrog · · Score: 1

      I cannot conceive of a scenario where ... a centralized VCS like svn may be a better option.

      Try any commercial development shop, with 2-10 coders working on the same code. The version control is on a server which does CI and release builds, is backed up, etc. Try a typical open source project - one guy maintaining the code, and 2-10 people submitting the occasional patch. (Linux is not a typical open source project, it is an exceptional one)

      My experience is that situations where you don't want a centralised source repository are really rare. But then I don't make the mistake of assuming that my experience is the whole world, and that things outside my experience are inconceivable.

      --

      My Karma: ran over your Dogma
      StrawberryFrog

    21. Re:strategy by badkarmadayaccount · · Score: 1

      Here's an idea, don't buy crappy laptops, don't underestimate their resilience (that of the good ones), and for fuck's sake, give the devs a two-year old laptop, used by a desk jokey first. It won't be intolerably slow, they won't be compiling the WHOLE damn thing at once, with all optimizations active (Gentoo FTW!, BTW). That way a bad batch of hard drives would have plenty of time to die, and the good ones will still be going very strong. Just my $0.02.

      --
      I know tobacco is bad for you, so I smoke weed with crack.
    22. Re:strategy by mannd · · Score: 1

      I migrated from SVN (actually SVK) to git; I used git-svn initially to keep my centralized svn repository up to date, but eventually I did too many merges of too many local branches and now I can't dcommit back to svn. But... I like git so much that I chucked svn and now use GitHub as my central repository.

      --
      Sig expected Real Soon Now.
  13. I want to use git by alexibu · · Score: 4, Funny

    I have watched Linus talk about git on google tech talks, and am inspired to use it.
    Unfortunately I think I need a tool like TortoiseSVN for git because I am a git.

    1. Re:I want to use git by anarxia · · Score: 4, Informative

      Tortoisegit. Haven't used it so I can't tell you how stable or complete it is.

    2. Re:I want to use git by lvv · · Score: 1

      I is very usable from command line too. In GUI you can see some extra info without doing anything, but in my command line I can see it too (screenshots: http://volnitsky.com/project/git-prompt), without typing git status all the time.

    3. Re:I want to use git by ion.simon.c · · Score: 1

      Aye. This is a good find. TSVN is pretty sweet. Hopefully, this will be, too.

    4. Re:I want to use git by HeronBlademaster · · Score: 1

      The problem with TortoiseGit is that it requires msysgit to be installed, whereas TortoiseSVN doesn't require anything extra to be installed in the background. Some people don't like msysgit for one reason or another (primarily the fact that it's extremely slow compared to the Linux version in some cases).

    5. Re:I want to use git by nitehorse · · Score: 1

      What are those cases, exactly?

      I was playing around with the latest msysgit (1.6, 12/27) and it didn't seem to be much slower than the Linux git for the things I was doing. (I cloned the xserver repo from freedesktop.org, made a couple of branches from arbitrary points in history, used 'git blame', etc.)

      msysgit was definitely slightly slower - it took 47 seconds compared to 27 seconds to clone the repo, for example - but nothing that I'd consider to be "extremely slow". And the xserver git repo is much larger than most typical projects, so I'm wondering what it is that I'm missing.

    6. Re:I want to use git by HeronBlademaster · · Score: 1

      I meant to insert the phrase "relatively speaking" but I pushed submit too soon. "Nearly twice as slow" definitely qualifies as "extremely slow, relatively speaking", IMHO.

      In any case, since I have the choice between booting into Windows and using msysgit, or booting into Linux and using git, I boot into Linux ;)

    7. Re:I want to use git by MemoryDragon · · Score: 1

      This is a problem of git itself, git relies heavily on the linux infrastructure and does not have its own abstraction layer, so the developers had to rely on existing abstraction layers for the windows port, it is either msysgit or cygwin.
      This situation will not change in the forseeable future!

  14. "through" is not a verb. by Anonymous Coward · · Score: 0

    Fucker.

  15. "Fucker" isn't either by Anonymous Coward · · Score: 0

    Shut up.

  16. Re:If it looks like a tree, you'll probably be fin by IamTheRealMike · · Score: 4, Interesting

    Right, that was always the weakness of git, and although it's improved I still have problems with its usability (or lack of it). For all the dumping Linus does on Subversion/Perforce and its ilk, they are easy to understand and it's basically always clear what you're doing. I haven't used git for a while, but last time I did it was like a box of sharp knives. Although hard to mess up the remote copy, messing up your local copy was much easier.

  17. Git + Eclipse by david.given · · Score: 5, Interesting

    I'm trying to use git as much as possible --- I'm still pretty crappy at doing anything even slightly complicated with it, but even with minimal skills it's brilliant at keeping track of changes to local directories.

    The only problem is that I'd really, really like a decent Eclipse git plugin. I'm used to using Subclipse for SVN, which is fantastic: I can point at a file or directory, say 'Synchronise with repository', and then get a graphical diff of every change and the ability to quickly and easily revert or commit changes on a per-change, per-file, per-group-of-file basis, etc. (And you can do this with any revision, which makes backing out one specific change very easy.) Doing the same with git's command line tools seems terribly clunky by comparison, especially when I'm struggling to remember the syntax, and the fundamentally unfamiliar workflow.

    I do use the Eclipse git plugin at git.or.cz, but it's still very crude. The file decoration is invaluable, which lets me see at a glance which files are new/changed/pristine in the Eclipse project view, but actually trying to *do* anything with it is deeply unpleasant --- no synchronise view, no graphical diff, and some weird behaviour like if you point at a file, say 'commit this', you get a dialogue prompting you to commit *all* files. Which is not what I want. And there's lots of UI clunkiness all round, due to simple immaturity.

    I've had some luck with giggle, but the UI is pretty bad, and some changes (I forget what; new files, perhaps) don't show up in it, which is a bit awkward. I've had a play with some other GUI frontends but they're all pretty nasty by comparison with Subclipse. Still, the git plugin is getting better with time --- I'm just hoping that Synchronise shows up soon...

    1. Re:Git + Eclipse by Anonymous Coward · · Score: 0

      Funny. I never saw anything like these GUI issues mentioned on the mailing list. So you chose a particularly ineffective way to change the clunkiness.

    2. Re:Git + Eclipse by the_one(2) · · Score: 1

      I'm just curious, what svn plugin are you using for eclipse? I've looked around a bit but the ones i tried were crap:(

    3. Re:Git + Eclipse by Jraregris · · Score: 2, Informative

      When using git with Eclipse I've found it to be most useful to use the git plug-in, but use the command line for actual git action. The plug-in displays useful information about file changes and branches, while the command line offers quick, clean and expressive execution of git commands.

    4. Re:Git + Eclipse by pjt33 · · Score: 1

      He says: Subclipse. I presume from your second sentence that you've tried it and concluded it to be crap, in which case I strongly agree with you. It's so useless that I use svn from the command line. (I would rather use git, but it's not my decision).

    5. Re:Git + Eclipse by david.given · · Score: 1

      Subclipse, yes. I've tried Subversive, which is the recommended SVN plugin for Ganymede, but dislike it --- it appears not to store the SVN metadata in the standard .svn directories, which means its much harder to mix-and-match between the CLI tools and Eclipse. (With Subclipse, I can import a filesystem containing a checked-out SVN project and it notices that it's an SVN tree and Just Works. I haven't found an easy way of doing this with Subversive yet.)

      Also, I particularly don't like the way that Subversive, despite being a standard part of Eclipse, won't actually *work* unless you install some third party files from another update site. This makes me suspect there's something dodgy with the licensing going on...

    6. Re:Git + Eclipse by pjt33 · · Score: 1

      I find that Subclipse notices that it's an SVN tree and gives an error message.

    7. Re:Git + Eclipse by the_one(2) · · Score: 1

      Damn me and my sloppy reading =D. I don't remember which i tried but as you say command line works fine so it's not really a big deal

    8. Re:Git + Eclipse by Anonymous Coward · · Score: 1, Interesting

      The thing that I've found with git is that using the command line tools is a thousand times easier than SVNs tools, so the need for a good GUI is much less. Doing diffs, choosing which files to commit, previewing your commits - all those things are really easy to do on the command line with git.

    9. Re:Git + Eclipse by swillden · · Score: 1

      I would rather use git, but it's not my decision

      Have you looked into git-svn? It lets you check out an SVN repository into a local git repository. You can then use all the branching/stashing/history tweaking goodness of git on your local repository. When you are ready to push your changes into SVN, or need to pull changes from SVN, those operations are easy and seamless.

      IMO, git-svn makes SVN considerably nicer to use.

      --
      Note to ACs: I usually delete AC replies without reading them. If you want to talk to me, log in.
  18. It's not so hard to do by bheading · · Score: 2, Informative

    It's not surprising that developers increasingly favour distributed version control. It's a much more flexible way to work - and if you need to continue working in a centralized way, you can still do that.

    If you're migrating to Git, there are a few things you need to account for. Do you want to migrate the history, or make a clean break using the current head of the tree ? Migrating the history is usually hard if it is in a commercial tool, since commercial companies quite obviously do not design their tools to make it easier for you to abandon them (some provide export tools). If you choose not to migrate the history, you have the issue of having to keep the old revision control system around to debug/fix/review older releases.

    You need to be clear about your decision. Import some example code into Git (perhaps from your existing repository), put it on a server and ask your developers to play with it to make sure they're happy with the feel and that they're confident they can work with it. Make sure you practice doing things like merging conflicts and merging older maintenance branches. If you do this right, most of your developers should be fairly enthusiastic about the switch when it comes. Make sure you account for Windows users - Git isn't so hot over on Windows and I don't think there is an official stable Windows release yet.

    Other than this, there's really very little to it.

    1. Re:It's not so hard to do by dozer · · Score: 1

      Not true anymore. msysgit works great on Win.

      http://code.google.com/p/msysgit/
      http://kylecordes.com/2008/04/30/git-windows-go/

    2. Re:It's not so hard to do by ebuck · · Score: 1

      Well it's not surprising, but it's not necessarily a good thing either. Developers are prone to fall victim to celebrities like Torvalds using tools that make sense for him which don't help us one bit.

      Torvalds has a lot more submitters than most projects, and a development environment which pushes a lot of work onto the submitter. Hey, in his case, that's a good thing, because otherwise he'd never get to sleep.

      Most projects have fewer than a hundred developers, and probably fewer than ten. They benefit from the advantages of a centralized repository for offsite tape backup, a central starting point for integration testing and other QA testing, a central starting point for official builds, etc.

      With git I keep hearing that you need to have everyone merge their local repositories into a central repository. To me, it sounds like you "solve" the P2P nature of git by manually reimplementing a central server in your development process.

      I'll hold off a bit until the functions of quality assurance, build releases, backups, etc. also scale along P2P technologies. QA is better poised than most, because unit testing could scale P2P. Other forms of QA, like integration testing, usability testing, installation testing, etc. aren't as well poised for P2P technology. Build releases assume the opposite of a P2P environment. Backups of thousands of repositories is much more expensive and prone to failure.

      It is human nature not to do a task when you are certain that someone else will do the same task. That's why people who are injured often don't receive help in group situations, everyone passes the responsibility back to another unknown member of the group. A fully P2P development process will have to guard against this aspect of human nature; otherwise, no code review, quality assurance, or backups will ever be guaranteed. That's a death stroke in risk reduction, open source or otherwise.

    3. Re:It's not so hard to do by XO · · Score: 1

      If by "great" you mean "it's a giant piece of crap that can't handle whitespace and EOL properly", sure.

      Oh, and the windows ver has no concept whatsoever of file permissions, so when you're interoperating with linux users, and you add new stuff, everyone else that pulls it from you has to chmod it.

      The tab order of Slashdot is really fucking annoying, also, I just hit "Tab" to go to the "preview" button, and it dropped straight down to the bottom of the fucking page. Nice.

      --
      "Champagne for my real friends - and real pain for my sham friends!" http://ericblade.postalboard.com/
    4. Re:It's not so hard to do by dozer · · Score: 1

      True, you need to "git config --global core.autocrlf false". But that's only an issue if your files have embedded \rs. Most don't.

      Git has no concept whatsoever of file permissions either except for the execute bit. To control it on Windows, use "git update-index --chmod=blah". No big deal.

    5. Re:It's not so hard to do by HeronBlademaster · · Score: 1

      With git I keep hearing that you need to have everyone merge their local repositories into a central repository. To me, it sounds like you "solve" the P2P nature of git by manually reimplementing a central server in your development process.

      This is exactly what always occurs to me when people talk about distributed source control systems. What's the point of proclaiming how superior git is for not having a central repository if you have to choose a primary (central) repository anyway?

    6. Re:It's not so hard to do by Anonymous Coward · · Score: 0

      What's the point of proclaiming how superior git is for not having a central repository if you have to choose a primary (central) repository anyway?

      The best thing, IMHO, is that in Git I can make changes that break the build, and check them in anyway. This is because I am really only checking them in on my own machine. Then I keep working, and keep making checkins, until it's ready to go up on the master server; then I execute "git push" and push ALL my changes up together.

      I get all the benefit of a version control system: revision history, easy diff to see what my changes are, etc. But I have less worries.

      Now that I'm used to working this way, I guess I could do something similar on a centralized version control system, if I could work in my own branch; as long as merging the branch later is really easy. But I gather that most version control systems don't have branching as easy/fast as Git has.

      With Git, I could have my own copy of the project in a half-baked state, and then check out the files onto a laptop! Then keep developing on the laptop, checking in changes, again having the full power of a version control system; and when I returned to work, I could "git push" the changes up from the laptop onto my development system, and finish the work there before finally doing "git push" up to the centralized server.

      At my current job, I'm using Git because I like it, not because I have to.

    7. Re:It's not so hard to do by turbidostato · · Score: 1

      "The best thing, IMHO, is that in Git I can make changes that break the build, and check them in anyway."

      Then it is the process the one broken, not the central SCM tool. SCM stands for Source Code Management it says nothing about "it must compile". If it makes sense, then the process around the tool should allow you to commit without "breaking" anything.

      "Then I keep working, and keep making checkins, until it's ready to go up on the master server"

      You are adding unqualified semantics, again, due to poor processes in place. Why are you saying "it's ready to go up to the master server" when you really meant "it's ready to compile", or to go to QA or anyhting to such point?

      "I guess I could do something similar on a centralized version control system, if I could work in my own branch"

      Exactly! That's a common pattern. Well, it's an antipattern (a branch per developer) but you start to see the light; a brach per bug/feature is better. And applying patches from trunk to a "build branch" maybe by means of a moving tag is even better.

      "as long as merging the branch later is really easy"

      Quite true: some tools are better on that regard than others (svn for instance has its own nuisances about it, but branching/merge back is cheap and easy, once the process is properly understood -basically just remember at which revision did you started the branch with "svn cp" plus "svn switch" and then "svn merge" plus "svn switch" again when you are finished and even this is becoming easier on new svn versions). And some processes are better suited than others (and the so common "we build out of the head of the trunk, so you don't dare break the build process with your commits" is probably the worse of them and the one that makes DCMS so attractive for developers on a corporate environment where centralized SCM usually makes the most sense).

    8. Re:It's not so hard to do by HeronBlademaster · · Score: 1

      That is something I like about git, too; however, the feature could (conceivably) be implemented in something like Subversion on the client side without modifying the server. The feature has little bearing on whether a centralized repository is any better or any worse than a distributed system like git.

    9. Re:It's not so hard to do by Chris+Pimlott · · Score: 1

      I don't actually use git, but I've heard it's actually possible to add historical snapshots to an archive at a later date. So you could switch over with no history and start using it right away, and worry about important your old repository's history later.

      moreSome folks have toyed with the idea of constructing a git tree of historical linux releases.

      Linux commented:

      The good news is that git would be a lot more natural to the process of
      trying to create a history, because you could basically import random
      trees, and tag them as just independent trees, and then re-create the
      history after-the-fact by trying to stitch them all together. And if you
      find a new tree, you'd just re-stitch it - something that was very hard to
      do with BK (and BK generally wouldn't help you with keeping multiple
      independent trees around, and wouldn't generally accept the notion of
      re-doing the histories and keeping various versions of the histories
      around).

      To me, that suggests you can import history at a later date and still integrate it properly in your tree.

  19. Bazaar by Anonymous Coward · · Score: 1, Insightful

    I haven't tried git, but I think that the pure fact that is developed in raw C and uses SHA-1 keys for revisions makes it a pain in the back.

    Bazaar is way more convenient on this. Written in python, easily extensible, and uses easier numeric revisions, like SVN.

    1. Re:Bazaar by Drinking+Bleach · · Score: 1, Interesting

      Does bzr provide any attempt to sanitize incremental revision numbers? I know that both Mercurial and SVK have issues where you need to figure out that "my r9342 is your r8929". Git avoids this issue entirely since my repository's 92a560f20e72e4296c782d3fbb4706e6946d6209 is always going to be your 92a560f20e72e4296c782d3fbb4706e6946d6209, assuming you have the same commit of course ;)

    2. Re:Bazaar by Anonymous Coward · · Score: 3, Informative

      huh ? mercurial has no issue with revisions numbers, revisions are indexed with a hash just like git . The sequencial numbering is available as a convenient alternative for referring to a rev, that's all.

    3. Re:Bazaar by oojah · · Score: 2, Informative

      hg has both a revision number and a changeset id. The revision number is human readable and useful within a particular repo. The changeset id is unique across repos, the same as git does.

      --
      Do you have any better hostages?
    4. Re:Bazaar by janwedekind · · Score: 2, Insightful

      The main difference between Bazaar and Git is that Bazaar only tracks files while Git tracks changes. Git therefore is technically able to merge changes where one developer has moved code from one file to another while another developer made modifications to that code. On the other hand Git can have difficulties keeping track of things if you rename and change a file in one commit.
      I switched from CVS to GNU-arch (tla). When GNU-arch was discontinued I switched to Bazaar. The command-line interface of Bazaar is easy to use. For example the symmetry of "bzr push" and "bzr pull" is really nice.

    5. Re:Bazaar by Fweeky · · Score: 1

      SVK has issues with revision numbers because they're the native way SVN indexes revisions by; doesn't SVK provide something more global?

      bzr uses chained hashing just like every other DVCS; your numbers can get out of sync with upstream if you've committed different things locally, but in that case your repository's diverged anyway and you'll either have to merge or rebase it to get back in sync; the merge changes your revisions to dotted form, 534.1.1 or so, while rebase moves the revisions to the end.

    6. Re:Bazaar by Anonymous Coward · · Score: 0

      "my r9342 is your r8929". Git avoids this issue entirely since my repository's 92a560f20e72e4296c782d3fbb4706e6946d6209

      In mercurial you are free to use 92a560f20e72e4296c782d3fbb4706e6946d6209 or just 92a560f20, too. The revision numbers are local, hashes are global. There is no way a DVCS could have global, consecutive revision numbers, but sometimes they are easier to work with (locally), than the hashes.

    7. Re:Bazaar by Anonymous Coward · · Score: 0

      Mercurial uses unique hashes for revisions just like git. In addition to this, it assigns a revision number that is only guaranteed to be unique on your local repository. Personally, I prefer having the option. Remembering r200 comes after r201 is easier than remembering ed546fec... comes after b5ddc6ca... even if you only have to remember the first few characters.

  20. My (short) experience with git so far by JensR · · Score: 5, Interesting

    I used to use cvs, subversion and perforce. After switching to git, it feels a lot more powerful, at the cost of more things that can go wrong.
    My workflow with subversion was:
    - regular update: update, check/fix conflicts, continue work
    - commit: update, pick files I want to commit with TortoiseSVN, verify the changes in the diff view, write log message, commit, continue work
    On GIT:
    - regular update: stash my changes, change to master branch, pull, check for errors or dirty files (mostly endian problems), switch to work branch, rebase from master, check for errors or dirty files, unstash my changes, check for errors or dirty files, continue work
    - commit: update, stage the files I want to commit, commit them, verify the changes, push
    At several stages some obscure thing could go wrong that I needed to look up in the manual or on the internet, or needed to ask someone who used it for longer. That doesn't mean I think GIT is bad, I just feel it takes more time to be fully productive with compared to older systems. And I miss a few minor things from svn, like keyword expansion or properties.

    1. Re:My (short) experience with git so far by Entrope · · Score: 1

      For a regular update, why not use "git fetch origin && git rebase master" (if the "master" branch is set up to follow a branch from a remote "origin" repository)? I'm not sure what "check for errors or dirty files" means -- it is not a step that I ever have to perform when pushing or pulling master branches in git, but otherwise your regular update path collapses to just a fetch and rebase.

      For commits, I would recommend using git gui. I am usually a command line guy, but git gui makes it much easier for me to review changes, stage them, compose the commit message, commit and push.

    2. Re:My (short) experience with git so far by dozer · · Score: 1

      Why stash / unstash before pulling master? Just commit your changes to a feature branch.

      The only scary part of your workflow that I can see is the rebase. And, yes, rebase is a bit of an odd child. I hope that the Git team spends some time making it more more predictable and easier to use.

    3. Re:My (short) experience with git so far by JensR · · Score: 1

      That was mostly because code is sometimes not feature complete, or has some debugging/testing bits left in. We had a code review system in place, and I didn't want to increase the workload of the reviewer to check if any commit undid or modified changes of an earlier commit.

    4. Re:My (short) experience with git so far by JensR · · Score: 1

      I mixed up "endian" with "end-of-line", and we were working in a mixed Windows/Linux environment. The automatic change to native end-of-line that git does sometimes marked files as dirty, which required an extra commit before I could change back to my feature branch. It's quite possible that that process would've smoothed out over time.

    5. Re:My (short) experience with git so far by iabervon · · Score: 1

      You can probably simplify the git workflow a lot.

      You don't need to update at all until you're done with your branch. If there were any benefit to updating regularly, you could get exactly the same effect at the end by rebasing a dozen times against progressively newer commits in the upstream history. The exception, of course, is if someone has done something you want to use, but you can just update to the point you require. SVN doesn't have a command for "updating all the way is too hard, update only a little bit at a time", which gets people in the habit of updating all the time.

      If this is your whole workflow, you shouldn't have any of your own changes on the master branch (except, of course, when you send out your work branch and then get it back in the next pull), so you shouldn't need to fix anything there; in fact, the "pull" should just say "fast-forward" and give you exactly what is in the main repository. In fact, you can skip having a master branch at all, and just rebase against "origin/master" (which is the state of the main repository the last time you looked).

      You should use "git commit" all the time. Until you push, you can revise commits after you make them. As soon as you've done any work you wouldn't want to redo, commit it. Then use "git commit --amend" when you do more. Eventually, do another amend to write a real message, inspect the change with "git show", then fetch, rebase, make sure you still like it, and then push.

      I generally work with two branches, one which contains just whatever I've written as I write it, with tons of commits with the message "more stuff" or "fixes", and the other formed by getting a diff between origin and the junk branch and applying only those parts that are actually all one logical change and all good, and committing it with a good message. I repeat this until my good branch contains everything worthwhile, and then I dump the branch that's only got unneeded debugging statements, whitespace changes, and so forth.

    6. Re:My (short) experience with git so far by Entrope · · Score: 1

      There is usually a combination of settings for core.autocrlf and/or core.safecrlf that will do what you want, although finding it (and making sure it works the way you want) can be time-intensive and sometimes tricky. I had the same headaches when I converted from a Subversion repository (with wrong-format EOL characters, due to developing under Windows but committing under Linux) to git, and eventually settled for core.autocrlf=false. The .gitattributes file allows you to override the global and repository-wide options on a per-file (or per-glob) basis.

    7. Re:My (short) experience with git so far by Anonymous Coward · · Score: 0

      - regular update: stash my changes, change to master branch, pull, check for errors or dirty files (mostly endian problems), switch to work branch, rebase from master, check for errors or dirty files, unstash my changes, check for errors or dirty files, continue work

      "git pull --rebase" does all of that. Or if you prefer, "git fetch" and then "git rebase master". Either way, not nearly that many steps.

      - commit: update, stage the files I want to commit, commit them, verify the changes, push

      You don't need to update first. Just stage and commit, git push, and *if* that gives an error saying you need to pull first then pull --rebase and then push again.

  21. Until Git Tools are mature, SVN will do just fine by Qbertino · · Score: 4, Insightful

    I've just gotten fluent with SVN versioning after using it for a few years now. I understand that part of what bothers me about it is what bothers Linus Torwalds aswell and had him write Git and I can follow his reasoning in his famous Google speech on Git *and* I understand the hype that ensues around Git and welcome it. That said, until Git has a neat set of stable mature GUI tools to use with it, I'm sticking with Subversion, TortoiseSVN and/or Subclipse. A mature working toolkit that I know how to handle and that works more or less flawlessly.
    Even a toolset like that would've costed thousands ten years ago. That goes to show how far we have come in some areas of the software field.

    --
    We suffer more in our imagination than in reality. - Seneca
  22. Mercurial vs. Git by rpp3po · · Score: 5, Interesting

    I'm working on the OpenJDK source tree through Mercurial. I couldn't be more satisfied. The tools are well structured, very easy to use, stable, fast and well documented. I don't miss any feature. Could anybody, who tried both and prefers Git, list some advantages of it over Mercurial? To me it just seems like a Git done right without the hype and too complex UI.

    1. Re:Mercurial vs. Git by dozer · · Score: 2, Interesting

      Last I used Mercurial, I couldn't create a feature branch. I had to clone the whole damn repo. Well, either that or I could create a branch that lives forever, not a good idea if I'm doing a crazy experiment.

      In Git, if I want to try something out, I create a feature branch (takes basically no time or disk space) and hack away. If it sucks, I just delete the branch. It's a very nice way to work once you get used to it.

      Have they improved branching in hg?

    2. Re:Mercurial vs. Git by Anonymous Coward · · Score: 2, Interesting

      I've been an enthusiastic Mercurial user for about two years. About a month ago, my mounting frustration had reached the point where I made the decision to switch to git, and now I doubt I'll ever be tempted to switch back.

      For example, "git rebase" lets you do basically the same thing as MQ, but they're architected differently. In git, you transmute one, normal whole-tree commit into another; in MQ, you transmute one diff into another. My point is that git's approach also records the old parent, onto which the patch series cleanly applies! I can't tell you how many times I "hg qpop -a; hg pull; hg qpush -a" and in so doing destroyed that information. Not really what "hg bisect" was invented for. And, since each patch isn't actually a patch, you can check it out and get a normal tree with which you could use an external 3-way merge tool (not that you'd normally need to, since git's merge machinery seems to be used for rebase too). Or even just edit it without having to know how to fixup hunk offsets by hand.

      I think a lot of it boils down to Mercurial's repository format: Hg's append-only repository format is to a tree as git's is to the flying spaghetti monster. Its a beautiful piece of engineering, but it's simply not powerful enough to represent the workflows real development projects want to use. Just look at the provided Hg extensions: most of them do what they do by slicing and dicing the append-only history. There's nothing inherently wrong with that, but it's not reversible. If you screw it up, you have to clone again. With git, you have other options.

      As a brand-new git user coming straight from Mercurial, I have to say the whole "complex UI" mantra is out of date. I remember looking at an old version of git before deciding on Hg -- *that* was a too-complex UI. Now, the command paradigm is just *different* (its not a superset of CVS, like Subversion or Mercurial tried, mostly, to be). No big deal.

    3. Re:Mercurial vs. Git by Anonymous Coward · · Score: 0

      I have a friend who has used both. He likes both of them, but he still prefers git. Not sure about the reasons as I don't know Mercurial, but he talks a lot about branches.

    4. Re:Mercurial vs. Git by PSargent · · Score: 2, Informative

      Have they improved branching in hg?

      Bookmarks are what your after and they came in a couple of versions ago.

  23. Darcs by brainnolo · · Score: 1

    I am using Darcs and it seems to do the job. Is strange that it isn't even mentioned cause it has been around since quite some time and is pretty mature. The only problem I am having with Darcs is huge resource consumption (a copy of the repository is on a VPS with 256mb RAM, no swap) but you can move a repository by just copying it somewhere else (even across systems) without problems. What are the advantages of using Git/Mercurial/Bazaar? I think I need to mention that I am developing on OSX (but a copy of the repository is on a Linux system).

    1. Re:Darcs by BlueCodeWarrior · · Score: 2, Informative

      Check out GitForDarcsUsers. Also, you may be interested in why ghc switched to git.

    2. Re:Darcs by burris · · Score: 1

      The largest user of Darcs, GHC, just stitched to git because of serious merge/conflict issues, bugs, and performance problems. They have posted an evaluation of their situation.

    3. Re:Darcs by WWWWolf · · Score: 1

      Darcs isn't the most efficient beast when dealing with repositories that have lots of binary files. Darcs 2 hashed-pristine repositories are also pretty damn slow right now to compound the problem. If a simple darcs whatsnew -ls takes 20 seconds on a directory tree with ~400 files and commits go crunchy-crunchy-crunch-done, it's starting to get a little bit aggravating.

      After migration to git... git status takes never more than 2-3 seconds. And the tree with repo is much smaller too. Yay.

      Oh, and memory use is usually not a problem - there's always swap for that. Speaking of which, ever tried to build Darcs from source on a machine with 32 megs of memory? It was just not pretty. =)

  24. Git providing access to the latest files by CarpetShark · · Score: 3, Insightful

    You're quite right. It seems to me that Git isn't intended to provide access to the latest versions of individual files. Git, like all DVCS's I know of, is essentially a version-control plugin for your filesystem. The filesystem itself provides the current version you're working with, and so it's only a matter of providing an http server over the directory or something like that. Which is exactly what GitWeb and Trac-Git provide, only they're better.

  25. Mercurial? by Anonymous Coward · · Score: 0

    I'm sure git vs. hg will be the next $EDITOR war, so I'm wary of asking this, but: has any used both git and hg, and which did you (personally) prefer, and why?

    1. Re:Mercurial? by ekhben · · Score: 1
      Git's HTTP repository module corrupted things for me, silently. So I went to Mercurial, which is less obtuse in any case. Git seems to be good if you like to be on the bleeding edge, walking the line between instability and configurability. Mercurial is better if you like your tools to stay out of your way until needed, without needing to go through a hefty configuration process.

      Do you use pre-built kernels, or do you religiously build your own every new release? ;)

  26. Girl Adoption? by LunarCrisis · · Score: 1

    Anyone else read that as "Girl Adoption Soaring; Are There Good Migration Strategies?"?

    *goes hunting for coffee*

    --
    Mr. Period: Nine is the one that's right by ten!
    Nine: One day I will kill him. Then, I will be Ten.
  27. Use cvs2svn for CVS repositories by shepmaster · · Score: 0, Offtopic

    Use cvs2svn to convert your existing CVS repositories.

    The tools that come with git for converting CVS to git do not work. You will see other posts about how git is different, such as how it manages commits versus files. CVS manages files, and doesn't track them well.

    It has no ideas of when a branch ends, and even when they start is a bit iffy. Add to that the fact that CVS lets you pick and choose random files to be on a branch, then you can really start to get into a strange state.

    For our CVS repository (goes back to 2001, we had 100's of branches, maybe 1000 tags), the git cvsimport tool placed code from our current development trunk into older versions. I'm sure you can see how bad that is.

    After getting burned by that, we turned to cvs2svn. It took a long time (8 hours) to convert, but it converted correctly, and you only ever have to do it once.

    My advice is to convert your repository, then check out random versions from both CVS and git, then run a diff on all the branches of importance. I wrote a script to do it for all branches and tags because I got burned the first time.

    1. Re:Use cvs2svn for CVS repositories by ckaminski · · Score: 1

      Don't waste your time. SVN + SVK does nearly everything that git and hg do. Git's merging is a bit better, but the distributed bits, SVK does better, and you have the ability to use all the Graphical SVN tools as well.

    2. Re:Use cvs2svn for CVS repositories by shepmaster · · Score: 1

      To be clear for anyone reading this - use cvs2svn to convert your CVS repository to git. It's the only tool that does it right!

  28. Let me guess by Rhabarber · · Score: 1

    Some of our submodules are 20 times bigger than the Linux kernel and there is no way to subdivide them more than that. Our source base really is that big.

    Let me guess... that's Windows Vista ;)

  29. Re:If it looks like a tree, you'll probably be fin by ThePhilips · · Score: 1

    Although hard to mess up the remote copy, messing up your local copy was much easier.

    Can't find the quote from Tom Lord (GNU Arch (tla) author, one of the first DVCS), but he was saying something like: in centralized systems, only admins have full power of the versioning, normal users are treated like economy class.

    After migration from centralized system to decentralized, one has to stop for a moment and realize that now everything can be done, everything is possible: there are no more big brother behind your back. This is great power and at the same time great responsibility. But thanks to the fact that you ruin only your local sandbox, that "great responsibility" bit can be easily ignored, leaving you only with "great power."

    For all the dumping Linus does on Subversion/Perforce and its ilk, they are easy to understand and it's basically always clear what you're doing.

    Can't tell for SVN/Perforce, but I can tell for some other centralized systems. It is not so very clear what you are doing there either. Most centralized systems have heaps of scripts running server-side which might actually recast any command you are issuing into something completely different.

    But as I have mentioned above, in centralized systems you can do much much less with your repository. Decentralized systems provide much more functionality and that gives rise to the confusion. It's only natural.

    To me personally, main advantage of systems like Git or HG or Arch is that there is literally no administrative overhead. (Well, truth to be told, Arch has some.) If you have well organized development with many people involved, then the overhead of setting up and maintaining centralized repository isn't that great. But in my case of lone hobby developer, set up of SVN server, integration with Apache - are all just time wasters. I have started reading SVN documentation but it was already too late in SVN life cycle and documentation became very very fat. But with Git all I need to do to start new project is "mkdir fancy-project; cd !$; git init" and then just move files over. And, most importantly, performing backup is as easy as "git push".

    --
    All hope abandon ye who enter here.
  30. Git Adoption Soaring? by cjjjer · · Score: 3, Interesting

    Funny the OP only mentioned two projects and one is only planning. Sometimes /. can be a bigger hype machine than money grabbing corps. that we all love to bash.

    1. Re:Git Adoption Soaring? by Anonymous Coward · · Score: 0

      Well Gnome is actually not a project, it is a set of projects. Here is alphabetical list of them: http://projects.gnome.org/

      But there are quite a lot of projects using git nowadays. I'm fairly sure that everyone doing programming will have to learn git sooner or later. No matter is it hype or not, everyone will use it. I prefer doing sooner as that is why I am the guru and others are students ;)

  31. Crap IDE Integration by smack.addict · · Score: 1

    Who wants to use a tool with crap IDE integration?

    1. Re:Crap IDE Integration by uassholes · · Score: 1

      IDE's are for wussies. Unless you're on windows, in which case I understand, sorry.

    2. Re:Crap IDE Integration by Anonymous Coward · · Score: 0

      Who wants to use an IDE with crap tool integration?

    3. Re:Crap IDE Integration by mcvos · · Score: 1

      Who wants to use a tool with crap IDE integration?

      Nowadays I'd rather use no IDE integration. The problem with IDE integration is that you're limiting yourself to the tools that have been integrated with that IDE, and that doesn't always include the best tools for the job. Like git.

      Even when I programmed Java in Eclipse with SVN, I still had to do lots of stuff on the command line or in separate tools. Git is just one more tool.

      Ofcourse it would be nice if git all popular IDEs got a git GUI, but at the moment, due to not using any integrated tools beyond syntax highlighting, I'm not tied to any particular IDE, and I find it strangely liberating.

  32. Lack of Windows support is still a big issue by Anonymous Coward · · Score: 3, Insightful

    Many of us develop on Windows, pushing out code to Linux platforms. Git just isn't an option. Poor support for IDEs, especially Eclipse.

    Bazaar has been working great for me. Used Mercurial with success as well.

    1. Re:Lack of Windows support is still a big issue by uassholes · · Score: 1

      Many of us develop on Windows, pushing out code to Linux platforms.

      WTF!? You'd probably put your horse behind the cart, too.

    2. Re:Lack of Windows support is still a big issue by Anonymous Coward · · Score: 0

      Switch to GNU/Linux, full stop.

    3. Re:Lack of Windows support is still a big issue by MemoryDragon · · Score: 1

      It is not that easy... Often it is company policy to use windows and the deployment platform then is a unix system...

    4. Re:Lack of Windows support is still a big issue by MemoryDragon · · Score: 1

      Just to explain more, the company I work for has exactly this policy. Everyone has a fixed type of workplace with Windows as the platform enforced, underneath that it is the same toolchain, at least developers have more freedom on what to install!
      The deployment however is done onto Unix systems, the language naturally is java in this case, because it is the only one which gives enough power librarywise and is potable enough to support this kind of situation!

    5. Re:Lack of Windows support is still a big issue by Anonymous Coward · · Score: 0

      I most definitely do not develop on Windows. The opacity and lack of control is suffocating. That is what brought me to Linux and to FOSS. Afterwards, learning more about Microsoft the monopolist meant that I no longer support their platform. I don't use or port to any part of their platforms or technologies.

      OTOH, porting to Linux is technically a Good Thing. That's because I'm not in the mood to develop serious software that can't be supported because we can't at all see into the system library calls our applications are making (especially frustrating when tracking bugs.. though trying to optimize and develop robust security measures are real issues as well).

      --Jose_X

  33. Easy Git by amundson · · Score: 1

    I've been using git personally for about a year now and have finally reached the point where I am ready to get the rest of my group to adopt it for our work. The tool I am recommending to help with the early git learning curve is Easy Git, http://www.gnome.org/~newren/eg/. Easy Git (eg) is a very thin wrapper around git. It provides clear and suggestions for git usage. Unlike other porcelains, you can trivially switch between eg and git at any time. I think Easy Git can improve the initial git experience for many potential git users.

  34. Moving to a DVCS does not have to be hard by Z-MaxX · · Score: 1

    The Perl foundation's move to Git took so long primarily because they had to gather decades of history from scattered sources: "Some of the patch sets were apparently recovered from old hard drives".

    For instance, the MySQL project moved to Bazaar last year, apparently very smoothly. Getting started with Bazaar for MySQL.

    --
    Dr Superlove 300ml. I use my powers for awesome
  35. BitKeeper is dead by mkcmkc · · Score: 1

    I doubt that BitKeeper is as good as git technically, but it's irrelevant. I remember the BitKeeper debacle and I read a lot of posts by its author. Based on that, I'd use Visual Source Safe first, and I imagine a lot of others feel the same way.

    Beyond that, if you look at the git lists and pace of development, it's clearly vibrant. Without looking at the website, I'm not even sure whether BK is still in business. Your post is the first time in years I've ever heard anyone say that they're using it.

    --
    "Not an actor, but he plays one on TV."
  36. I tried "git cvsimport" and "cvs2git" by e40 · · Score: 2, Interesting

    Neither worked on my 18 yr old CVS repo (that was populated with 7 yr old RCS files). What I did find was fromcvs. I found a couple of bugs, with the author fixed very quickly. It is also fast. My 3.5G CVS repo was converted in about an hour. Both of the others took 10+ hours (and didn't produce usable output). The biggest reason I love it: it allows incremental updates from CVS to GIT. You can run it any number of times and it imports the new stuff. You do need to leave the git repo you are importing into alone (no commits other than the import commits).

    I still have more testing to do before we go live, but it's looking very, very nice.

    1. Re:I tried "git cvsimport" and "cvs2git" by m.dillon · · Score: 1

      Yes, corecode converted DragonFlyBSD from CVS to git using fromcvs. It did a very good job on the head and most of the branches. I think there were more substantial issues converting the vendor branches but all in all it did a good job. Of course, once you get them into git maintaining vendor branches becomes utterly trivial.

      The DragonFly project switched to git late last year. I consider the conversion a big success and, frankly, just being able to have the mirrors sync on a 5 minute interval made it worth it even if one disregards all the other advantages. With CVS our mirrors couldn't sync more then a few times a day due to machine and network load.

      We were also getting really, really tired of cvsup.

      git makes developer-maintained branches for large side projects ultra easy to do. The 'git daemon' feature allowed us to trivially export all developer side projects from our developer shell box. The branching and merging features in git are very powerful. gitk, gitweb, and other tools in the git space are very nice. It is open-source at its best.

      When considering what repo to move to we also looked at svn and mercurial. svn was discarded, it was simply inadequate... kinda like CVS with a few of the issues fixed but no real advancement in the technology. Mercurial was still an option but its lack of proper branching support doomed it. GIT won in the end and we haven't looked back since.

      Disk space is not an issue at all. One of the common complaints about git is the .git sub-directory containing a copy of the repo. It did take a little getting used to but frankly after a month or two we stopped worrying about it. Syncing is so fast and hard drives are so large these days one just doesn't notice the extra copies or feel a need to optimize or reduce. Though of course I still use NFS to distribute active sources to test machines so I can edit the sources on a stable machine.

      Syncing mechanics are very flexible. Being able to both push and pull combined with ultra-fine branch management is a major win-win.

      -Matt

  37. Re:If it looks like a tree, you'll probably be fin by Jack9 · · Score: 1

    It is not so very clear what you are doing there either. Most centralized systems have heaps of scripts running server-side which might actually recast any command you are issuing into something completely different.

    You are speaking to the concept of SVN "hooks" (which which is wanted in Git although I don't think anyone's gotten them to work) or just plain FUD. Triggers are used to spawn other processes for alerts, snapshots, builds, or whatever your heart desires. To what purpose would you write "heaps" of scripts to avoid simple version tracking for some alternate purpose? Validation? And who the hell is allowed to checkout or commit, but doesn't know how their versioning works? It defeats the purpose. If you try to use Git/SVN/CVS as your build tool, it won't work, so please enlighten me to who is doing it (checkouts to a web directory is not a build).

    I *have* seen hooks that modify the commit message with a timestamp, committer and sourcemachine, send out emails, but nothing more complicated is worth it.

    --

    Often wrong but never in doubt.
    I am Jack9.
    Everyone knows me.
  38. TortoiseGit: the best shot at a Windows GUI by Qubit · · Score: 2, Informative

    At work we're trying to get all our our repos moved to Git. We moved off of CVS to SVN a year or so (which was a huge improvement), but now that all of the non-programmers in the office are used to using TortoiseSVN, lack of a good windows GUI for Git has been a bit of a roadblock.

    The msysgit folks started work on Tortoise-inspired GitCheetah GUI, but that project basically fizzled out. Lots of people wanted a Windows GUI, but no one had both the resources and drive to step up and do it.

    Then, exactly two months ago, Frank Li started working on TortoiseGit. From what I can tell, this is a fork of TortoiseSVN with most of the Subversion guts pulled out and replaced with git commands. TortoiseGit is not done yet: 'git add' has some issues, Submodules don't seem to work at all, etc..., but development on the tool is in high gear and the primary developer is going the extra mile to help users.

    If you're looking to deploy tools right now, gitk is a bit more powerful than the log in TortoiseGit, but might be more confusing for naive users.

    --

    coding is life /* the rest is */
  39. Re:If it looks like a tree, you'll probably be fin by Kotten · · Score: 1
    In an environment where you want to enforce that certain rules are followed like:
    • The commit message must contain who was reviewing the code
    • The commit message must show which issue is this commit connected to

    Then such hooks are neat. It also gives possibility to connect one tool to another like adding the commit message to the issue (and close it) in issue-trackers and like bugzilla. Unix strength is to combine different, small, components to something bigger, so there is some justification to the hooks.

    --
    Note to self: Make a sig
  40. How does it work with non-static IPs? by pauljlucas · · Score: 3, Interesting

    The thing I don't understand about any distributed VCS is how (for example) others could pull stuff from my repository if I don't have a static IP. Also note that I don't mean "don't have a static IP" only in the usual sense of "having a dynamic IP at home": I also mean in the sense that my development machine is my laptop and I often work at coffee shops and other places and so I'm often behind NATs.

    --
    If you reply, do so only to what I explicitly wrote. If I didn't write it, don't assume or infer it.
    1. Re:How does it work with non-static IPs? by arrenlex · · Score: 2, Informative

      There's no way to pull from a repo that's behind a NAT unless you have sufficient control over the NAT to forward a particular port to a specific machine behind it. This is the same as svn -- how can you access an svn server that's behind a NAT? Only by having its relevant port forwarded.

      However, if you are in a coffee shop and you want Sue to have your devel history, you can push to Sue instead of having Sue pull from you. Sue will then merge your pushed changes into her working copy when she feels like it.

      Equivalently, you can set up another git repository on your home server which has a static IP. Then, you pull from and push to your home server, which you can access from anywhere with your laptop, and other people also pull from your home server. I used this approach when I was developing from home and didn't have time to make sure permissions on everything were okay and granting other developers ssh accounts on my machine, and didn't have time to set up an http server for the repo.

    2. Re:How does it work with non-static IPs? by pauljlucas · · Score: 1

      ... if you are in a coffee shop and you want Sue to have your devel history, you can push to Sue instead of having Sue pull from you.

      Sure, OK; but I don't want to have to (a) keep track of which people might want my changes and (b) push said changes to each and every one of them manually.

      ... you can set up another git repository on your home server which has a static IP. Then, you pull from and push to your home server, which you can access from anywhere with your laptop, and other people also pull from your home server.

      If I (and everyone else who works for my company and who also works from various locations as I do) would have to do that, then why not simply have one repository on a company server and everyone pushes/pulls from that? But then we're back to a central server. To me, it seems as though distributed VCS is a useless feature in practice.

      --
      If you reply, do so only to what I explicitly wrote. If I didn't write it, don't assume or infer it.
    3. Re:How does it work with non-static IPs? by moderatorrater · · Score: 1

      That problem exists for any VCS, distributed or not. With a centralized one, you'd need to check into a central source that's always at the same place anyway. With a DCVS, you can push your changes out to one of those anyway while keeping the copy on your local machine.

    4. Re:How does it work with non-static IPs? by maxume · · Score: 1

      Just have a repository somewhere accessible (perhaps on a 'server') and push to it.

      The advantage of a DVCS is not in the location where the data is stored, but that all operations can be done offline (as long as the repositories to be worked with are available).

      --
      Nerd rage is the funniest rage.
    5. Re:How does it work with non-static IPs? by NTmatter · · Score: 2, Informative

      There aren't any strict rules saying that people have to pull straight from your laptop.

      In terms of non-distributed VCSes, would you ever host a your repository on a machine that other people couldn't access? It would always be somewhere publicly accessible.

      For this kind of situation, you'd probably have a public development repo that's separate from your official repository. This would give you a set of repositories that looks like:

      official - The authoritative repository, controlled by some kind of integration manager

      jim-dev-public - Code that Jim is ready to unleash upon the world, but not upon the official repository
      jim-dev-private - Code that Jim is currently working on from his blimp with irregular Internet access

      fred-dev-public, alice-dev-public, bob-dev-public - These are the only ones that you need to pull from. Fred, Alice, and Bob can have as many private repositories as they'd like, and will share their work when it's ready.

    6. Re:How does it work with non-static IPs? by pauljlucas · · Score: 1

      The advantage of a DVCS is ... that all [emphasis added] operations can be done offline...

      Except for a submit (push) or update (pull), the only thing I ever do that requires me to be online is to retrieve a revision of a particular file prior to the most recent. What other common operations would one do that ordinarily would require one to be online that one can do offline with a DVCS?

      --
      If you reply, do so only to what I explicitly wrote. If I didn't write it, don't assume or infer it.
    7. Re:How does it work with non-static IPs? by Quantumstate · · Score: 1

      That is assuming everyone is working on the same thing. If you for example were split into groups who were working on a specific part of a project you could set up a server of your own or you can use the git-send-email command to email changes to another person. Also there is the flexibility to be able to keep versions of your own without needing to upload them to the central server until they are ready.

    8. Re:How does it work with non-static IPs? by dozer · · Score: 1

      If someone else is in the same coffee shop as you, use gitjour: http://github.com/blog/75-git-over-bonjour

      If not, just push your repo up to a machine that does have a static IP. Easy breezy.

    9. Re:How does it work with non-static IPs? by maxume · · Score: 1

      There might not be any (depending on your workflow; the ability to create isolated experimental branches might cause you to change your workflow though). Of course, with a DVCS, you can choose your workflow, with a CVCS, you are stuck being a client.

      --
      Nerd rage is the funniest rage.
    10. Re:How does it work with non-static IPs? by MostAwesomeDude · · Score: 2, Informative

      Take a page out of Freedesktop.org's process. Any user can create and maintain user repositories in their own space. For example, http://cgit.freedesktop.org/~csimpson/mesa is my personal Mesa repo. Then, anybody that wants can pull from there. Very rarely do FD.O people pull and push directly to each other, and I doubt that it happens that way in larger organizations, either.

      --
      ~ C.
    11. Re:How does it work with non-static IPs? by mcvos · · Score: 1

      However, if you are in a coffee shop and you want Sue to have your devel history, you can push to Sue instead of having Sue pull from you. Sue will then merge your pushed changes into her working copy when she feels like it.

      Or you could simply push to github and let Sue (and anyone else) pull from your github repository.

      On its own, git is very nice indeed. Combined with github, it's absolutely brilliant. They even have a funky network graph that graphically shows you which other github repositories contain commits for your project that you haven't included yet.

    12. Re:How does it work with non-static IPs? by Anonymous Coward · · Score: 0

      Try using something like dyndns.org. Or, get a server. o.o

    13. Re:How does it work with non-static IPs? by boots@work · · Score: 1

      What you'd typically do in that case with Bazaar is to use "bzr send" to send your changes (including merge and log information) to a mailing list or another developer as an email, and perhaps into the Bundle Buggy patch review system.

      In git it seems it is more common to ask people to pull from you (which would require a public ip), or to send them a plain diff with no history.

    14. Re:How does it work with non-static IPs? by arrenlex · · Score: 1

      A lot of (most?) people do it this way -- the kernel and wine for example. There is a "central" server that everyone commits to. Beauty of distributed version control is that you don't need to be connected to branch, commit, bisect, checkout, etc. You can sit in a coffee shop, implement five features, commit them all separately, and then push those commits to the central repo when you have access.

      Or, if you're in a coffee shop, and you find a regression, you can bisect and check out revisions to check until you find it, write a fix and commit it, all without needing a connection.

  41. @#$@#$ git! by Anonymous Coward · · Score: 5, Informative

    I curse more when I use git than when I use Windoz (and those are the only times I curse). Git's design is really that bad (from a user perspective).

    Git is fully distributed (with no "authoritative" source), but it doesn't give you any tools understand/manage the distribution of files. If you have a work group with more than a few people, you are constantly asking what repo (and what access method to it), what branch, and what (bombastically long) revision. It's fine for 1-2 people, but then any version control system is fine for a small enough group.

    The documentation helps little. When you do "git help merge", you don't @#$@# care that this is the front end to multiple merge methods. You just want the stupid thing to work. If it's a special case, then you'll look for an advanced technique; but you are stuck reading through all this crap trying to figure out what really matters. No offense to the people working on git docs. It used to be awful, now it just sucks. The problem is more in the user interface design than the docs.

    There are over 100 git commands, and a command can do radically different things depending the the switches and target syntax. It's more confusing than any other revision control system that I have worked with.

    I use git because I have to, not because I want to (like Windoz). After using it for months, I still routinely get stuck trying to figure out the right mix of commands, arguments, and target syntax needed to get common things done.

    Git can do some (nice) things that subversion can't, but it creates so many problems that you haven't gained anything.

    I've heard good things about mecurial and bazaar. I wouldn't recommend git to anyone I liked (but it's perfect for perl :-).

    1. Re:@#$@#$ git! by arevos · · Score: 1

      There are over 100 git commands, and a command can do radically different things depending the the switches and target syntax. It's more confusing than any other revision control system that I have worked with.

      I find it helps to have a good understanding of the foundations of Git. I'm not sure if you've read into blobs and trees, but I'd highly recommend doing so. There are a lot of tools for Git, but they're all built up from basic building blocks.

      If you haven't already, try taking a look through Git from the Bottom Up

    2. Re:@#$@#$ git! by diamondmagic · · Score: 1

      I curse more when I use git than when I use Windoz (and those are the only times I curse). Git's design is really that bad (from a user perspective).

      That isn't even true anymore...

      Git is fully distributed (with no "authoritative" source), but it doesn't give you any tools understand/manage the distribution of files. If you have a work group with more than a few people, you are constantly asking what repo (and what access method to it), what branch, and what (bombastically long) revision. It's fine for 1-2 people, but then any version control system is fine for a small enough group.

      Huh? You just throw up the .git directory and it is accessible. I have NEVER had to deal with branches or "bombastically long" revision numbers (which you can shorten to 6-10 characters by the way) when merging, pulling, or cloning.

      The documentation helps little. When you do "git help merge", you don't @#$@# care that this is the front end to multiple merge methods. You just want the stupid thing to work. If it's a special case, then you'll look for an advanced technique; but you are stuck reading through all this crap trying to figure out what really matters. No offense to the people working on git docs. It used to be awful, now it just sucks. The problem is more in the user interface design than the docs.

      You are making it WAY too hard. "git merge frombranchname" is all you need to merge frombranchname into your HEAD. I have never had to deal with merge strategies.

      There are over 100 git commands, and a command can do radically different things depending the the switches and target syntax. It's more confusing than any other revision control system that I have worked with.

      You don't use (and are not supposed to use) 90% of them, most all of them are the "plumbing" commands that are only used by "porcelain" frontends, like Git itself.

      I use git because I have to, not because I want to (like Windoz). After using it for months, I still routinely get stuck trying to figure out the right mix of commands, arguments, and target syntax needed to get common things done.

      Git can do some (nice) things that subversion can't, but it creates so many problems that you haven't gained anything.

      I've heard good things about mecurial and bazaar. I wouldn't recommend git to anyone I liked (but it's perfect for perl :-).

      There are only a handful of commands you need, git-status, branch, merge, remote, add, commit, gc, and maybe log
      Git changes much of the ways version control systems do, it can be very hard to "un-learn" other systems, especially SVN. Linus said, "I actually credit that to some degree for why Git is so much better than everything else, it is because my brain did not rot from years and years of thinking CVS did something sane".

    3. Re:@#$@#$ git! by Anonymous Coward · · Score: 1, Informative

      Git is fully distributed (with no "authoritative" source), but it doesn't give you any tools understand/manage the distribution of files. If you have a work group with more than a few people, you are constantly asking what repo (and what access method to it), what branch, and what (bombastically long) revision. It's fine for 1-2 people, but then any version control system is fine for a small enough group.

      This is a wetware problem. If you are managing a product with git (or any distributed version control system) there must be one repository where the product is built from. With Linux this is Linus's repository. Everyone works on stuff and tries to get that stuff into his tree, and he often argues about why their changes are wrong and shouldn't go in. There are levels of indirection because of subsystem maintainers who also get to argue with developers before letting changes into their trees.

      When stuff does get into Linux's tree then everyone else pulls it back so all the other subsystem developers get that, and Linus publishes the product -- an official (or release candidate) Linux kernel source.

    4. Re:@#$@#$ git! by Geoffreyerffoeg · · Score: 1

      Git is fully distributed (with no "authoritative" source), but it doesn't give you any tools understand/manage the distribution of files. If you have a work group with more than a few people, you are constantly asking what repo (and what access method to it), what branch, and what (bombastically long) revision.

      You should pick a layout and stick with it. It's bad practice if you have to be adding all your other developer's personal repositories. Set up a single central one somewhere, and permit the use of branching on that one if necessary if you want to publish experimental features. If a subset of developers on the same features wants to make their own sub-central repository, they can do so -- but if you let people push and pull from everyone else, you will naturally get chaos, just as if everyone e-mailed .patch files around.

      Git is a toolkit, not a product. It lets you do things, but you have to do them. It's like a programming language; just because you _can_ mkdir((char*)main) doesn't mean it's a good idea.

      As far as revisions, again, don't publish revisions until you push them to a central place (so you don't have to worry about what repo and how to get to it and what branch, and more importantly so people can rebase their personal repositories freely -- which is extremely important so that they can make sense of the logical history of the project without tracking merges). And make use of git tags and topic branches, so you can say "commit fix-segfault-64bit" or "the last three commits on windows-gui".

      And abbreviate commits. Say "4b825", not "4b825dc642cb6eb9a060e54bf8d69288fbee4904". Even with the Linux kernel I rarely have to use more than six characters to identify a commit.

  42. Monotone by hendrikboom · · Score: 2, Insightful

    I'm using monotone. What I like about it is its utter paranoia about data loss. Even data loss because of lost bits on a hard disk. You just can't symc a broken repository with a working one; bit failures will not spread. That said, it's designed for use in development against a test suite -- there's a procedure whereby automated tests can be used to "certify" particular revisions, so that an actual user of the software under development can just automatically download the last certified revision and use that.

  43. Re:If it looks like a tree, you'll probably be fin by Simon80 · · Score: 1

    This isn't true if you know what you're doing. No matter how badly you think you messed up your local copy, you can always run a command like git-reflog show --all, and find a "lost" commit, and then tag it or check it out or something. The commit objects aren't destroyed until they expire or you run git-prune or something, so you have lots of time to find something you lost track of.

  44. complexity by XO · · Score: 2, Informative

    The complexity of git robs it of quite a bit of the value of it's features. For God only knows what reason, a 5-6 person project that i'm working on is using git instead of subversion, and only the person who setup the project actually has any idea how to use git. The rest of us are just cruising along, not really having any idea of what we are doing with it, and are stopped completely whenever it does anything weird.

    It's awesome to have the whole thing where it merges all the changes in a same file together, fairly intelligently, but even the GUI version for Windows has no functional interface for how to deal with conflicts (which should be easily done as a "which bit of code is the proper piece to use here?" instead of jamming diffs into a file. Also, the Windows and Linux versions of GIT have several problems interoperating with each other.

    In short, Git appears to have been designed entirely with features in mind, and not one bit of usability for anyone other than Linus himself. It is a nightmare for people who only have the need for version control and a handful of people working together. It reminds me very, very much of early Linux, before anyone else besides Linus had been hacking on it.

    --
    "Champagne for my real friends - and real pain for my sham friends!" http://ericblade.postalboard.com/
    1. Re:complexity by Lars512 · · Score: 1

      I've also found the command complexity of git to be a bit over the top, in particular compared to mercurial, which in its core can be understood quickly and is very easy to use. Does it need to be that way?

      There are several third-party front-ends to git; has can anyone comment of the comparative usability of those front-ends?

    2. Re:complexity by Qubit · · Score: 2, Interesting

      Lots to talk about here!

      The complexity of git robs it of quite a bit of the value of it's features. For God only knows what reason, a 5-6 person project that i'm working on is using git instead of subversion, and only the person who setup the project actually has any idea how to use git.

      It sounds like the first person set up the project, and now expects everyone else to just "make it work", even if they're not programmers and have a good understanding of Git. Fair 'nuff.

      Now I don't know your situation, but if you're actually in a work situation, the lead programmer (or user, if you're not storing code in this repository) should be giving you guys some kind of help or crash course in using Git. The Git model is quite a bit different than SVN, and it has taken me some time to wrap my head around it -- kind of like learning a functional programming language after working with imperative languages for several years.

      It's awesome to have the whole thing where it merges all the changes in a same file together, fairly intelligently, but even the GUI version for Windows has no functional interface for how to deal with conflicts (which should be easily done as a "which bit of code is the proper piece to use here?" instead of jamming diffs into a file.

      Which Windows GUI tool(s) are you using? Right now I can think of several -- gitk, git-gui, qgit, git extensions, CheetahGit, TortoiseGit, ...

      I think that part of the problem right now is that there is no definitive Git GUI for Windows. Even if the TortoiseGit project gets more mature, users of TortoiseSVN or TortoiseCVS will have to learn a new version-control paradigm and understand some new terms before they'll be able to successfully use TortoiseGit.

      Also, the Windows and Linux versions of GIT have several problems interoperating with each other.

      Are you referring to line-ending problems? If so, take a look at the "core.autocrlf" attribute. If you're not talking about line endings, and you can't find any help online, I'd just go ahead and file a bug report or hop on the git mailing list.

      In short, Git appears to have been designed entirely with features in mind, and not one bit of usability for anyone other than Linus himself.

      Oh, I think most people would agree with that -- especially Linus. Of course, I think that this is partially a Plumbing vs. Porcelain issue: a number of geeks love to use a command-line shell, but most ordinary users feel much more comfortable with a GUI windowing environment. Many programmers really like the power they get from using Git on the command line, but some people want something a bit more user-friendly like Easy Git or a Git GUI.

      It is a nightmare for people who only have the need for version control and a handful of people working together. It reminds me very, very much of early Linux, before anyone else besides Linus had been hacking on it.

      Yes -- I can see that. The Git workflow is pretty different from that of a tool like SVN. Unless the team leader is willing to sit down with the group and work through examples -- and then also be ready to answer questions anytime during the workday for the first few weeks -- then it's going to be a really rough, potentially unproductive month. Even if they grumble about it, it's probably worth their time to train everyone up front.

      You've probably seen this before, but for anyone who's moving from SVN to Git, there's a really good Intro to Git for SVN users.

      Good luck!

      --

      coding is life /* the rest is */
  45. My usage of Subversion by Anonymous Coward · · Score: 1, Interesting

    I currently use Subversion to keep track of my private projects. Nobody else has access to my repository. It's solely so I can track changes I make to my own software. That said, is there an advantage to using git? I like having a central repository because I can start working on some changes to code, and if I don't like them, revert back. I also don't really care much about tagging or branching. Every now and then I'll use a tag if I want to take a project in a drastically new direction, so I can easily go back to the previous "good" version if I want to. That's about it.

    So, is there a reason to switch from Subversion? I'm not tied to it at all; I just want to use the tool that's best for me.

    1. Re:My usage of Subversion by grumbel · · Score: 2, Informative

      The main advantage of git over subversion for such uses is that git doesn't require a seperate repository, the repository sits right there in the .git/ directory in your projects directory. Doesn't sound like much, but its great convenience factor, since all you have to do to start using git is type 'git init' and you are done, you don't need to create a repository, you don't need to important your existing files and most importantly you can leave your working directory as is. With SVN this same process can get quite annoying, since you basically have to delete your working direcotry and replace it with a SVN checkout and then verify that all your files actually made it into the repository. With git its a single command and you don't have to think about anything, so its much easier and you can just version control any directory you like.

  46. Re:If it looks like a tree, you'll probably be fin by sudog · · Score: 1

    Oooo.. dangerous thinking. The complete lack of administrative overhead seems like a great panacea.. until you realise that you are essentially side-stepping any corporate data retention policy, side-stepping the benefits of corporate IT support and data protection policies, and increasing risk of partial data loss. Or are you suggesting that, via forced git pulls from every single developer to every single developer you are thus creating a redundancy strategy better than the typical corporate IT backup/disaster plans? .. so how is it that you are going to force all developers to do a git pull, or at least a push to some central machine on a regular basis without actually implementing *some* sort of IT-supported machinery?

  47. Copying , moving with Eclipse by uss · · Score: 1

    Hi, If you copy or move a file with Eclipse, you LOSE the entire history of that file.
    Doing that is just a simple shortcut for the following sequence of actions:
    1. "simple file copy" (like a "cp" command, or a drag-n-drop in desktop OSes).
    2. DELETE the source. Yup!
    3. Add the copy to the repository.
    For some of us, keeping the history of every single change since 1-1-1970 is important. But that will be another thread.

    1. Re:Copying , moving with Eclipse by Anonymous Coward · · Score: 0

      Hi, If you copy or move a file with Eclipse, you LOSE the entire history of that file.

      I've been moving and renaming files with impunity using Refactor with no loss of SVN history under subclipse. In fact, I just moved a folder full of files to check. No loss.

  48. Play with it for a while... a lot by dbc · · Score: 1

    I use git for all of my stuff. I'm no expert, but I'm getting comfortable with what I need it for.

    My adivce: play with git a lot before doing any production work with it. One highly refreshing thing about git is that you can create and blow away repos with nary a care... it's quick and painless. That being the case, it is the perfect sandbox toy. So think up some scenarios, create some toy repos, and whack away. Then blow the cruft away and do it again. Understand sub projects. Set up a couple or several machines and users and start pushing and pulling willy-nilly and see what happens. It will be fast and easy to do this on toy repos, and you will understand how it is all supposed to work.

    Step two is to do some capacity tests.... scriptomatically create some monster size toy repos and see how they peform.

    By the end of this, you'll understand git. And all this playing around is much less painful than with any other system I've seen.

    Now, if you have an old repo to import, you have another whole batch of experiments to do. Getting all that history over correctly is going to require some research. Git has a lot of functionality -- the current state of the documentation leaves you to do some digging, though.

  49. Re:If it looks like a tree, you'll probably be fin by ThePhilips · · Score: 1

    Oooo.. dangerous thinking. The complete lack of administrative overhead seems like a great panacea.. until you realise that you are essentially side-stepping any corporate data retention policy, side-stepping the benefits of corporate IT support and data protection policies, and increasing risk of partial data loss.

    Load of bullocks. I'm working in corporations for past 5 years and yet to see any "benefits of corporate IT support." Corporate IT is generally some bunch of management-ass-lickers. They do not care about mere mortals developers.

    As to retention policy and data protection, for past 4(?) years, my $HOME is always and completely backed up - and that's includes all my repos. In fact it is volume over NFS mounted from huge NAS RAID.

    Or are you suggesting that, via forced git pulls from every single developer to every single developer you are thus creating a redundancy strategy better than the typical corporate IT backup/disaster plans? ..

    You are severely behind times. See above.

    so how is it that you are going to force all developers to do a git pull, or at least a push to some central machine on a regular basis without actually implementing *some* sort of IT-supported machinery?

    When developer gets assignment (e.g. implement feature), he is also responsible for delivering on the assignment.
    In CVS/etc it is check-in to global repository.
    In Git this is push into global repository.

    Difference? None.

    Well, in fact there is one. In CVS/etc developer is responsible for integration of feature with rest of the system. If he wasn't bright enough and f***ed up rest of the system in the process - whole R&D is f***ed up. In Git, "push" remains local to the "global repository" and if somebody broke something, one can always review and reject the pushed changeset - even before anybody can pull it. Or even if you cloned the global repository, you still can remove the changeset locally. In Git there is very little overhead of maintaining repos which work only as staging area: where to others can push and where you (as e.g. release master or tester) can compile/test the changes. After changeset was cleared by release/test teams it can be pushed further into real global repository, where it would be visible by others.

    Check that out - "Integration Manager Workflow". This is pretty much ideal workflow, which in past I have seen people numerous times tried to implement using centralized systems. And before DVCS I have seen only one solution which can be called "working."

    --
    All hope abandon ye who enter here.
  50. Re:If it looks like a tree, you'll probably be fin by Anonymous Coward · · Score: 0

    CVS migration works well enough with nice simple CVS trees. Unfortunately the last two jobs I've worked at the CVS tree has not be pristine enough to get through a simple migration. One tree has been hacked up for performance reasons (old branches having pruned out of the tree which causes cvsps to die when it can't find the branch) and the other was so large even a 2gb machine would slow to crawl.

    In the first case I wrote scripts to import known labels into git (loosing the changeset data but it wasn't that interesting due to the baseline process). The second case I tweaked parsecvs to work with modern gits as it was the most efficient of the conversion tools.

    Hopefully my next job won't involve either of these two CVS failure modes :-)

    Alex.

  51. lack of gradual migration by Anonymous Coward · · Score: 0

    The problem with git or mercurial or any other DVCS is that it's ALL OR NOTHING solution. Let me explain: I can't force our customers to use git or mercurial or bazaar. They already have CVS or SVN or some commercial tool I don't want to mention. So the only way for us to use DVCS is to use both tools at the same time on the same codebase. And this is the point where we can see DVCS shortcomings: tool support.

  52. Would it work for multiplatform project? by Anonymous Coward · · Score: 0

    We are developing a multiplatform code. We are writing it on Linux, but still we have to modify & test it on win32. Would you recommend using git for such a project?

    1. Re:Would it work for multiplatform project? by Anonymous Coward · · Score: 0

      Yes. The latest msysgit is very good. When you install, I recommend the option to use the Windows shell (not cygwin) and add the Unix-like utilities to your path (find, ls, etc.).

      The only catch is the boneheads that put out msysgit have it set to automatically convert CRLF LF on push and pull, which is ridiculous. It is just a setting, however, core.autoclrf.

  53. Re:Until Git Tools are mature, SVN will do just fi by Geoffreyerffoeg · · Score: 1

    TortoiseGit (the port of Tortoise) isn't quite there yet, and git-cheetah (a recreation from scratch of Tortoise) distinctly less so, but there definitely is an Eclipse plugin, jgit / egit.

    git-gui is not that horrible, if you don't want as tight integration.

  54. Data integrity folded in by lee1 · · Score: 1

    I don't see any mention of this feature in the comments: git cryptographically signs every commit, so you can tell if there was an error in transmission/storage or if someone has attempted to alter history or file contents. In fact, commits are labeled by their hashes. This is the cool feature that convinces me to stay with it, although I still find it occasionally mysterious; I just continue to assume that my incomplete understanding of its opaque machinations is my fault, and that with continued study all will be clear (even the man pages).

  55. I /think/ that if there are dependencies, then all by Anonymous Coward · · Score: 0

    -in-one makes sanest sense, though I'm not certain.

    /works/
    /works/paper01/
    /works/paper01/images/
    /works/paper01/data/
    /works/paper02/
    /works/paper02/images/
    /works/paper02/data/

    would mean that I could have a super-repo for all of 'em, plus sub-repos for each, so bug-fixes & updates could be local.

    I don't know if that makes sense, but considering-the-problem is interesting, and maybe someone else knows the Right Answer?

    PS: how come http://darcs.net/ got nuked and only Git is considered, nowadays?

    PPS: how come no wordprocessor/docprocessor uses git/darcs as the back-end, to make document evolution better?
    ( a modified TuxCards would seem to be the ideal case for this )

  56. Re:Until Git Tools are mature, SVN will do just fi by Anonymous Coward · · Score: 0

    You might try git-gui for a standalone tool, or egit for an Eclipse plugin.