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.