Hi everyone,
Using Subversion 1.8.1 on Linux (RHEL6), a merge that creates a "local file
obstruction, incoming file add upon merge" file tree conflict will break svn
info on the root of the working copy. That tree conflict can be caused by
adding a file with a particular name on one branch, committing, then
independently adding a file with an identical name on another branch,
committing, and then merging one branch into another.
Following the merge, if the working copy is at "/home/foo/working_copy", the
error message will be:
foo@machine$ svn info /home/foo/working_copy/
...
svn: E155007: '/home/foo' is not a working copy
This exits with a return code of 1.
The error message refers to the parent directory above the root of the working
copy. The working copy appears superficially fine, and "svn status" and even
svn info on specific files and subdirectories works OK.
svn resolve --accept working on the tree conflict file makes the error go away.
This script reproduces the error for me:
#!/bin/bash
set -eu
TEST_DIR=$(mktemp -d)
mkdir $TEST_DIR/repo_files
svnadmin create $TEST_DIR/test_repos
TEST_REPOS_URL="file://$TEST_DIR/test_repos"
svn import -q $TEST_DIR/repo_files \
$TEST_REPOS_URL/trunk -m " "
svn mkdir -q $TEST_REPOS_URL/branches -m " "
svn copy -q -r1 $TEST_REPOS_URL/trunk \
$TEST_REPOS_URL/branches/foo -m " "
svn copy -q -r1 $TEST_REPOS_URL/trunk \
$TEST_REPOS_URL/branches/bar -m " "
mkdir $TEST_DIR/wc_parent
svn checkout -q $TEST_REPOS_URL/branches/foo $TEST_DIR/wc_parent/working_copy
cd $TEST_DIR/wc_parent/working_copy
touch new_file
svn add -q new_file
svn commit -q -m " "
svn switch -q $TEST_REPOS_URL/branches/bar
touch new_file
svn add -q new_file
svn commit -q -m " "
svn update -q
svn merge -q --non-interactive $TEST_REPOS_URL/branches/foo
svn info
It should print the normal svn info output, then exit with an error like:
svn: E155007: '/var/tmp/tmp.wl6qMmFQMw/wc_parent' is not a working copy
Cheers,
Ben