Gere
Gere

Reputation: 12687

Can SVN do this branching model?

I'm new to versioning systems and trying to decide which one to use. There are lots of information, but maybe someone expert can already help me by answering the following question. I've found a versioning/branching model which quite closely resembles my requirements:

http://nvie.com/posts/a-successful-git-branching-model/

Could I theoretically realize this just as easily with SVN? Like the Hotfix and Bugfix branch which each merge into multiple different branches? And why is "merging" supposed to be easier with Git anyway?

Upvotes: 2

Views: 2460

Answers (4)

Dmitry Pavlenko
Dmitry Pavlenko

Reputation: 8958

Subversion has an advantage that you always know if particular branch/trunk at a particular revision is merged to your branch (by svn:mergeinfo), that's important in the case of cherry-picking commits. Git provides merge tools that are reputed to work better.

You may install SubGit (subgit.com) into your SVN repository and have advantages of both approaches. After installation SubGit created a Git repository that is linked to that SVN repository such that any push to that Git repository is translated to SVN and vice versa. The conversion is performed on-the-fly.

Upvotes: 1

Theoretically - yes, SVN can realize it. But SVN has lack and poor of merging and branching tools. So merging/branching with SVN is a bit inconvenient and scary (main problem - complicated tree and other conflicts).

GIT is a master of merging branches - he can solve extremely hard conflicts. Also it lets you to easily track all branches versions.

Main difference between SVN and GIT:

  • SVN is Centralized Version Control (CVCS)
  • GIT is Decentralized Version Control (DVCS)

To understand the comparison take a look to this article

Upvotes: 2

simont
simont

Reputation: 72527

The workflow you've linked to is recommended in quite a few StackOverflow answers. Generally speaking, though, the main idea is to keep the "good code" and the "development code" separate - master and development branches. In addition, keep features separate until they're ready to be merged into the development branch - that's the features and hotfix branches.

I have no doubts that that workflow, or one very similar, is entirely possible with SVN - you'd use SVN Branches.

There's a whole bunch of revision control systems around, and the Nvie Git workflow is pretty generic - the general workflow could probably be utilized in most revision control systems.

Could I theoretically realize this just as easily with SVN? Like the Hotfix and Bugfix branch which each merge into multiple different branches?

Personally, I don't think branching in SVN is as easy as it is in Git. Linus Torvalds agrees -- and so he designed Git around the idea of branching.

And why is "merging" supposed to be easier with Git anyway?

Git is designed around the idea of branching. Making branches, using branches, merging two branches together, merging three branches together, merging branches from local and remote repositories together - Git is good at branches. SVN isn't branch-centric, and in my (limited) SVN experience, merging two branches together isn't always fun.

If you're just starting out with a version control system, I'd recommend Git. For a decent comparison between Git and SVN, check this link. I would note, however, that Git is a little bit of a brain-bender, especially if you're new to it - conceptually, SVN is far easier to understand. I found the Pro Git book extremely helpful.

Upvotes: 5

malenkiy_scot
malenkiy_scot

Reputation: 16605

From the link you've provided:


From the classic CVS/Subversion world I came from, merging/branching has always been considered a bit scary (“beware of merge conflicts, they bite you!”) and something you only do every once in a while.

But with Git, these actions are extremely cheap and simple, and they are considered one of the core parts of your daily workflow, really.


I subscribe to that statement as far as SVN is concerned (I do not have real working GIT experience). In SVN merging is time-consuming and, frankly, scary. You do not branch lightly. So, I guess, the answer is "no" - do not use SVN if you know in advance that you'd have to do a lot of branching and merging.

Upvotes: 3

Related Questions