Bug in svn-fe: copying the root directory acts as if it's an empty directory
Here's a bug with svn-fe that I stumbled over while snorkelling through repo madness. I've tested it with the version of svn-fe in git.git's master branch.
Copying the root directory to a sub-directory (e.g. doing svn cp . trunk to standardise your layout) doesn't correctly initialise the new directory. To replicate the issue, run the following script from an empty directory (update GIT_DIR to point to your git.git repository):
GIT_DIR="/home/andrew/git/git"
ROOT_DIR="$(pwd)"
svnadmin create repo
svn checkout "file://$ROOT_DIR/repo" checkout
cd checkout
echo text > README.txt
svn add README.txt
svn ci -m "Created README.txt"
svn cp "file://$ROOT_DIR/repo" "file://$ROOT_DIR/repo/trunk" \
-m "Created trunk"
cd ..
mkfifo backchannel
mkdir git-repo
cd git-repo/
git init
svnadmin dump --deltas "$ROOT_DIR/repo" \
| "$GIT_DIR/contrib/svn-fe/svn-fe" 3<../backchannel \
| "$GIT_DIR/git-fast-import" --cat-blob-fd=3 3>../backchannelExpected: the git repo contains "README.txt" and "trunk/README.txt"
Observed: "README.txt" exists but "trunk/README.txt" doesn't
- Andrew
Hi Andrew,
Quoted 7 lines · Andrew Sayers
Here's a bug with svn-fe that I stumbled over while snorkelling through repo madness. I've tested it with the version of svn-fe in git.git's master branch.
Copying the root directory to a sub-directory (e.g. doing
svn cp . trunkto standardise your layout) doesn't correctly initialise the new directory.
This issue sounds very familiar, I wonder if there's an existing test or pending patch for it? Maybe Dmitry or Jonathan can recall.
Quoted 23 lines
To replicate the issue, run the following script from an empty directory (update
GIT_DIRto point to your git.git repository):GIT_DIR="/home/andrew/git/git"
ROOT_DIR="$(pwd)"svnadmin create repo
svn checkout "file://$ROOT_DIR/repo" checkout
cd checkout
echo text > README.txt
svn add README.txt
svn ci -m "Created README.txt"
svn cp "file://$ROOT_DIR/repo" "file://$ROOT_DIR/repo/trunk" \
-m "Created trunk"
cd ..
mkfifo backchannel
mkdir git-repo
cd git-repo/
git init
svnadmin dump --deltas "$ROOT_DIR/repo" \
| "$GIT_DIR/contrib/svn-fe/svn-fe" 3<../backchannel \
| "$GIT_DIR/git-fast-import" --cat-blob-fd=3 3>../backchannel
Quoted 2 lines
Expected: the git repo contains "README.txt" and "
trunk/README.txt"
Observed: "README.txt" exists but "trunk/README.txt" doesn't
Thanks for including a reproduction.
--
David Barr