Dear subversion users, developers,

I'm working on a project where we are actively working on many branches. It works great. Despite all the IDE support I have, as a build and release engineer, I need to work a lot from command line.

Addressing branches/tags could be a pain from command line especially when you would like to compare or see log for a file deep in hierarchy.

I'd propose a -b [--branch] option or extend the meaning of "^" sign for those commands which can work with URL-s. Extending ˇ would mean that when used as ^/ it means repository root and using it as ^[branch] then it would refer to a branch.

How would it work:

Let's imagine the following repository layout:
 /project1/trunk
 /project1/trunk/dir1/dir2/dir3/fileA
 /project1/branches/branchA
 /project1/branches/branchA/dir1/dir2/dir3/fileA
 /project1/branches/branchB
 /project1/branches/branchB/dir1/dir2/dir3/fileA
 /project1/tags/tag1
 /project1/tags/tag2

Use Case 1:
        We are in the WC root of checked out trunk and would like merge
        branchA back.
        svn merge -b branchA
        svn merge ^branchA

Use Case 2:
        We are in dir1/dir2/dir3 in WC of checked out branchB and would
        would like to see what has happened on trunk in this folder:
        svn log -l 3 -b trunk
        svn log -l 3 ^trunk

Use Case 3:
        We are in dir1/dir2/dir3 in WC of checked out branchB and would
        would like to see what is the difference in fileA between       
        our working copy and branchA:
        svn diff -b branchA fileA
        svn diff ^branchA fileA


Implementation ideas:
        We put a specific property on project1 folder let's call it
        svn:branches for now. Here we could describe the layout of
        branches and tags for that part of repository. E.g.:
        a) Using prefixes:
                /
                /branches/
                /tags/
        b) Using some custom mapping/lists:
                trunk
                branches/*
                tags/*
        c) Using regexp captures:
                (trunk)
                branches/(\w+)
                tags/(\w+)
        Having this info, the path where this property is set, the name
        of the branch and the current path relative to wc root it is
        possible to construct a repository URL to be used.

As far as I currently see there would be no change required on server side.


Reply via email to