Bug in svn-fe: copying the root directory acts as if it's an empty directory

2 messages, 2 authors, 2016-06-15 · open the first message on its own page

Bug in svn-fe: copying the root directory acts as if it's an empty directory

From: Andrew Sayers <hidden>
Date: 2016-06-15 22:53:14

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>../backchannel

Expected: the git repo contains "README.txt" and "trunk/README.txt"
Observed: "README.txt" exists but "trunk/README.txt" doesn't

	- Andrew

Re: Bug in svn-fe: copying the root directory acts as if it's an empty directory

From: David Barr <hidden>
Date: 2016-06-15 22:53:14

Hi Andrew,

On Thu, Mar 8, 2012 at 10:13 AM, Andrew Sayers
[off-list ref] wrote:
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.
This issue sounds very familiar, I wonder if there's an existing test
or pending patch for it? Maybe Dmitry or Jonathan can recall.
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>../backchannel

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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help