Slashdot Mirror


Subversion Project Migrates To Git

New submitter gitficionado (3600283) writes "The Apache Subversion project has begun migrating its source code from the ASF Subversion repo to git. Last week, the Subversion PMC (project management committee) voted to migrate, and the migration has already begun. Although there was strong opposition to the move from the older and more conservative SVN devs, and reportedly a lot of grumbling and ranting when the vote was tallied, a member of the PMC (who asked to remain anonymous) told the author that 'this [migration] will finally let us get rid of the current broken design to a decentralized source control model [and we'll get] merge and rename done right after all this time.'" Source for the new git backend.

30 of 162 comments (clear)

  1. April Fool's! by barlevg · · Score: 5, Funny

    In related news, Microsoft will be using Gmail for their company email, and Apple will be replacing their workstations with Linux boxes.

    1. Re:April Fool's! by lgw · · Score: 3, Informative

      Apple seriously uses Outlook Exchange for their mail servers, though.

      [Archer]You can just say "Exchange"[/Archer]

      And the iCloud is stored on Azure. The whole "Onion or Reality" test can be difficult in tech these days.

      --
      Socialism: a lie told by totalitarians and believed by fools.
    2. Re:April Fool's! by drolli · · Score: 2

      I am a happy user of both. Subversion and Git have different fields of application, and that is good.

    3. Re:April Fool's! by tlhIngan · · Score: 2, Insightful

      Apple seriously uses Outlook Exchange for their mail servers, though.

      [Archer]You can just say "Exchange"[/Archer]

      And the iCloud is stored on Azure. The whole "Onion or Reality" test can be difficult in tech these days.

      Well, given Apple's not exactly a well known entity in the MTA market, or in the cloud computing market, I don't see the big deal that they're using Exchange and Azure.

      They're both good products run by people who know what they're doing. At least, know more than Apple on those topics. And neither is something Apple wants to get in and support directly. I mean, yes they could do it, but I suspect that Microsoft simply does it better and probably more securely than Apple on their own.

    4. Re:April Fool's! by Anonymous Coward · · Score: 2, Funny

      Troll time:

      So Apple fans are the 'Microsoft anti-fans' who don't understand linux...

  2. Ahahaha by Anonymous Coward · · Score: 2, Funny

    See, what they've done here is concocted and published an implausible story (or in this case, tracking issue) that is designed to misdirect, nay, fool people into believing it is real. These jolly japesters have done this in the full knowledge that it will mislead people into believing it to be true, and they have chosen to do it today, on the very first day of April, as is customary in these matters.

    Oh Apache and Slashdot, you are truly such ruse masters!

    Seriously, April 1st is such a fucking bag of shit. Just fucking stop.

  3. funny thing is by epiphani · · Score: 5, Insightful

    This would probably be a good idea for the future of subversion.

    --
    .
    1. Re:funny thing is by javilon · · Score: 2

      The day git implements subversion externals functionality so it is easy and risk free to update from and commit to external branches, I'll swich my team. Git modules functionality is close, but you can make a mess if you commit while having a module set up.

      --


      When his defense asked, "Which computer has Jon Johansen trespassed upon?" the answer was: "His own."
  4. Hmm by Anrego · · Score: 3, Informative

    I've got to admit. The discussion going on in that ticket is pretty convincing, leading me to think that either:

    a) legit
    b) they sucked in a lot of their own people
    c) really well thought out

    I'm thinking (and hoping) b, with c as an unlikely but possible second.

    1. Re:Hmm by mooingyak · · Score: 3, Insightful

      I've got to admit. The discussion going on in that ticket is pretty convincing, leading me to think that either:

      a) legit
      b) they sucked in a lot of their own people
      c) really well thought out

      I'm thinking (and hoping) b, with c as an unlikely but possible second.

      I'll confess I was fooled until I remember what day it is.

      --
      William of Ockham had no beard. The most likely explanation is that it was chewed off by squirrels every morning.
    2. Re:Hmm by mooingyak · · Score: 3, Insightful

      Yeah. They're doing it right, finally.

      --
      William of Ockham had no beard. The most likely explanation is that it was chewed off by squirrels every morning.
  5. Change by Yunzil · · Score: 4, Funny

    'this [migration] will finally let us get rid of the current broken design... ... and replace it with a completely new broken design. (I hate git.)

    1. Re:Change by ebno-10db · · Score: 2

      Not the OP here, but the main thing I dislike about git is the UI. The internals may be good, but the UI is a hack, complete with counter-intuitive alternate uses of commands via switches that seem like they should be used elsewhere, etc., etc., etc. Contrast that with Mercurial, which has a much more logical and consistent UI, and UI's are important (command line or of that other trendy variety). People who think the git UI is fine are probably just used to it. If you can get used to the spelling of my mother tongue, English, then you can get used to anything. That doesn't mean it was the best choice though.

      As for features and capabilities, it seems to be neck and neck, which of course leads to endless debates about pros and cons. It's interesting that before git was quite so popular, people that actually sat down and compared the two, like FogCreek and Google Code, generally chose Hg. I suspect the main reason that git initially won the popularity contest is that Linus wrote it. Nowadays the choice is a bit different because using anything other than git is trying to swim against the tide, but the initial reason for its success over Hg bugs me.

    2. Re:Change by BlackPignouf · · Score: 3, Funny

      Exactly.

      I love git, because all my development repos are self-contained, easy to backup and work perfectly offline.
      "git rebase -i" is just wonderful.

      BUT :
      You want to pull and overwrite your local changes? It's as easy as :

        git add *
        git commit -a -m "auto dev server commit"
        git fetch origin master
        git merge -s recursive -X theirs origin/master

      You want to clone your local repo to a new remote one and use it as origin? Sure :
      #On local machine
      cd foo_project
      git init
      git add *
      git commit -m "My initial commit message"
      #On remote machine (Git remote repository)
      sudo su - git
      cd /usr/local/git_root/
      mkdir foo-project.git
      cd foo-project.git/
      git --bare init
      git config core.sharedrepository 1
      git config receive.denyNonFastforwards true
      find objects -type d -exec chmod 02770 {} \;
      #On local machine, in your git project
      git remote add origin ssh://git@example.com:2227/usr/local/git_root/foo_project.git
      git push -u origin master

      Those are just 2 examples that come often enough to be an annoyance, but not often enough that I can remember them.

    3. Re:Change by Yunzil · · Score: 2

      Terrible, unintuitive syntax. Horrible documentation that was apparently written for people who already understand it. Obscure error messages. Too much knowledge required up front to start using it effectively. Hard to pick up the pieces when something inevitably goes wrong.

      I've seen posts elsewhere where people say "Oh, once you understand that behind the scenes it's working on blobs and trees and commits then it makes more sense. Also, graph theory." OK, but should I need to know any of that? I don't need to know how an internal combustion engine works to drive my car.

      It probably makes perfect sense to Linus and people who shares his brainwaves. To us mere mortals, not so much.

      But this is all moot because I just realized the article is a joke.

  6. Re:April Fools! by Anonymous Coward · · Score: 5, Insightful

    I've never understood the popularity of git. It may be useful for open source by supporting distributed development but it seems far less useful for a traditional corporate environment. SVN just makes far more sense to me in terms of command structure. If I wanted a DVCS I would probably go with Mercurial. Git is just awful.

  7. I miss the old days... by markhb · · Score: 3, Insightful

    ... when Slashdot posted nothing but joke stories all day on April 1; it was the best way to catch all of them. Maybe they decided they couldn't top themselves after OMG PONIES!!!!! (which I missed), but just sticking in one joke stories amongst a bunch of uninteresting real ones is lame. There isn't even an article on the Google prank!

    --
    Save Maine's economy: write stuff down. All comments are exclusively my own, not my employer.
  8. Re:April Fools! by lgw · · Score: 5, Insightful

    Git solves one incredibly important problem: it stops "Linux kernel commit privileges" from being a constant political battle on Linus's part. By making "official builds" pull based, instead of push based, the whole question of "who gets to commit" vanishes and Linus has full control by change, instead of by author - a far less emotional and political thing.

    So Git is overwhelmingly better if you're Linus Torvalds. And, hey, that's how open source gets written. If anyone else finds it useful for anything, that's just gravy.
     

    --
    Socialism: a lie told by totalitarians and believed by fools.
  9. Re:April Fools! by Anonymous Coward · · Score: 2, Insightful

    I, too, was happy with Mercurial and wonder why Git is so popular. I find Git inconsistent and confusing, and it seems to implement the idiom of most-surprise: that is, whatever a command does by default is probably not what you wanted, and the way to do anything you might consider simple is complicated.

    The only reason I can come up with Gits popularity over Mercurial is that Linus wrote it. That's about it.

  10. Re:April Fools! by Wootery · · Score: 4, Informative

    Disagree. I've seen Git used to good effect in a traditional corporate environment. The ability to quickly make your own branches is useful, even if there's just an SVN-style single trunk of proper code-reviewed commits. (Technically, as Git is SVN compatible, so you could get this effect simply by using Git 'locally'.)

    The ability to make team-specific branches is also valuable: a team can work toward a feature using a team-local branch, and only once they're done, rebase and push their work into the the trunk. (Yes, rebasing might take work, but it can be beneficial to just 'do this all in one go' when the team is done implementing the feature, as it means the ground isn't moving beneath their feet during 'proper' development time.)

    Git does everything SVN does, and an awful lot more - personally I'd only even consider going with SVN if there were a developer team who only knew SVN and didn't have time to learn Git.

    Don't know much about Mercurial, but I'm sure it's good too.

  11. Re:April Fools! by EvanED · · Score: 3, Informative

    The only reason I can come up with Gits popularity over Mercurial is that Linus wrote it.

    You may be partly right. But I think a lot of it is that for a while, Git was a lot more "powerful" -- it supported some very useful modes of operation that Hg either didn't have or wasn't very good at. So while Git was confusing, once you learned the model and commands it did a really good job of rewarding you for it.

    This gap has closed substantially, particularly on the Hg side -- a lot of the "missing features" have been implemented either in core Hg or in extensions. At the same time, Git has been doing a reasonably good job at improving usability, though some issues remain.

    Then again, I'm a Git user who hasn't worked much with Hg, so take what I said with a strong dose of salt.

  12. Re:April Fools! by Anonymous Coward · · Score: 5, Insightful

    discovering git- but I'm actually curious what is awful about it?

    Linus's decision to screw over everyone that has ever used SCM by refusing to use normal terms is the most awful part. Instead, as he admitted, he just randomly assigned words to concepts. For example, he randomly picked the word checkout to mean revert. Ditto using the word reset to mean unstage. "git pull" refuses to update the source like a normal system would. Instead you have to do the "git stash; git stash apply stash@{0}" dance. And stash/unstash is not standard in the first place since Bazaar, Mercurial, Perforce, TFS, etc. use the terms shelve/unshelve. The word clone is another odd one. On the topic, the decision to not allow clone to checkout a subset of a repository like is often done with Subversion is a curious one. Another not understanding users is the decision to disallow checking out only the current version of all files rather than every single version of every single file.

    His decision to add so many dependencies to make it difficult to run Git on anything but Linux is another awful decision. The msysgit directory on Windows contains 14,589 files in 622Mbytes. A simple SCM should not require over 14,000 files! Finally, the decision to make the server side weak, especially wrt security, is also awful. As Linus admitted, his belief is that you should give everyone full access to everything. That obviously doesn't scale.

    Of course, everything below the covers with Git is spectacular. We use it for a 500k file repo, and have had no problems after nine months. Before converting, our developers were wasting hours a week running "svn cleanup." Our artists are converting to it from Perforce, and other than the stupid decisions on command names and decision to not allow checking out just HEAD or a subset of the repo, they've had no problems despite working with hundreds of multigigabyte files.

  13. Re:April Fools! by sam0ht · · Score: 3, Insightful

    I use Git to good effect in a fairly traditional corporate environment. We're much better off since switching over from SVN.

    Never mind the 'distributed' part - the big challenge for source control in a traditional setup is when two people have both modified different parts of the same files, and the second guy goes to check in. Git is much better at handling conflicts than SVN is - conflicts that would cause real pain in SVN often merge smoothly in Git.

    It's also much better at handling branches, e.g. a release branch. Remember 'tree conflicts' in SVN? Not an issue in Git.

    Git is a better SVN, as well as being a distributed source control system.

  14. Re:April Fools! by EvanED · · Score: 5, Insightful

    For example, he randomly picked the word checkout to mean revert

    That choice actually makes sense from the Git model. A Subversion person would ask why there is one command for three+ different things (svn revert, svn switch, svn up -r### are all done using git checkout). But if you turn your head around and look at it from a different perspective, all three of those are doing the same thing: copying something from the repository store to the working copy. From the Git perspective, Subversion is giving three different names to the same thing, each of which only works some of the time.

    I don't want to argue Git is right, just that if it has a fault here, Git's is that its terms are at a lower level than users usually think and not that it's inconsistent on this point.

    Ditto using the word reset to mean unstage.

    Oh boy. The whole index is a mess of inconsistent terminology. You stage something to the index using git add, unless you're using git add --interactive in which case that process is called updating. And of course you see what the changes are in your index by using git diff --cached. Wut?

    (Yes, I know, git diff --staged is now an alias for the last. Good, now all they have to do is deal with the three other synonyms for the same thing.)

    "git pull" refuses to update the source like a normal system would. Instead you have to do the "git stash; git stash apply stash@{0}" dance

    Here I also defend git, because I think this is a significant selling point. One major advantage that Git has is that once something is actually added to the store, it's nearly impossible to accidentally lose information. git stash adds the state to the store.

    Compare to something like Subversion. Suppose you have a nice change. It's working properly. Now you svn up. Now you get a bunch of hard-to-resolve conflicts. You say "I don't want to deal with this now; I just want to go back to the state I was in before updating." Too bad, you can't (at least any way I know how). You're screwed, because Subversion has caused you to lose information.

    Compare to git. You have to run stash before pulling (merging/rebasing technically of course), so now the state of the working copy right before the pull is in the store. You then stash apply. You get the conflicts, say "I give up for now". Now all you have to do is figure out what the SHA1 of the copy that was in the stash is. Might have to do some reflog digging, but it is not only possible but actually pretty easy if you know about the reflog.

  15. Re:April Fools! by jythie · · Score: 4, Insightful

    I can answer at least some of that. I am a long time SVN user who is now using git, and while I would not call it 'awful', I do find the 'local repo' structure to be frustrating and needlessly complex, and generally comes across as over-engineered. Kinda like ClearCase, it can handle more complex situations then SVN, but that additional support causes complexity to seep into simpler cases.

    I have also had difficulties with the client that I never had under SVN, with pretty much no luck with it working 'out of the box' on any of the machines I use. So in each case I have had to install the full development chain in order to rebuild the client because the one already installed is incompatible. SVN, for all its dullness, tends to be pretty conservative about changes and generally the distro installed one works.

    However, for my use case, the community aspect (i.e. the finding projects) and traveling are not important, so those advantages do not get me much.

  16. Re:April Fools! by jythie · · Score: 4, Informative

    That strikes me as an issue with your server, not SVN. I have worked on projects where SVN handled tens of thousands of files, dozens of branches, thousands of tags, etc, and found syncing to be pretty reasonable. In fact we switched over to SVN in part because Clear Case was having trouble keeping up with the volume.

  17. And Git Migrates to CVS... by Anonymous Coward · · Score: 2, Funny

    and CVS migrates to RCS supported by front end in Gopher, a backend in TFTP with all discussions held over usenet using the pine news reader. If everyone would just remember to update the damn version numbers.

  18. Re:April Fools! by jythie · · Score: 2

    I keep hearing this, but so far I have encountered about the same amount of branch conflict in git as I have with SVN, just with the added complexity of local repo vs checkout. But I have not found any magical advantage in its ability to merge a file that has been changed by two different developers.

    Branching does not seem any harder or easier.

  19. Re:April Fools! by JesseMcDonald · · Score: 2

    You then stash apply. You get the conflicts, say "I give up for now". Now all you have to do is figure out what the SHA1 of the copy that was in the stash is. Might have to do some reflog digging, but it is not only possible but actually pretty easy if you know about the reflog.

    You don't even need to bother finding the SHA1 or searching the reflog. stash apply doesn't get rid of the stash, so it's still right there as stash@{0}. You can also find it with stash list. stash pop would normally get rid of the stash after applying it, but even there the original stash is preserved if there were any merge conflicts.

    --
    "The state is that great fiction by which everyone tries to live at the expense of everyone else." - Bastiat
  20. Re:April Fools! by Anrego · · Score: 3, Insightful

    Compare to something like Subversion. Suppose you have a nice change. It's working properly. Now you svn up. Now you get a bunch of hard-to-resolve conflicts. You say "I don't want to deal with this now; I just want to go back to the state I was in before updating." Too bad, you can't (at least any way I know how). You're screwed, because Subversion has caused you to lose information.

    Totally this. As a subversion fanboy who has yet to jump on the git train, I see this as one of the major oversights in svn.

    Personally I'm a fan of one developer, one branch. It's a bit of overhead for sure, but everyone having their own branch where they can check in their changes before merging in changes from the main branch is a nice safety net. You just have to learn to reintegrate to the feature branch often to avoid silo effect.