subversion-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Pete Harlan <pchpubli...@gmail.com>
Subject 1.8 bug(?): svn:mergeinfo set for tree-conflicted files in subdirs
Date Wed, 11 Mar 2015 22:16:09 GMT
Hi,

Subversion 1.8.11 behaves differently than 1.7.17 and 1.6.11, in that
it sets empty svn:mergeinfo properties for files within a
tree-conflicted directory during a merge.  The effect is this:

Layout:

/trunk
/branches/branch

Add empty dir/file.txt to trunk and independently to branch.
Merge trunk to branch; the resulting merge generates:

% svn propget -v svn:mergeinfo -R
Properties on '.':
  svn:mergeinfo
    /trunk:2-4
Properties on 'dir/file.txt':
  svn:mergeinfo

%

Expected result is that no svn:mergeinfo property would appear on
dir/file.txt.  Is this a bug?  A known bug?

Thanks,
Pete

Script to reproduce (run as "script.sh /path/to/svn"):

#!/bin/bash
#
# Reproduce an issue in Subversion 1.8.11 where files in a tree
# conflict can have svn:mergeinfo properties added to them during a
# merge.
set -e

SERVER_DIR=server
CLIENT_DIR=client

if [ $# != 1 ]; then
    echo "usage: $0 <path to svn>"
    exit
fi

SVN=$1
SVNADMIN="$(dirname $SVN)/svnadmin"

SERVER_URL="file:///$PWD/$SERVER_DIR"

createAndCommitSubdirWithFile ()
{
    mkdir dir
    touch dir/file.txt
    $SVN add dir
    $SVN commit -m "$1"
    $SVN update  # Update . to committed rev
}

# Create the repo and enter it.
$SVNADMIN create $SERVER_DIR
$SVN checkout $SERVER_URL $CLIENT_DIR
cd $CLIENT_DIR

# Create the trunk/branches structure
mkdir trunk
mkdir branches
$SVN add trunk branches
$SVN commit -m 'Create initial structure'

# Make a branch from the trunk.
$SVN copy ^/trunk ^/branches/branch -m 'Create branch from trunk'

# Commit a subdir with a file in it in the trunk and commit it.
$SVN switch --ignore-ancestry ^/trunk
createAndCommitSubdirWithFile 'Committed on trunk'

# Commit a subdir with a file in it in the branch and commit it.
$SVN switch ^/branches/branch
createAndCommitSubdirWithFile 'Committed on branch'

# Merge the trunk and display any svn:mergeinfo properties.
# (Remove --non-interactive if testing svn prior to 1.7)
$SVN merge --non-interactive ^/trunk || true
$SVN propget svn:mergeinfo -R . >actual.out

echo '. - /trunk:2-4' >expected.out

$SVN --version | head -1

if diff -q actual.out expected.out; then
    echo Success
else
    echo 'Test failed!'
    echo 'Expected output:'
    cat expected.out
    echo 'Actual output:'
    cat actual.out
    exit 1
fi

Mime
View raw message