git-svn: correctly handle do_{switch,update} in deep directories
commit2b27f6c8847ebee631e7ad17ac9986e461d7674b
authorEric Wong <normalperson@yhbt.net>
Sun, 28 Jan 2007 12:59:05 +0000 (28 04:59 -0800)
committerEric Wong <normalperson@yhbt.net>
Fri, 23 Feb 2007 08:57:10 +0000 (23 00:57 -0800)
treec927a6f524bf5ee52e1f379bd80c51df6cae1469
parent2fa6a23efb200cea814add88ce1d1d193ba83860
git-svn: correctly handle do_{switch,update} in deep directories

The do_update or do_switch functions in SVN only allow for a
single path component; so 'path/to/deep/dir' would be
interpreted as 'path'.

SVN 1.4.x has a reparent function that can let us change the
session to use a higher-level root of the repository, so we can
use that for do_switch (which still doesn't seem to work in SVN
1.4.3 (a fix was attempted, but they missed the rest of the
typemap changes needed in trunk...)).

On the do_update side, we can use set_path on higher level
directories and set them to a newer revision so they don't get
updated.  We can't do this with do_switch, either, because the
relative path we're tracking can change (directory moving into
a child of itself).

Because of these changes, we need to double check that our Fetch
editor is correctly performing stripping on any prefixed paths
from update, otherwise we'll just die() because that would be
a bug.

Added a test case which helped me notice and fix problems with
do_switch, too.

Signed-off-by: Eric Wong <normalperson@yhbt.net>
git-svn.perl
t/t9104-git-svn-follow-parent.sh