Follow Slashdot stories on Twitter

 



Forgot your password?
typodupeerror
×
Software

The Future of Subversion 173

sciurus0 writes "As the open source version control system Subversion nears its 1.5 release, one of its developers asks, what is the project's future? On the one hand, the number of public Subversion DAV servers is still growing quadratically. On the other hand, open source developers are increasingly switching to distributed version control systems like Git and Mercurial. Is there still a need for centralized version control in some environments, or is Linus Torvalds right that all who use it are 'ugly and stupid'?" The comments on the blog post have high S/N.
This discussion has been archived. No new comments can be posted.

The Future of Subversion

Comments Filter:
  • by Wulfstan ( 180404 ) on Friday May 09, 2008 @12:24PM (#23351530)
    Errr. I don't see how without jumping through a lot of hoops.

    If I have n users in my software team and they each have a local repository copy and "commits" that they make are made to that local repository then it basically requires me to backup everyone's PC in order to ensure that work is not lost. I don't back up PCs, we have a clear rule that if you want something to be safe it goes on the server.

    Now, sure, I can see that with some effort and mucking about you can ensure that everyone's local repository copies are backed up. But this is a whole lot of hassle and I fail to see why you would bother - other than if you have a particular religious requirement to use a DVCS ;-)
  • by corbettw ( 214229 ) on Friday May 09, 2008 @12:54PM (#23351970) Journal

    There's no reason you can't have a central "official" repository that everyone "pushes" their changes to.
    How is that substantially different from what the OP described?

    In any event, anyone advocates distributed version control has never been responsible for protecting the work of hundreds of developers working in multiple timezones/continents. Enterprises cannot afford the cost in time and money to back up every single workstation; developers have to be given a way to sync their work, at least once a day, with a central repository that can protected against data loss.
  • by burris ( 122191 ) on Friday May 09, 2008 @01:02PM (#23352112)
    One of the best things is you can checkin changes, roll back to previous versions, branch, merge, etc... all on your local repository while you're on the plane or beach where there is no network access. With Subversion you can't do that. So if you have this crazy idea but don't have network access, you either have to make changes to your current work area and risk screwing stuff up and possibly losing any changes you already have in that work area (which may not be as crazy and speculative) or you might just forgo trying out your crazy ideas because you can't take a branch or commit your changes. The same goes for when you do have network access. The DVCS systems are much faster at branching and the merging is much better IME. Most Subversion/CVS users avoid making many branches because keeping them in sync is a PITA.

    Most CVCS users don't realize how incredibly useful taking branches and merging them at the drop of a hat is because they have studiously avoided it except where absolutely necessary.
  • we use SVN (Score:5, Interesting)

    by Jack9 ( 11421 ) on Friday May 09, 2008 @01:21PM (#23352402)
    IDE integration:
    SVN is currently integrated with our IDEs (all 3), one of the main selling points in choosing a VCS.

    Ease of backups:
    We archive our repositories every day, IT loves being able to simply tgz the SVN directory and not have to worry about anything else, regardless of the state of any current projects (all groups use SVN).

    Simplicity:
    SVN/Trac training (client use, management, backend workings) takes less than 10 minutes. In another 15 minutes I can have someone setting up their own SVN repositories+Trac, without needing to pull up a single reference document, primarily because the an SVN setup methodology is trivial to memorize.
  • SVN's weaknesses (Score:4, Interesting)

    by Scareduck ( 177470 ) on Friday May 09, 2008 @01:29PM (#23352516) Homepage Journal
    Without saying too much about distributed version control schemes like Git (which I have never used), I have two major beefs with SVN:
    • Merges in a typical environment become effectively anonymous. Let's say you have a build manager and individual developers working on different changes in parallel. The build manager can't merge the changes without those changes taking on his identity, that is, all identifying information about the originator of the changes is lost.
    • So-called "best practice" for SVN branching means building new branches with every new release. That is, it's not recommended to build one branch and merge changes from the trunk into it as you're incrementally changing things on that branch, noooo. You have to keep polluting the repository with needless hair by making new branches every week, and sometimes, multiple ones per day.
    These are just two I'm aware of that bite us in the ass on a regular basis. The first issue is supposed to be fixed in one of the near-term mods to SVN, but the fact that the second even exists tells me that the guys developing SVN don't really work in the same world as a lot of the bigger commercial development environments do.
  • by Wulfstan ( 180404 ) on Friday May 09, 2008 @01:37PM (#23352600)
    I mean the idea of being able to commit changes to your local copy of the repository (whatever that is called in your DVCS of choice) without having them pushed up automatically to a "safe" central location. We encourage the use of private branches in SVN instead. Yes, merging in SVN stinks, but svnmerge.py at least makes it tolerable.

    In my environment servers are backed up and PCs are not, which is why local repository copies I think are risky.

    I appreciate that you could add this sort of feature to a centralized repository but I see that as one of the key differentiators between DVCS and CVCS. If it was a feature in a CVCS I'd be pretty negative about people making use of it without particularly good reasons...
  • by xannik ( 534808 ) on Friday May 09, 2008 @01:49PM (#23352756)

    Yes, but the point is that it encourages and allows behaviour that is not desirable in a corporate development environment - local checkins. You CAN push your changes to it but equally you CAN just check stuff in locally. In some contexts this is great - but I think in corporate environments it promotes risky behaviour.
    What's the difference between that and using a centralized VCS where the users are keeping copies of the code, but aren't checking in their changes?
  • by ajlitt ( 19055 ) on Friday May 09, 2008 @02:35PM (#23353274)
    Most CVCS users do work on development or experimental branches for exactly that reason. That way you can follow the 'commit often' rule. You really should only be doing merges to release branches or the trunk.
  • Re:Git vs Subversion (Score:4, Interesting)

    by Chemisor ( 97276 ) on Friday May 09, 2008 @03:28PM (#23354006)
    > 1. timestamps.

    I don't see what you are talking about. git timestamps every commit too.

    > 2. move tracking: trying to move a directory branch from one dir to another means you lose history.

    No you don't. If you use "git mv", like you're supposed to, history moves with you.

    > 3. large files. Take a 100MB binary file into SVN, change one byte, commit.
    > Change one byte again. And again. Git will waste the freaking 100MB for every single commit.

    No it won't. In fact, it will use less space than SVN for that commit. Yes, git supports diffs on any kind of file, and stores them that way. It didn't always, but the current version certainly does.

    > 4. partial checkouts. If there's a 5GB repository, you'll often want to check out just a single dir.

    That's what git submodules are for. Furthermore, git repositories are smaller than Subversion repositories by a large factor. At least twice, and I've seen as much as a tenfold reduction. Linux 2.6 repository is only 255M in size, and that's a huge project. Anything you do will likely be much smaller.

    > 5. ease of use. I see that ordinary users, web monkeys and so on can learn SVN easily;

    Bullshit. The commands are almost exactly the same. I don't know what people are complaining about.
  • Re:Git vs Subversion (Score:3, Interesting)

    by slipsuss ( 36760 ) <sussman@red-be3.14159an.com minus pi> on Saturday May 10, 2008 @09:05AM (#23360294) Homepage

    SVN_ERR(dir_baton->edit_baton->callbacks->file_deleted

                                (NULL, NULL, path,

                                  textbase,

                                  empty_file,

                                  base_mimetype,

                                  NULL,

                                  baseprops,

                                  dir_baton->edit_baton->callback_baton));

    Four level of indirection to call a method with 9 parameters... really? Come on.
    This is what object-oriented programming looks like in C, when there's no C++ to make it pretty. You have function pointers and their associated "closure' context objects being passed around everywhere as pairs. And lots of tables of function pointers (vtables). So in this example, we have a local closure object (dir_baton) referencing a vtable within a parent closure object, and calling a function from that vtable.

    Go look at GTK/GNOME: they have the same sorts of problems, though they tend to do things with a huge series of object-type macros to simulate inheritance.

    The 9 parameters are there because it's a complicated routine used in different contexts. There are no 'optional' parameters like in python.

UNIX is hot. It's more than hot. It's steaming. It's quicksilver lightning with a laserbeam kicker. -- Michael Jay Tucker

Working...