Jim Blandy wrote:
> I think this has two problems:
> - If I have a wc based on a branch, how does this help me find the
> corresponding trunk? The repository could have many projects in it. The
> trunk might not be a sibling of the branches directory.
The idea is that everything listed within a single "roots" property is
parallel, to use the terminology from elsewhere in this thread. So if I
had the following multi-project layout:
The project1 and project2 dirs would both have svn:roots properties set to:
The .svn directory in the wc would need to store two additional pieces
of info (I'm guessing in the entries file): The ancestor path that
contains an svn:roots property, and the value of that property.
So, if I'm in a working copy checked out from /project1/branches/r1.x,
and within that working copy I am in the dir src/foo/bar, the command:
svn diff -r +trunk baz.txt
would do the following:
1) check the entries file to find:
roots-set-on-dir = svn://repos/project1
roots-value = trunk|(tags|branches)/[^/]+
2) Assert that the path specified with "-r +" (ie: "trunk") matches the
roots value regex
3) construct a regex from the two values:
4) Match the regex against the current dirs repository url
(svn://repos/project1/branches/r1.x/src/foo/bar), replacing the match
with the value given with "-r +". This produces the url:
5) construct the target url to compare by appending the relative
paramater "baz.txt", giving:
> - The regexp given assumes that there is only one directory component after
> 'branches'; that is, every subdirectory of 'branches' must be a root. But we
> encourage people to take advantage of the fact that the branch 'namespace'
> is really just part of the directory tree, and use hierarchy within branch
> names: 'experimental/wacko'. If all your branch names were two levels deep,
> then you could fix the regexp. Or if all your root names ended in '%' (say),
> and never used % elsewhere, then you could fix the regexp.
Consider a third project in the same repository as above:
On the project3 dir, I'd set:
You'd need to use libpcre for this level of regexp complexity, I think.
It appears to be portable already to all of Subversion's supported
platforms, I think.
To unsubscribe, e-mail: firstname.lastname@example.org
For additional commands, e-mail: email@example.com
Received on Thu Nov 10 19:14:23 2005