Showing posts tagged subversion

Subversion or Git? Decisions, decisions ….

by Jack Repenning

Git or SVNAre you facing a difficult choice between version control systems? Are you having trouble sorting out the alternatives? Are you bewildered by all the opinions you find on Google? Let’s see if I can help sort this all out.

CollabNet (the original stewards of the Subversion project) provides both Subversion and Git, either through our enterprise TeamForge product or through our Codesion Cloud Services. We think there’s a place in the universe for each. Here’s how to find yourself in that universe.

The short form

Here are some specific recommendations. If you want to stop reading at the end of this section, you should make out just fine.

  • If you have compelling requirements for a single, certain, master copy of your work, use Subversion. You can do this with Git, so long as there are no slip-ups. But you can’t do anything else with Subversion (slip-ups or no), and “compelling requirements” like Sarbanes-Oxley are happier with guarantees than possibilities.
  • If you plan to maintain parallel, largely shared but permanently somewhat different lines of the same product, use Git. One common example: perhaps you have a large product that you customize for each customer. The customizations are permanent, and generally not shared among code lines, but most of the code is common to all. Git was designed for just this case (in Git terms, local customizations to the common core, and occasional feature or bug-fix contributions back up-tree).
  • Neither of those? Take your pick, you should be fine with either tool.

The Basics

What do you want from your version control system? A lot of this is the same for everyone, and both tools accomplish these tasks just fine. If all you care about is the basics, you could easily just flip a coin and get on with your work, confident that your choice would be sound. These “basics” include:

  • Store all versions of your files (“version control”)
  • Associate versions of each file with appropriate versions of all other files (“configuration management”)
  • Allow many people to work on the same files, toward a common goal or release (“concurrency”)
  • Allow groups of people to work on substantially the same files, but each group towards its own goal or release (“branching”)
  • Recover, at any time, a coherent configuration of file versions that correspond to some goal or release, either for investigation or extension like bug fixing (“release management”)

Both systems do all these things quite well. If these things are truly all you care about … flip that coin! All the discussion and decision has to do with other details, details that are always secondary to the basics, but can become crucial to particular projects or environments. 

So, if you haven’t flipped that coin and gone away, let’s look at the differences.

But first, some demythologization

Here are a few things you may have heard that just aren’t true, or aren’t true any longer:

  • Git hates windows. No, it doesn’t. It used to, but now there are good Git integrations with Windows Explorer (TortoiseGIT, SmartGIT) and most of the major IDEs  (Visual Studio, Eclipse, Netbeans), and you no longer need to use the Unix emulation environment Cygwin.
  • Git is only for hackers. As a  Unix-centric, command-line only tool, Git was originally anathema for many workers. But with all the GUI integrations, it’s considerably more friendly, within reach of nearly everyone (see Windows integrations above, plus non-Windows tools like GitX, Coda via GitX or Tower, Emacs).
  • Git is hard to learn. Well, it’s a lot easier to learn now, anyway, thanks to those GUIs, and to improvements in the command-line UI and documentation.

On the other hand

  • Subversion is slow on Windows. The latest Subversion releases, up to the current 1.7, have made great strides in Windows performance.
  • Subversion merging is hard. Well, it’s a lot easier now, anyway, thanks to the continuing progress on “merge tracking.”

So, what’s different?

As you’ve surely heard, the key difference is that Subversion is “centralized,” while Git is “distributed.” You can go many other places to learn about what that means in their implementation, I don’t spend time on that here. But I will talk about why it matters to you.

Local versioning

Git’s distributed model means that you have full version control operations purely locally on your workstation. Of course, the changes you make locally are not visible to anyone else, until you do something else (Git’s “push” or “pull”), but you can check changes in so they’re not lost, create branches, merge among branches, back up to older versions, and browse and compare versions — all without a network. The one cost in all that is, you have to learn some additional commands (push, pull, clone) and workflows, if you ever expect anyone else to see your work. You can do everything locally that any version control system can do … and you also have extra steps required to make your work visible to others, kind of an inescapable trade-off. On balance, local versioning is a significant convenience for the developer, and a big part of the popularity of Git.

Guaranteed centralization

Most processes have some reason to want one copy of everything, somewhere, that’s reliably known to be “the official version.” With Subversion, that’s the central repository. With Git, that’s … some repository or other: the tool doesn’t privilege any one repository over another, but users and conventions can. With Git, you have to remember to push or pull all changes into the designated central repository — not hard to remember, especially if you support it with other conventions, such as only building releases from the central, but still an extra step. With Subversion, there’s nothing to remember or agree to: there is only one repository. By definition, anything that’s checked in at all is checked in to the central. One place where this can become particularly important is in “governance,” where external constraints like Sarbanes-Oxley or escrow contracts demand hands-off guarantees. On balance, enterprises with governance constraints value the guarantees of Subversion.

(Governance, traceability, ALM, and DevOps all require broader support than just the code and files, of course: there has to be integration among the code repository, the tests, the deployed product, and the tracking system. Fortunately, CollabNet now integrates both Subversion and Git with these other components.)

Throw-away work

Somewhat paradoxically, there are times when you want to throw away (or keep private) some work. Git is better at throwing things away than Subversion is: you keep the potentially throw-away work in its own repository until you decide whether to make it official. If you decide to toss it, there are virtually no left-overs in the repositories you keep. By contrast, in Subversion, everything goes into the one central repository, and you don’t have that same option. Typically in Subversion, you don’t actually “throw away” such work, but only leave it on some branch you never look at. But it’s still there, taking up space, and possibly cluttering the history browser. The possibility of throw-away work is a fairly big consideration in open-source work (and in fact it was one of the key design considerations for Git), but rather less so for enterprise work (where throw-away work is also throw-away salaries, equipment, lighting, and all the other employee expenses), so enterprises typically avoid ever doing it in the first place. I wrote about handling throw-away work at some length a while back.

Un-recommendations

Some things are possible, but I wouldn’t recommend them — at least, not to someone who has to ask:

  • Git-SVN. Git is able to pull files out of a Subversion repository, store them in a Git repository (allowing all that local version control, and some inter-git-repository push/pull/merge), and then push the results back into Subversion. It sounds like the best of both worlds, doesn’t it? But you end up having to be an above-average expert in both systems, and parts of the workflow are very slow. Some folks really like it. Maybe you would, too. But it’s not what you’d call “mainstream.”
  • Cygwin. Cygwin is a system for providing a lot of Unix-like capabilities on a Windows system. Early Git Windows implementations ran inside Cygwin. Again, this ends up forcing you to be an above-average expert in two very different systems. If you’re already steeped in Unix and Windows both, it can be handy. But it’s a high price to pay for just adding a little Git. Fortunately, Git Windows installation no longer requires Cygwin.

So, which one’s for you? Try a free, fully functional 30 day trial of Subversion and Git on Codesion to help make this choice.

European Data Center Now Online

by Tona Medina

Hey there fellow users of the force! We are happy to announce the launch of Codesion’s new European Data Center, which is already providing faster hosting for our EU-located customers.

As always, CollabNet’s Codesion Cloud platform offers developers and designers an easy way to host your Subversion and Git code repositories online, manage issues, and integrate with popular agile developer tools. Now you can do all of this even faster, with boosted network access speeds! Instantly create and add projects as you scale - bug tracking, agile management, full lifecycle management, and more - all in our secure, hosted EU environment.

Expect to see significantly faster network access in Europe and parts of Africa, the Middle East, and Asia – some beta users have seen better than 100% improvement. Our UK customers are posting 20% speed increases across the board! You can do your own test and post your results to our article.

Considering hosting your SVN or Git repository in the EU? Have any questions? Make sure to check out the frequently asked questions for more information about the EU data center.

If you are an existing customer and want to move your SVN service to Europe, please visit the migration page or file a support case, and we can manually move your repository.

Lastly, let us know if there are specific services that you would like to see in Europe, create your own idea and vote on it.

Has Git Killed Subversion & CVS?

by Mark Bathie

Video killed the radio star, and the Internet killed both. Many believe Git is on it’s way to killing Subversion (which all but killed CVS), but let’s let the numbers speak for themselves.
 
There are over 20 different open-source and commercial version control systems (VCS) in use today - some getting more media coverage than others. In particular, distributed VCS (DVCS) like Git and Mercurial are attracting a lot of attention due to the popularity of Linus Torvald, GitHub and the recent acquisition of Bitbucket by Atlassian. I wondered what developers are actually using for their software development process so I started my research.

    

I pulled data on the Codesion VCS’s in use - Subversion, Git and CVS. Interestingly enough, the old dinosaur CVS is still being used for new projects today, but showing a trending decline in favor of Subversion and Git. While this analysis only looks at the data on the Codesion system, it seems to be pretty reflective of the overall industry trends. Perhaps I’ll have the time someday to put together a crawler which surveys VCS’s running public web servers to gauge uptake beyond Codesion’s data set.

Read More

Subversion 1.6.15 upgrade

by Mark Bathie

In keeping up with the latest Subversion has to offer we have upgraded our SVN cluster to SVN 1.6.15. As a rule of thumb we generally like to wait a few months after a new release before upgrading our servers, unless the release contains critical security fixes. This release brings with it a bunch of bug fixes and improvements. SVN is designed to be backwards compatible, so no need to rush out and upgrade your client, but we always recommend upgrading when possible. Check out the release notes, and change log for more details.

Codesion’s Top 5 Blog Posts of 2010

by Guy Marion

Happy Holidays from CodesionFrom all of us at Codesion we want to thank you for an amazing year! Here are our top 5 blog posts from 2010 to celebrate our success. From CVSDude to Codesion to CollabNet, it’s been a wild ride and we couldn’t have done it without the loyalty and support of our customers. Thank you and happy holidays!

Read More

ApacheCon NA 2010 Wrap Up

by Jack Repenning
ApacheCon-NA 2010 Logo

In honor of Codesion joining CollabNet, I thought I’d poke my head in over here, and hopefully you’ll see me as a more regular staple.

l had the chance to attend ApacheCon this year—”ApacheCon NA,” as it’s now called. The Apache community has become huge! Nearly 100 top-level projects (and all stored in a single Subversion repository!).

> svn ls http://svn.apache.org/repos/asf | wc -l
     97

Like any Con, there were more interesting presentations and panels than time, and you felt like you needed to team up with four or five friends, to divide the tracks out fairly and trade notes later. There was a lot of talk about breaking the Con up into sub-groups, to provide more depth in more-focused areas; maybe next year.

The hot topic area this year was the cluster of advanced data projects: Hadoop, Hbase, Lucene, Solr, CouchDB, Cassandra. It’s kind of funny, actually: I distinctly recall database vendors of the 1990’s moaning that there were no worlds left to conquer, nothing left to invent, once they’d all gone “object-relational.” I guess someone got tired of waiting for them! At CollabNet, we’re looking at technologies like these for core-product search, and data-center analytics—precisely because the scale of our business has outgrown reasonable solution by relational, object-relational, or relational data warehousing techniques. So I was taking a lot of notes!

As for Subversion: after setting a world land speed record for passing through the Apache project Incubator, it’s now become the presumed foundation of Apache (question: how do you figure out how many Apache projects there are? answer: “svn ls”!). As we noted a  year ago, Subversion was conceived and run from the get-go in the Apache style, and so it’s no surprise that it’s nestled down in to the heart of the community. Every time I introduced myself, I seemed to get the response “CollabNet? Oh, yeah — Subversion!”

Codesion Upgrades to Subversion 1.6.13

by Willie Wang

In keeping up with the latest releases of Subversion, we rolled out Subversion 1.6.13 on all our servers early this week.  Please refer to the change log for more information.

Subversion Configuration Management Workshop

by Guest Blog

Guest post by Bob Jenkins, Director of Subversion Services at CollabNet

Life’s easy when you’re a one person team working on a single project, but as your situation gets more complicated by teammates and multiple projects, you need to understand more about Subversion than just how to checkout and commit. For example,

  • How many repositories do I need and how should they be structured?
  • When should a branch be used versus just using a working copy for isolation?
  • How can I handle customer customizations?
  • How can I proactively be ready to answer questions about our release process?
  • How do I include outside consultants without letting them see too much?

As with any development tool, there are definite best practices that utilize the strongest functionality of that tool while avoiding its weaknesses. You can discover those things the hard way (trial and error), but that comes at a cost of time and productivity. Alternatively, we’re offering you a chance to skip the pain and go to the benefits of best practices.

Bob Jenkins, SubversionMy name is Bob Jenkins and I’m the Director of Subversion Services at CollabNet. I’ve been working with configuration management tools for more than 14 years focused on helping organizations and users like you successfully implement tools. I’ve specifically been focused on Subversion since the release of version 1.0 so I’ve assisted more than a hundred companies to maximize their use of Subversion over the last 6+ years. I’ve worked with teams of hundreds to teams that number only a handful. I’ve worked with development of web sites to third party development to internally used products to commercial projects. I’ve seen it used in more than a hundred organizations.

I’m leading a four hour online workshop focused on Subversion Configuration Management best practices. We’ll center our discussions on the most common aspects of configuration management – branching the code, promoting the project, and controlling access. Here’s your chance to get input on how to handle your complexities or be prepared for them when they come. We’ve only got 15 seats so register early. Talk to you on the third!

Subversion Configuration Change Management Workshop
Friday, December 3rd
9am - 12pm PDT (12pm - 4pm EDT)
Cost: $199

Sign Up

Codesion + CollabNet = Subversion Epicenter of the World

by Guy Marion

Today, we are excited to announce that we have been acquired by CollabNet Inc., the founder and corporate sponsor of the Subversion version control system. The terms of the deal are confidential, but I can say that there is a combination of cash and equity that will keep the Codesion team focused on building and growing the combined company until we achieve our ultimate vision (creating the epicenter of the Subversion universe). We are excited to bring our unique hosting technology platform and flexible, secure and reliable developer tool services, to CollabNet’s universe of 5 million Subversion downloaders, users, and now 6,000 corporate customers.

Subversion Epicenter of the World

Since Mark Bathie founded the company as CVSDude in 2002, Codesion has attracted over 100,000 users (70K active today), thousands of workgroups, companies, universities, and governments (3,400 paying today), and helped developers track hundreds of millions of file updates (over 5M / month currently). A significant proportion of startups have used CVSDude or Codesion at some point in their history to manage their code repositories. We never raised venture capital (we did raise $1.2M in Angel funding), instead bootstrapping through 32 consecutive quarters of recurring revenue growth - achieving 60% year-on-year growth in Q2 2010, and relocating from Brisbane, Australia, to Palo Alto, CA, and now to Brisbane, CA!

Read More