Slashdot Mirror


Subversion 1.8 Released But Will You Still Use Git?

darthcamaro writes "Remember back in the day when we all used CVS? Then we moved to SVN (subversion) but in the last three yrs or so everyone and their brother seems to have moved to Git, right? Well truth is Subversion is still going strong and just released version 1.8. While Git is still faster for some things, Greg Stein, the former chair of the Apache Software Foundation, figures SVN is better than Git at lots of things. From the article: '"With Subversion, you can have a 1T repository and check out just a small portion of it, The developers don't need full copies," Stein explained. "Git shops typically have many, smaller repositories, while svn shops typically have a single repository, which eases administration, backup, etc."'" Major new features of 1.8 include switching to a new metadata storage engine by default instead of using Berkeley DB, first-class renames (instead of the CVS-era holdover of deleting and recreating with a new name) which will make merges involving renamed files saner, and a slightly simplified branch merging interface.

63 of 378 comments (clear)

  1. yup by Anonymous Coward · · Score: 3, Funny

    short and simply, yes. If Linus says so, we obey.

  2. Different strokes for different folks by WuphonsReach · · Score: 4, Insightful

    Whether you use git/mg/etc (distributed VCS) or centralized VCS systems (SVN, etc) has a lot to do with the level of control that you desire/need and how much centralization you desire/need.

    For some development projects / communities, where everyone is independent and rarely connected to a central point, the distributed VCS make more sense. The downside is that you have to rely on developers to push their changes to some "master". On the other hand, it means they can work offline / disconnected.

    For the less technical users, centralized VCS like SVN makes more sense. As long as you can get them to commit the changes, you're ensured that those changes are now on a server/machine that is getting backed up and taken care of.

    --
    Wolde you bothe eate your cake, and have your cake?
    1. Re:Different strokes for different folks by tlhIngan · · Score: 4, Informative

      I don't know about you, but I usually try to keep "less technical users" away from software development.

      Why? There's a LOT of places where version control is very useful outside of software development.

      Keeping track of documents, for example - marketing folks run through a lot of variations of a theme and having a repository of older versions of the document is handy. Because otherwise they're going to do it themselves (you'll find documents with timestamps on them for that reason).

      Sysadmins often use VC on their configuration files as well (I've known some to store their Cisco hardware configuration files in VC as well). Serves as a backup (the repos are backed up with the regular source code backup), as well as an "oh shit the switch went down what's the last configuration we have" panic. Instead of hunting through endless wads of files (did I put it here last time? Or is it over there?) you just grab the latest from VC, maybe go back a revision and use that.

      Version control is extremely helpful for a lot of things - being able to hold the latest and previous versions of something in one spot is surprisingly helpful for a large number of instances.

    2. Re:Different strokes for different folks by Anonymous Coward · · Score: 5, Interesting

      I find that using git-svn with a central SVN repository results in a very nice workflow. In my local git repository, I'm free to develop in a nonlinear, exploratory fashion. At logical stopping points, this work gets neatly reconciled with reality in the form of sensical SVN commits. It's the best of both worlds, and allows me to do useful work even on an airplane.

    3. Re:Different strokes for different folks by Qzukk · · Score: 2

      Sysadmins often use VC on their configuration files as well

      Definitely. etckeeper (can be configured to use one of serveral VC systems) is excellent for this job and I use it so when I do something that breaks the server, rolling back the configuration to a known good state is trivial.

      --
      If I have been able to see further than others, it is because I bought a pair of binoculars.
    4. Re:Different strokes for different folks by TheRaven64 · · Score: 2

      If you're a one-man operation, Fossil gives you all of that without the braindead interface and in a much easier to deploy bundle (a single, small, statically linked binary, including a [versioned] wiki and bug tracker). But it's a strawman comparison, because you can also do svnadmin create as a non-root user and then use file:// URLs for accessing the repository.

      --
      I am TheRaven on Soylent News
  3. Re:github by Arancaytar · · Score: 3, Insightful

    I really started using github regularly at the same time that I started using github.

    Really?!

  4. Nice improvements by cold+fjord · · Score: 2

    Going through the article it looks like a nice set of improvements. I expect that subversion users will be pleased with both the current improvements, and what will be built upon them in the future.

    Among the useful improvements noted:

    One of the area where robustness has been improved is in the storage of metadata. SVN now tracks the moves of working copy items. Stein noted that the harder part is getting the rest of the system to recognize the moves, and that work is ongoing. He explained that from a historical perspective, SVN didn't "move" items per se. Instead, the item was copied to its new location, and deleted from the old.

    "This is problematic (for example) because if an edit comes in from the server for that deleted item, then we don't know what to do with it," Stein said. "For a moved item, then we know the edit should probably be applied to wherever the thing was moved."

    --
    much of left-wing thought is a kind of playing with fire by people who don't even know that fire is hot - George Orwell
  5. Sparse checkouts by IanCal · · Score: 5, Informative
    While a little more work than with svn, you can checkout just part of a repository: http://jasonkarns.com/blog/subdirectory-checkouts-with-git-sparse-checkout/

    Although I'd argue that if this is a common problem then you probably have several sub-projects.

  6. It's GIT for OSS, SVN for Enterprise. by goruka · · Score: 5, Insightful

    While GIT expresses the distributed development nature of open source projects much better nowadays, SVN fits the workflow of enterprise projects much better:

    -SVN has much better visual tools and is simpler to operate
    -SVN has a simpler merge policies which are friendlier when there isn't a central person pulling the changes.
    -SVN is very friendly for projects with a lot of binary objects (ie videogames)
    -SVN allows different people to work on different directories individually, GIT doesn't.
    -SVN has fine grained permissions, access and authentication controls, very useful when parts of your project (ie, APIs) are under NDA or you don't want them to leak.

    They are different systems with different scenarios in mind, comparing them or claiming that GIT is killing SVN is just ignorance.

    1. Re:It's GIT for OSS, SVN for Enterprise. by Bill_the_Engineer · · Score: 4, Informative

      While GIT expresses the distributed development nature of open source projects much better nowadays, SVN fits the workflow of enterprise projects much better:

      Actually... git fits the workflow better than svn. I have to manage a project that spans multiple institutions and two continents. Instead of forcing everyone to use VPN while they develop, they only need to use VPN to push to the official repository.

      SVN has much better visual tools and is simpler to operate

      What? I use SourceTree on OS X and my coworkers on Windows like TortoiseGit. Also there is "git gui"

      SVN has a simpler merge policies which are friendlier when there isn't a central person pulling the changes.

      What? I don't think you understand how git works.

      SVN is very friendly for projects with a lot of binary objects (ie videogames)

      Not necessarily. We use both svn and git to manage very large BLOBs and I haven't seen any noticeable differences. I have people that version control gigabytes worth of design documents that are stored in binary format and I haven't heard any complaints from them.

      SVN allows different people to work on different directories individually, GIT doesn't.

      We used to think this was a big deal, but the advantages that git has over svn more than made up for this.

      -SVN has fine grained permissions, access and authentication controls, very useful when parts of your project (ie, APIs) are under NDA or you don't want them to leak.

      What? First not by default. The most popular method https+ssh does not. You can use Crowd to make it a little easier.

      Whereas in git I use gitolite. I manage their public keys and assign privileges based on the public key. Keep the NDA (or more importantly ITAR) in a separate git repository which makes life easier all around and satisfies the regulators too. They weren't too comfortable with trusting the single repository to handle the compartmentation correctly.

      They are different systems with different scenarios in mind, comparing them or claiming that GIT is killing SVN is just ignorance.

      I operate both SVN and GIT systems. My anecdotal evidence show that most of my projects left SVN and went with GIT due to its distributive nature. We have operational processes in place that eliminates the need for physical enforcement of a centralized repository. As an extra bonus, my co-developers like the ability to check in while they develop and then push the changes once they are confident that it won't break the build on the official repository.

      --
      These comments are my own and do not necessarily reflect the views or opinions of my employer or colleagues...
    2. Re:It's GIT for OSS, SVN for Enterprise. by TheRaven64 · · Score: 4, Interesting

      The idea of Git eludes you. You don't structure Git projects in a giant directory tree.

      The first problem here is that you need to decide, up front, what your structure should be. For pretty much any large project that I've worked on, the correct structure is something that's only apparent 5 years after starting, and 5 years later is different. With git, you have to maintain externals if you want to be able to do a single clone and get the whole repository. Atomic commits (you know, the feature that we moved to svn from cvs for) are then very difficult, because you must commit and push in leaf-to-root order in your git repository nest.

      --
      I am TheRaven on Soylent News
    3. Re:It's GIT for OSS, SVN for Enterprise. by SoftwareArtist · · Score: 2

      I'm sure this will be an unpopular opinion, but I seriously loath git. Its distributed development model is nice for certain types of projects, but aside from that, doing almost anything in git is more complicated and more work than doing the same thing in svn.

      I think the fundamental architectural flaw in git is that it insists on a 1:1 correspondence between repositories and working copies. If you want a working copy, you absolutely must have a unique repository to go along with it, and that repository must be on your local disk. You can't have a local working copy based on a remote repository, and you can't have multiple working copies based on the same repository. And of course, each repository comes with its own revision history and its own distinct set of branches. I switch back and forth between several computers over the course of a day, and keeping all those repositories properly in sync with each other is a nightmare.

      --
      "I'm too busy to research this and form an educated opinion, but I do have time to tell everyone my uninformed opinion."
  7. 1TB repository? by Nutria · · Score: 2

    Who has a 1TB repository? Even 200GB is 15 shades of ginormous.

    --
    "I don't know, therefore Aliens" Wafflebox1
    1. Re:1TB repository? by jez9999 · · Score: 4, Funny

      Who doesn't store their DVD collection in source control?

    2. Re:1TB repository? by Xest · · Score: 3, Informative

      Lots of places really.

      Some companies use it for versioning of content as well as just source code and that may mean archiving raw versions of said content such as images, 3D art assets, uncompressed audio and so forth.

    3. Re:1TB repository? by Anonymous Coward · · Score: 5, Informative

      On the last games I worked on, a minimum initial sync to build was around 50GB, full sync was over 150GB (MANY different language versions of NIS movies.) I have no idea how big the revision database was but I'm going to guess freakin' huge with over 600000 commits during the project. The BlueArc backing Perforce was bretty large.
      Git would explode in a cloud of fail if you tried to do anything like that, in my opinion it's for toy sized projects.
      Where I work now (at a semiconductor company) the people calling the shots switched from Perforce to Git and it truly sucks. There's over 400 repositories to build the project managed by a nasty set of shell scripts. What I wouldn't give to have a single place to manage all of the changes.

    4. Re:1TB repository? by Anonymous Coward · · Score: 2, Funny

      Only for George Lucas Star Wars revisions...

  8. Re:But can SVN merge a branch yet? by RaceProUK · · Score: 3, Informative

    Not used SVN for a few years, but I've merged branches several times with it. Not sure what you're trying to say.

    --
    No colour or religion ever stopped the bullet from a gun
  9. Both Have Their Purposes by ideonexus · · Score: 3, Interesting

    I started using Git last year for my personal projects. It's a fantastic platform for coding as a social-network. I love that I can grab code I need from other developers around the world, tweak it, and send it back with a few suggestions. I love that I can follow other projects without having to get involved. Git is awesome.

    That being said, we still use SVN for our internal development. The WYSIWYG interface of Tortoise is simply really comprehensive. I realize that Git offers more options, but if those options aren't available with a simple right-click, then I don't have the time for them. Tortoise SVN makes everything readily available, while Git makes me run to the command line too often.

    --
    i ~ Celebrating Science, Cyberspace, Speculation
    1. Re:Both Have Their Purposes by ameen.ross · · Score: 4, Informative
      --
      $(echo cm0gLXJmIC8= | base64 --decode)
  10. Re:GIT sucks on windows by ebno-10db · · Score: 4, Interesting

    If you live in linux land and love using only command line, then GIT is fine. On the other hand, if you want to grab the latest code, make a change and commit, GIT sucks. It's especially true if you're using Github. Having to rebase is tiresome, especially on windows. The times I've contributed to OSS projects that used GIT, I spent 5 minutes make the code change and 30 minutes rebasing. For comparison, with SVN, I spend 1 minute to do update and 5 minutes to make the code change.

    What about Mercurial? (you know, the DVCS that fanbois dis because it's not used by Linus the ultimate cool kid). I'm considering switching from Subversion to something else for my team at work, but the Git UI is awful. I've heard Mercurial is better, including its GUI integration (e.g. Tortoise).

    P.S. To put a little damper on the flame war that this will ignite, I swear that personally I would give my left kidney to crawl over broken glass for the privilege of reading man pages all night just to be able to do the same thing with Git that I could figure out in 5 minutes with any other version control system. However, other people on my team are very good at what they do (Ph.D.'s working on signal processing) but are not quite as enthusiastic as I about the broken glass.

  11. Re:First post! by Anonymous Coward · · Score: 5, Funny

    cat ./slashdot/posts/44049461.txt | sed 's/First/Second/g' | sed 's/muajaaa/bwaaa/g' > ./slashdot/posts/44049461.fixed
    mv ./slashdot/posts/44049461.fixed ./slashdot/posts/44049461.txt
    git add ./slashdot/posts/44049461.txt
    git commit -m "Fixed that for you!"

  12. Git is auto-backup by mathimus1863 · · Score: 3, Insightful

    For the same reason the summary complains about users having to clone the entire repo, you don't really have to deal with backups: the entire repo is already backed up by every single one of your users. In fact, this is one reason I use git, because I know that I don't have to worry about backing up. I can sync with github, and know that if github disappears, my code history doesn't go with it.

    1. Re:Git is auto-backup by drinkypoo · · Score: 2

      For small repos that's fine, it's a feature. For large repos it's not fine, it's a serious problem. I literally cannot fetch the Android-x86 repo. git won't just finish sending the old stuff if new stuff has appeared since your last attempt to fetch the repo.

      This wouldn't be as big a problem if people didn't think that git access was a substitute for a tarball, so that if you just need to build the fucking code you can do so.

      --
      "You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
    2. Re:Git is auto-backup by Anonymous Coward · · Score: 5, Informative

      For small repos that's fine, it's a feature. For large repos it's not fine, it's a serious problem. I literally cannot fetch the Android-x86 repo. git won't just finish sending the old stuff if new stuff has appeared since your last attempt to fetch the repo.

      This wouldn't be as big a problem if people didn't think that git access was a substitute for a tarball, so that if you just need to build the fucking code you can do so.

      Use 'git clone --depth 1' if you only want the most recent revision. It will allow you to update it from upstream but obviously you won't be able to go back into the history.

    3. Re:Git is auto-backup by drinkypoo · · Score: 2

      Use 'git clone --depth 1' if you only want the most recent revision. It will allow you to update it from upstream but obviously you won't be able to go back into the history.

      this is very useful information; thanks. too bad git doesn't do this first, and then fill in the history later. that would make it dramatically more usable for the average human.

      --
      "You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
  13. Re:GIT sucks on windows by DrXym · · Score: 5, Informative

    TortoiseGit puts a nice UI over Git that does pretty much everything in the normal developer workflow. I'm not sure why you would be rebasing so much since that would typically be a final act for a large, long lived branch that you intended to squash and make relative to the head of another branch prior to merging it over.

  14. Re:github by Anonymous Coward · · Score: 5, Funny

    Pfft. I've been using Github for decades before I started using github.

  15. Re:But can SVN merge a branch yet? by ebno-10db · · Score: 2

    Yes! That is the biggest problem with Subversion, and I hope that 1.8 fixes that as promised (although they're only promising partial support right now).

    At work one of my side jobs is managing the VC for our small (5 person) dev team. For a small closely knit team centralized VC is fine, but the very limited merge capabilities of svn drive me nuts. It's ok to create a branch (say from trunk), work on the branch, and even update it from trunk, but you're pretty much limited to a one-time reintegration merge from that branch back to trunk. You can't easily go back and forth, choosing to put one new thing from trunk into branch and vice versa. That becomes a serious pain if, for example, you use trunk for new development and a release branch on the side. The natural way to work is, if a bug is found in the release, fix it in the release branch and then merge that one change back into trunk. Similarly you may fix a bug in trunk and realize you should also merge it into the release. Svn doesn't really let you do that, so I have to tell people to always make the fix in trunk and merge that one change to the release.

    I know I could overcome that problem by switching to Mercurial or Git, and I'd love to, but it's not a good idea with my team. Several of them are very good at what they do (Ph.D.'s in signal processing and detection and estimation) but have little interest in learning what is, for our purposes, the more complicated DVCS approach. Sometimes I feel lucky I got them to use VC at all, and it helps that the svn UI is a lot like the CVS that some of them already knew.

  16. Re:SVN sucks on windows by Matje · · Score: 5, Insightful

    Care to point to specific bugs? We've been using SVN for years and never seen these problems.

    Moreover, since SVN is client-server, why would a buggy client cause datacorruption in the database? Are you implying there are major bugs in the svn server?

    without backup, your claims are just FUD...

  17. Decent comparison by ameen.ross · · Score: 4, Informative

    I'll just leave this here so people get to see a comparison that's actually useful.

    https://git.wiki.kernel.org/index.php/GitSvnComparison

    --
    $(echo cm0gLXJmIC8= | base64 --decode)
  18. Re:GIT sucks on windows by Anonymous Coward · · Score: 3, Interesting

    TortoiseGit is a flaming pile...it tries too hard to look like TortoiseSVN, and so it just ends up being confusing. There are a number of alternative gui git clients for windows, of which Sourcetree is my current favorite, but not by much (I don't like it as much as either TortoiseSVN or TortoiseHg).

    To the gp, if you're on windows, I'd give mercurial the edge, based on both UI and general mindset. Git is very much a product of linux, and so it makes some assumptions that aren't correct if you're on windows. On the other hand, github is both amazing and unique (bitbucket tried to do the same thing for hg, but it's not nearly as nice a social scene). And if you're trying to develop marketable skills (probably a good idea in our industry), git experience will most likely take you farther than hg experience.

  19. Re:But can SVN merge a branch yet? by ebno-10db · · Score: 5, Informative

    Pardon me reposting part of what I wrote above, but I think it explains what he was talking about:

    It's ok to create a branch (say from trunk), work on the branch, and even update it from trunk, but you're pretty much limited to a one-time reintegration merge from that branch back to trunk. You can't easily go back and forth, choosing to put one new thing from trunk into branch and vice versa. That becomes a serious pain if, for example, you use trunk for new development and a release branch on the side. The natural way to work is, if a bug is found in the release, fix it in the release branch and then merge that one change back into trunk. Similarly you may fix a bug in trunk and realize you should also merge it into the release. Svn doesn't really let you do that, so I have to tell people to always make the fix in trunk and merge that one change to the release.

  20. Re:Git is much better for large repos by IanCal · · Score: 2

    git clone --depth 1

    To add to this, last time I used SVN, it seemed to transfer each file individually which was really slow. Git compresses the files and then transfers everything

  21. Re:github by liamevo · · Score: 3, Informative

    You don't need to use github to use git, bit if you really like github, you can run it on your own servers, there is an enterprise version.

  22. Re:Won't use SVN. by gulikoza · · Score: 2

    Exactly. I don't understand however why CVS is so easily forgotten. I still use it on a daily basis.

    Sure, I've switched to git for my projects, but CVS is so easy to set up, centralized (it's a plus, when you need that), text files in repository and each file is versioned on it's own (it's a plus, when you need that). One great use I've found is put some software into git, manage patches with stgit, while having each individual patch in a CVS repository for patch history. I wouldn't change that for svn.

  23. Game programmers who need Art! by Anonymous Coward · · Score: 5, Informative

    I worked in game programming several years back, and 1TB was quite reasonable. Branching meant IT would bring everyone a new hard drive to store the new branch on.

    IIRC the client for one of the MMOs I worked on was a 20 gig download. The source code that actually went into that... was big, but couldn't possibly have been a gig of raw text before being compiled; the art on the other hand, was sliced, diced, squeezed and compressed to get it down into that small of a download. Art Is Huge. Especially art in the raw forms -- even if the final game art is going to be some horribly compressed format to save space, artists want to record the initial sound files in pristine high bitrate forms, and want to do the initial drawings in zillion-pixel-wide, maximum-color-depth formats, and then compress later. The intro-video that nobody watches alone probably took up more space in the repo than all of our source code files, because it was rendered for impossibly good monitors. So, in our repo, we have both the compressed MP3-low-bitrate voiceovers that go into the game, and also the uncompressed-perfect-form from the recording sessions (just in case we want to recompress to MP3 later so we can have a higher bitrate... or maybe we'll swap to using ogg next year... or just for historical interest? it's a repo, you check stuff in...) And similarly for the textures -- the original photoshop files at maximum size and color depth are gorgeous... and then there's the smooshed version you get on your computer. But we have to store the maxumum size one, because that's the one that we're going to edit if we make a change! And it's version-control, so the repo has this hard-to-compress binary (trust me, photoshop files don't compress nearly as well as python files), possibly in a dozen different versions because all of your art got reviewed and edited as it passed through various layers of management and licencees... And then of course there's video too -- cutscenes and intro video and such.

    There's no chance that you could get a repo like that to work on git. We used perforce rather than svn; perforce is (or at least was at the time) the popular tool in the gaming industry for source control (it's expensive, but stable and has good support for massive repos), but I can see lower budget places going for svn. Git just isn't designed for huge repos full of binary blobs.

  24. Git not good for big assets by alexp700 · · Score: 2

    We work on lots of asset rich projects - often the PSDs folder will span many (hundreds!) gigabytes for a small project, and we'll be working on multiple projects at once. The PSDs then often have source imagery and a whole load of clutter collected from clients. SVN is superb at dealing with this scenario, since as a coder I don't fill my machine with sources I don't need - but we need them archived and backed up none the less. This is especially a problem if you're a developer with a fancy small SSD and the guy across the room has 6TB at his disposal for videos ;-)!

  25. Hit me baby one more time by Impy+the+Impiuos+Imp · · Score: 2

    We use Microsoft VSS. No, don't hit me!

    I get punched in the face several times a day already.

    --
    (-1: Post disagrees with my already-settled worldview) is not a valid mod option.
  26. Misleading summary by stsp · · Score: 5, Informative

    I'm a Subversion developer and would like to clarify this bit of the summary:

    Major new features of 1.8 include switching to a new metadata storage engine by default instead of using Berkeley DB, first-class renames (instead of the CVS-era holdover of deleting and recreating with a new name) which will make merges involving renamed files saner, and a slightly simplified branch merging interface.

    The "new metadata storage engine" probably refers to FSFS which has been the default repository backend since Subversion 1.2. FSFS has been improved since then, and 1.8 contains some new improvements (such as directory deltification) but does not add a new repository backend. The BDB-based backend is the one from Subversion 1.0 and is rarely used these days.

    Subversion 1.8 doesn't contain support for "first-class renames". Renames are still modeled as copy+delete, with special annotations. The working copy is so far the only part of the system which is aware of moves. There are plans to make other subsystems aware of moves in future releases. Also, while tree-conflicts involving local moves can now be auto-resolved after 'svn update', 'svn merge' mostly behaves as it did in 1.7, expect there is no need to use the --reintegrate option and tree conflicts are now flagged if a directory was renamed or deleted on the merge source branch. Whereas Subversion 1.7 would unconditionally perform the deletion in the merge target.

  27. Re:Won't use SVN. by ebno-10db · · Score: 5, Insightful

    All SCMs suck, some more than others. I liked CVS despite all its drawbacks. I can't help but dislike SVN despite all its upsides, notably its unbearably smug attitude, and especially its "documentation" drives me up the wall. Git, well, seems to be a reasonably solid bit of software and comes with somewhat usable manpages, despite its treacherous heritage. So we'll use that, reluctantly.

    There are a few more alternatives I'd look at before looking at SVN again, in fact. And no apologies for not being sorry about it.

    I'll bite. What's smug about svn? The developers make a version control system that they think is good, but they don't pretend it's The One True VCS. The users on forums, and Mercurial devs/users all likewise. By contrast Git fans, from Linus on down, act like it's the One True VCS and treat anyone who doesn't see the light as only worthy of contempt. I'm considering moving to Git or Mercurial, but I swear it'll be Mercurial just to get away from that friggin' attitude.

    Documentation is also one of the strong points of SVN. The online book is fantastic.

  28. Re:GIT sucks on windows by Tough+Love · · Score: 2

    ...Having to rebase is tiresome...

    Versus Subversion where you *can't* rebase. Instead, just let everything degenerate to the point where contributors habitually build up massive diffs that conflict with every other team member, interspersed with episodes of panicked committing, build breakage and mutual recrimination just before planned release dates. Been there.

    --
    When all you have is a hammer, every problem starts to look like a thumb.
  29. Re:GIT sucks on windows by Tough+Love · · Score: 3, Interesting

    What about Mercurial?

    Mercurial matches Git in functionality and performance, but completely blows it away in terms of usability and elegant design. Without the Linus factor, everybody would be using Mercurial, not Git. I tend to use Mercurial a lot anyway. One weird and useful thing I do with Mercurial is make a Mercurial repository inside a Git repository, to track files I don't want in the Git repo but still want to track and keep in the same directory.

    --
    When all you have is a hammer, every problem starts to look like a thumb.
  30. Re:Won't use SVN. by ebno-10db · · Score: 5, Informative

    I don't understand however why CVS is so easily forgotten. I still use it on a daily basis.

    It's forgotten only because SVN was intended to be, and is, "CVS done better". It was even created by CVS devs who wanted to start clean to overcome some of CVS's shortcomings, but intentionally and unabashedly looks, feels, and where possible, works like CVS. I've done both CVS (back in the day) and SVN repo setup, and they're both very simple. One reason I chose SVN for some in-house stuff is because the people who already knew CVS could pick it up in a heartbeat.

  31. Re:But can SVN merge a branch yet? by phantomfive · · Score: 3, Insightful

    The natural way to work is, if a bug is found in the release, fix it in the release branch and then merge that one change back into trunk.

    I hate this version of work......I have some coworkers who always do it. They occasionally forget to merge something back into head, which means they have to revisit the same problem in a few months. If you're going to miss a merge, it's better to miss the merge back into the branch, rather than into head; because as long as it's merged into head, it'll be fixed eventually.

    --
    "First they came for the slanderers and i said nothing."
  32. Re:SVN sucks on windows by Tailhook · · Score: 2

    Care to point to specific bugs? We've been using SVN for years and never seen these problems.

    I've had the same experience. Yet a cow-orker next to me constantly has serious problems with SVN.

    They're just reckless. They damage the metadata in their working copies, forget to svn add|move or whatever, do merges wrong and then blame subversion when all that accumulated damage bites them in the ass.

    --
    Maw! Fire up the karma burner!
  33. Re:GIT sucks on windows by lennier1 · · Score: 2

    If you'Re using Windows, just try SourceTree.

  34. Re:First post! by Anonymous Coward · · Score: 5, Funny

    The International Feline Association awards you with today's "Useless use of (a) cat"-award. Meeeeow!

  35. Re:GIT sucks on windows by M.+Baranczak · · Score: 3, Informative

    Having to rebase is tiresome, especially on windows

    git config branch.autosetuprebase always

    Or add --global to apply this to your personal settings. I don't understand why they didn't make this the default behavior, but there you have it. (And why "especially on windows"? What's different about doing it on windows?)

  36. Re:GIT sucks on windows by DrXym · · Score: 2
    Can't blame the tool for that. Git makes it easy to merge and that's 90% of the battle.

    I have to do periodic merges between CVS branches and I have to set aside several hours to do it thanks to all the tagging that has to go on before and after the merge to ensure it happens properly. The fact it takes so damned long it discourages me from doing it more often.

  37. Re:github by larry+bagina · · Score: 2

    Yo git, I github that you like to github so I github some github in your github so you can github while you github. Github?

    --
    Do you even lift?

    These aren't the 'roids you're looking for.

  38. Re:SVN sucks on windows by Anonymous Coward · · Score: 2, Funny

    That guy's misuse of SVN is a concern, but far more disturbing is the fact that he seems to be orking cows in the workplace.

  39. Re:GIT sucks on windows by greg1104 · · Score: 2

    Whether you prefer to include all modifications in a commit is a workflow driven decision. I like the way git's default pushes me to review each change once before it goes in. Going through a round of "git status" and reviewing what's staged is a good coding practice when many people are going to consume what you commit. And that's exactly the situation git's defaults are setup to support--an environment where mistakes are going to be consumed by a lot of people.

    You seem to feel that your way is the One True Workflow, and everyone who does it some other way is doing it wrong. That's fine, and you should create an environment to make that happen. But you're claiming the default "can't be justified" because you, personally, don't like it. You don't get to claim the UI is bad simply because it's not yours, especially when the behavior you want is actually part of that UI.

  40. Re: First post! by Threni · · Score: 2

    I tried the Subversion equivalent but got trapped in the familiar hell of Cleanup and Unlock to fix a problem that came out of nowhere. Perhaps the commit got interrupted and Subversion still can't handle that rare edge case properly with transactions. In the end I had to go back and Checkout everything again.

  41. Re:GIT sucks on windows by larry+bagina · · Score: 2

    That was my first reaction to git (coming from svn). But if you use a nice GUI tool to commit, not only can you pick and choose your files, you can pick and choose chunks of files or individual lines to commit.

    Generally, I make a bunch of changes (often unrelated), then eventually I get around to checking them in. On the command line (git commit -a, svn, etc) I would update everything at once. With a git gui, I can break it up into individual commits. And work in progress, debug code, unrelated changes, etc don't get accidentally committed.

    --
    Do you even lift?

    These aren't the 'roids you're looking for.

  42. backwards bugfix by Chirs · · Score: 2

    If you find a bug on a release, you fix it on the trunk, test it on the trunk for a while, then merge it out onto the (supposedly stable) release.

    That way if it turns out the fix is bad, you haven't messed up the release more than it already is.

  43. Re:GIT sucks on windows by TemporalBeing · · Score: 2

    What about its UI is awful? Is it because it is command line based that makes it awful?

    I think the real problem is that people approach Git thinking it's like SVN, and when the SVN way of doing things doesn't work they get frustrated and proclaim it to be awful.

    I use SVN, and I've used Git. I realize they're different and I expect differences. Yet, little things like Git not tracking empty directories drive me nuts. A VCS of any kind should be able to store a directory structure without a problem and before files are added to it; yet Git fails that very basic functionality. Staging is a nusance, but on that can be lived with, though I'm sure it makes complications that will itself cause bugs.

    On the other hand, Git just doesn't do permissions. So everyone has access to everything. But that's the nature of DVCS tools, and you can only get around that by using a Centralized VCS tool, like SVN.

    --
    Truth is like the sun. You can shut it out for a time, but it ain't goin' away. - Elvis Presley (source: imdb.com)
  44. Mercurial is underrated by Chris+Newton · · Score: 2

    What about Mercurial? [...] I'm considering switching from Subversion to something else for my team at work, but the Git UI is awful. I've heard Mercurial is better, including its GUI integration (e.g. Tortoise).

    In UI terms, there are respectable GUIs available for both Mercurial and Git these days. I’d say the biggest difference is in the CLI interaction, because the usability of Git is poor even in its native habitat on Linux, and on Windows you're basically stuck with Git Bash, which is a rather glitchy emulation of a Linux shell that IMHO is very irritating to use. Hg is much simpler and less cluttered.

    In terms of functionality and the underlying models for how the system works, I’d say there are a few major differences between the Git and Mercurial workflows that you're likely to come across almost immediately. Some are “real” differences. Others look like differences when you first learn the tools, but they’re only consequences of how each tool works by default and you can work the other way if you prefer.

    The first is that Git by default does a two-stage commit: you identify the changes you want to commit from your working copy using git add, and then you actually commit them to your local repository with git commit. In Mercurial, the default is commit everything with a single command. However, this is one of those illusory differences, because both systems have alternative commands/options that let you work the other way if you prefer.

    The second is that Git and Mercurial (in)famously have different mechanisms for using branches, and here there really are meaningful differences in the underlying model for how things are stored and what you can do. Personally, I intensely dislike Git’s approach where you “forget” which branches things originally happened on or even what those branches were called, because I find the information it discards valuable. However, you’ll have no trouble finding a Git fan to tell you I’m just being silly and obviously the branches-as-moving-tags approach taken by Git is better for other reasons. In this case, there are tools built into Hg these days that basically work the same way as Git’s branches if that suits you, but I’ve yet to find any satisfactory way of getting Git to support history tracking including branches the way Hg does.

    Finally, on the subject of rewriting history, in Hg changes are basically permanent once committed, while in Git history is mutable by design using the rebase commands. Again, which is better for you will depend on your own workflow and personal preferences. In theory Git’s view is more flexible, but it’s also one of those issues where it’s a rite of passage to write a blog post about how not to screw up all your colleagues’ repos by rebasing something that was already pushed out to others, so use with care. Hg’s version is less amenable to certain workflows, but it’s also safer.

    Finally, I just wanted to mention that whatever anyone tells you about how it’s obviously user error, both Git and Hg have had actual, verifiable, reproducible data loss bugs, even in the past few months. I haven’t checked very recently whether any of the ones I knew about are still unfixed, but definitely make sure you’ve got the latest versions of everything. (And if you’re using Hg, be really careful about cloning a repo on a network server directly and in particular whether you’re getting a truly independent clone or just an improperly-linked version of the original that will corrupt both over time. And if you’re using Git with an external diff tool like Araxis Merge, beware that using a git difftool --dir-diff has been doing funny things when you quit the diff tool and may overwrite any changes you made in your working directory while the tool was open.)

  45. Re:But can SVN merge a branch yet? by ebno-10db · · Score: 2

    I hate this version of work......I have some coworkers who always do it. They occasionally forget to merge something back into head, which means they have to revisit the same problem in a few months.

    I've found that a good way to prevent that from happening again is to summarily execute the offender and hang his or her corpse from the flag pole as a reminder to others.

    There's also Murphy's Law corollary that says that no matter what your preferred workflow is, there will come a day when doing it differently is necessary or expedient. For example, trunk may be temporarily unstable, which means you wind up fixing the bug on the branch. Of course trunk is never supposed to be unstable, but there are a lot of things that aren't supposed to happen. A good tool shouldn't keep you from working differently when necessary (which is what at least pre-1.8 svn does, or makes it very difficult to do anyway).

  46. Re:github by rroman · · Score: 2

    If I needed github on my server, I would choose gitlab.

  47. Re:github by stoploss · · Score: 3, Funny

    I really started using github regularly at the same time that I started using github.

    Really?!

    He said what he said.

  48. Re:Won't use SVN. by goruka · · Score: 2

    It's more like there is a deep hatred against Subversion. I have no idea where does it come from, but if you are old enough you'll remember that there's been a long list of revision control systems that become trendy, with fanboys claiming they were going to "destroy svn".
    Arch was first, then Mercurial and now Git. The main difference is that Git became much more popular thanks to the excellent Github, but for enterprise and large projects where a centralized repo works better, SVN or Perforce are still a better solution than any of the distributed ones