>Subversion 1.6 recognizes a new kind of conflict, known as a "tree conflict". Such conflicts manifest at the level of directory structure, rather than file content.
>Situations now flagged as conflicts include deletions of locally modified files, and incoming edits to locally deleted files. Files and directories which are victims of a tree conflict cannot be committed before the conflict is marked resolved.
Wow - finally! This is great. We've had to handle these edge cases during merges (greatly slowing our scripts) for a long time. Hopefully this will give us significant speed improvements which should help with one of the minor irritants of our users.
While many responses are going to be "yawn", especially in the face of the git juggernaut, a great many enterprise systems are locked into svn for the foreseeable future (given economic forecasts, IT departments aren't getting tons of budget for SCM migration / upgrade). Therefore a few extra features coming in are welcome...even if they don't begin with git-
great many enterprise systems - oh please give me a break. Subversion has nothing to do with enterprise blah. Many of us simply use svn because it is a fine tool and gets the job done. For all kinds of projects, from open source to 'enterprise'.
Seriously .. don't put the enterprisey stigma on it. It does not deserve that.
He did not put the "enterprisey stigma" on it. He only talked about how some enterprises are locked in, and appreciate updates. It appears you misread something.
Please feel free to educate us. I use version control and have done for years. I don't branch or merge, and svn works brilliantly for me. It stays completely out the way and allows me to rollback, see changesets, logs, etc if I need.
If I wrote a version control system based on my own use case, it'd end up pretty much like svn.
What am I missing?
I've read all the "Git is AWESOME" posts. If I switched to git, it would be exactly the same. It wouldn't solve any problem for my use case that svn doesn't.
Seriously unimpressed with your comment to be honest.
Either make a valid argument as to what I don't understand about version control, or retract it.
I mostly agree, but have been using git almost exclusively lately. The big draw for me is the ability to (easily) commit locally (and roll back those commits if I mess something up), then push commits to the "master" repository selectively. If SVN allowed for a similar workflow, it would satisfy my needs just fine.
Of course, any distributed VCS would probably fit that description... I found mercurial to be nice as well, and I used it happily for a couple projects. The primary reason for switching to git was to become familiar with another tool.
Two developers working on the same files at the same time is a suboptimal arrangement, and should it arise, actual communication outside of the VCS is necessary.
Git automates patchset management, not merging of rapidly diverging branches of the -same- code. With or without git, independent developers working on a set of patches for the same code will introduce genuine implementation conflicts that can not be merged without independent communication.
If, however, you should find yourself in this remarkably inefficient situation (ie, a commit war over simultaneously modified files), I recommend:
1) Speak to the other developer.
2) svn diff >saved.diff && svn up
OR
tar -cf ../svn.bak.tar . && svn up
All the time? Sometimes I am working on Bar, and want to update Foo. Unfortuantely, someone changed Bar, and now I have to deal with that change right now no matter what. And, I don't get the opprotunity to decide if I want the change to Bar; svn just auto-merges the changes in. There is nothing I can do to stop that, and no way to revert the change once it's happened. (In git, you can roll-back to any committed state. In svn, you can't even commit if there is a conflict.)
Anyway, I am glad you like svn. But it is probably due to some reason other than svn's technical merits like, "at least it doesn't have all these Ruby fanbois." That is totally understandable, ignornat fanboi-ing is VERY off-putting. (To be fair, I started using Git loooong before it was popular. So I don't consider myself a fanboi.)
Also, you don't learn anything new by sticking with what you already know. Perhaps it is worth expanding your horizions. Maybe try creating a branch in svn and go from there -- you might like it.
For me, it's like trying to persuade me to use ReiserFS, rather than ext3. I just don't care unless it's performing badly.
Why can't you just "svn update Foo" ? Then you don't have to deal with the changes to Bar :/ I don't really see what the issue is. Are you often working on exactly the same files as other developers, and not co-ordinating what you're doing?
>> "Anyway, I am glad you like svn. But it is probably due to some reason other than svn's technical merits..."
I like it, because it solves my use case perfectly. I'm not quite sure you understand that.
I'm not one of these people that love technical solutions for the sake of being technical.
You also seem to be intentionally closed-minded, for the purpose of gaining karma on social news sites. I think that's sad, but I realize that it's your loss, not mine.
I care not a jot about karma. What I do care about is ill informed people spouting rubbish.
You stated that anyone using subversion must not understand revision control. Which is an idiotic comment.
I detest this pompous high and mighty tools based attitude. Does anyone not using lisp not understand programming? Anyone not using ruby on rails not understand how to build webapps?
I'm actually very open minded. When I have problems with subversion, I'll likely try git if it fits my use case at the time. At the moment, it doesn't.
Here's a scenario - there are 2 coders working on basically the same base code, but each doing something different. Now the code from both these guys needs to be merged to the base code periodically, so what do you think these guys should use - git or svn , or any other VCS for that matter ?
I wonder if the CTypes Python bindings will help out the DVCS clients such as Bazaar or Mercurial. Bazaar already has good client support for SVN. It would be nice if Mercurial would get first class support.
Not really. I've looked at the ctypes bindings (I've got a set of incomplete patches to them), and they lack diff and replay support, which makes them basically useless for building a client. Git uses the perl bindings, so I can't speak to the quality of those. Bazaar uses a library called subvertpy that they wrote when they got tired of the suck and pain that is the Python SWIG bindings for Subversion. I'm about to switch to using that for hgsubversion, since fixing up the ctypes bindings has proven to be nothing more than a monumental pain.
>Situations now flagged as conflicts include deletions of locally modified files, and incoming edits to locally deleted files. Files and directories which are victims of a tree conflict cannot be committed before the conflict is marked resolved.
Wow - finally! This is great. We've had to handle these edge cases during merges (greatly slowing our scripts) for a long time. Hopefully this will give us significant speed improvements which should help with one of the minor irritants of our users.