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

Reply via email to