Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Can we finally move to DVCS in Corporate Software? Is SVN still a 'must have' for development? [closed]

Git/Mercurial have been becoming more and more popular. I have seen plenty of articles comparing SVN with Git/Mercurial, but I am wondering if there is really any reason to still use SVN. It seems like there are plenty of tools for Git/Mercurial now which should help spread its corporate adoption.

Are there any reasons to still use SVN? Is Mercurial/Git finally ready for corporate adoption?

like image 352
Conceited Code Avatar asked Aug 30 '10 03:08

Conceited Code


People also ask

Is SVN still being used?

While SVN is no longer the most used VCS, it has managed to establish itself in a few very niche areas. Features like customizable access control to project files and a central server are some reasons why developers may still be using SVN.

Which one is better SVN or Git?

SVN is better than Git for architecture performance, binary files, and usability. And it may be better for access control and auditability, based on your needs.

Why do people prefer Git over SVN?

Many people prefer Git for version control for a few reasons: It's faster to commit. Because you commit to the central repository more often in SVN, network traffic slows everyone down. Whereas with Git, you're working mostly on your local repository and only committing to the central repository every so often.

What are the advantages of SVN?

SVN also enables you to quickly retrieve versions of a code repository through the checkout process. While SVN doesn't support nested repositories, you can still retrieve and combine changes found in multiple code repositories into one working copy of the code using the command svn:externals.


2 Answers

On the one hand, SVN integration (with IDE, frameworks, wikis, ...) is very mature, as well as its GUIs and code browsers (even though DVCS like Git and Mercurial progress every day).

On the other hand, introducing a DVCS in an Enterprise environment is still not a trivial task:

  • Some requirements are not easily met (in terms of security and access control, administration and restriction of access)
  • The DVCS paradigm is more complex to understand, with lots of pros and cons.
  • You really need to leverage its many workflows instead of relying on the SVN centralized one.
  • The transition from CVCS to DVCS is difficult

Just to be clear, using a DVCS can be a very valid choice:

  • for a new project, where the developers are not tied with legacy tools or processes
  • especially when the developers are not geographically located in the same place (often the case with open-source development, which is why DVCS are mainly used there).

StackOverflow (not an open source project) is using Mercurial (see HgInit, written by Joel Spolsky).
They migrated from SVN to a DVCS:

  • in part because their developers are now all over the world(!)
  • and also because the merge facilities of a DVCS are much more advanced than in SVN.
    (which they need to maintain many parallel slightly different versions of their code base, between SO sites, StackExchange sites V1 and V2, Area 51, ...)
    See "differences between DVCS and CVCS", or "What are the benefits of Mercurial or git over svn for branching/merging?".

  • For a corporate environment (where I am), any transition of any kind is not trivial, because it need to be:

    • funded (money, even if the tools are free)
    • supported (that means having the right people with the right competences)
    • integrated (with existing legacy tools, GUIs, IDEs like a Visual Studio or many others, ...)
    • administrated (in term of common servers, even for a DVCS)
    • documented (especially for users coming with a CVCS like SVN background)

So DVCS can also be very useful in a corporate environment:
(See "Corporate adoption rate of Git?" or "Git-Based Source Control in the Enterprise: Suggested Tools and Practices?".)
It is (even for new projects) simply not as easily put in place than in a smaller structure or in open-source environments.

like image 88
VonC Avatar answered Sep 23 '22 14:09

VonC


Is it considered better for a single developer?

If anything, Subversion is worse for a single developer (more troublesome to setup).

But a good reason to keep using SVN is inertia. If SVN works fine for your project (or in your company), there is no need to go through the pains of switching over. There might be some training costs involved in teaching everyone the new tools (and new workflows), with no real benefits.

like image 29
Thilo Avatar answered Sep 23 '22 14:09

Thilo