Tuesday, February 3, 2009

Project Hosting Upgraded to Subversion 1.5



We're pleased to announce that the Subversion component of Google Code Project Hosting has been upgraded to version 1.5. What does this mean to users? If you're using a Subversion 1.5 client, you can now take advantage of Subversion's improved "merge tracking" feature to manage branches.

Prior to Subversion 1.5, branching wasn't very friendly to users. A developer had to manually keep track of the revision from which a branch was copied. She also had to keep track of exactly which changes had been merged into a branch already (to avoid repeated application of changesets), and to always specify the exact range of revisions to merge next. Merging a branch back to trunk was even more difficult, since it required comparing two precise URLs in a very specific way.

With improved merge-tracking, users never have to type a single revision number. Here's a basic example of branch workflow.
  1. Make a branch for your experimental work:
    $ cd trunk-working-copy
    $ svn cp trunkURL branchURL
    $ svn switch branchURL

  2. Work on the branch for a while:
    # ...edit files
    $ svn commit
    # ...edit files
    $ svn commit

  3. Sync your branch with the trunk, so it doesn’t fall behind:
    $ svn merge trunkURL
    --- Merging r3452 through r3580 into '.':
    U button.c
    U integer.c
    ...
    $ svn commit

  4. Repeat the prior two steps until you’re done coding.

  5. Merge your branch back into the trunk:
    $ svn switch trunkURL
    $ svn merge --reintegrate branchURL
    --- Merging differences between repository URLs into '.':
    U button.c
    U integer.c
    ...
    $ svn commit

For a more detailed discussion of merge-tracking (and its limitations), see chapter 4 of the online Subversion Book. Live in fear of branches no more!

No comments:

Post a Comment