You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@subversion.apache.org by Adam Jakubek <aj...@static.int.pl> on 2005/06/07 20:35:37 UTC

Confusing status message when merging branch with binaries

Hello,

I've noticed strange subversion behaviour today. I had a branch in my project 
and I was going to merge it to trunk (and delete the branch afterwards). 
Several files (including one binary file) have been modified on the trunk, so 
I updated it and then merged all changes to my branch with:

$ svn merge -r X:Y trunk branches/feature
$ svn ci branches/feature

Note, that at this point, binary files on trunk and branch were identical.
Then I performed a merge between latest revisions of my branch and trunk, 
updating the latter:

$ svn merge --dry-run trunk@head_rev branches/feature@head_rev trunk
...a lot of updates...
U trunk/binary_file

This message was quite confusing, since I haven't modified binary files on my 
branch. I decided to proceed with the merge and removed the --dry-run switch. 
Binary files didn't show in the 'svn st' result afterwards. It seems that 
they weren't modified at all during the merge.
Does this qualify as a bug, or am I missing something? It doesn't cause any 
data loss, but it can be confusing when merging large branches (since diffing 
binaries is impossible). I was able to reproduce this on svn 1.1.1, 1.1.4 and 
1.2.0.  If anyone is interested, I can send a short script which recreates 
this problem.

Regards
Adam Jakubek

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@subversion.tigris.org
For additional commands, e-mail: users-help@subversion.tigris.org

Re: Confusing status message when merging branch with binaries

Posted by Adam Jakubek <aj...@static.int.pl>.
On Wednesday 08 of June 2005 11:15, Max Bowsher wrote:
> Adam Jakubek wrote:
> > Hello,
> >
> > I've noticed strange subversion behaviour today. I had a branch in my
> > project and I was going to merge it to trunk (and delete the branch
> > afterwards). Several files (including one binary file) have been modified
> > on the trunk, so I updated it and then merged all changes to my branch
> > with:
> >
> > $ svn merge -r X:Y trunk branches/feature
> > $ svn ci branches/feature
> >
> > Note, that at this point, binary files on trunk and branch were
> > identical. Then I performed a merge between latest revisions of my branch
> > and trunk, updating the latter:
> >
> > $ svn merge --dry-run trunk@head_rev branches/feature@head_rev trunk
> > ...a lot of updates...
> > U trunk/binary_file
> >
> > This message was quite confusing, since I haven't modified binary files
> > on my branch. I decided to proceed with the merge and removed the
> > --dry-run switch. Binary files didn't show in the 'svn st' result
> > afterwards. It seems that they weren't modified at all during the merge.
> > Does this qualify as a bug, or am I missing something? It doesn't cause
> > any
> > data loss, but it can be confusing when merging large branches (since
> > diffing binaries is impossible). I was able to reproduce this on svn
> > 1.1.1,
> > 1.1.4 and 1.2.0.
> > If anyone is interested, I can send a short script which recreates
> > this problem.
>
> Yes, please - this would be really useful.

Here is a script which reproduces this problem. It will create a repository 
with a binary file in $HOME/svntest. The last merge generates incorrect 
update message. If you compare binary files on trunk and branches, they are 
identical.

------start of script------
#!/bin/sh

# repository
REPO_DIR="${HOME}/svntest/repository"
REPO="file://${REPO_DIR}"

# working copy
WC="${HOME}/svntest/wc"


# create repository with a binary file in trunk
mkdir -p "${REPO_DIR}"
svnadmin create "${REPO_DIR}"
svn co "${REPO}" "${WC}"
cd "${WC}"
mkdir trunk branches
dd count=1 if=/dev/urandom of=trunk/file.bin
svn add trunk branches
svn ci -m 'Initial import'

# create branch from the trunk
svn cp trunk branches/feature
svn ci -m 'Created branch'

# modify binary file in the trunk
dd count=1 if=/dev/urandom of=trunk/file.bin
svn ci -m 'Updated binary file'

# merge trunk change to the branch
svn merge -r 1:3 trunk branches/feature
svn ci -m 'Merged trunk changes to branch'

# merge branch to the trunk
echo "This should report no updates on binary file:"
svn merge --dry-run "${REPO}/trunk" "${REPO}/branches/feature" trunk

------end of script------

Regards
Adam

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@subversion.tigris.org
For additional commands, e-mail: users-help@subversion.tigris.org

Re: Confusing status message when merging branch with binaries

Posted by Max Bowsher <ma...@ukf.net>.
Adam Jakubek wrote:
> Hello,
>
> I've noticed strange subversion behaviour today. I had a branch in my
> project and I was going to merge it to trunk (and delete the branch
> afterwards). Several files (including one binary file) have been modified
> on the trunk, so I updated it and then merged all changes to my branch 
> with:
>
> $ svn merge -r X:Y trunk branches/feature
> $ svn ci branches/feature
>
> Note, that at this point, binary files on trunk and branch were identical.
> Then I performed a merge between latest revisions of my branch and trunk,
> updating the latter:
>
> $ svn merge --dry-run trunk@head_rev branches/feature@head_rev trunk
> ...a lot of updates...
> U trunk/binary_file
>
> This message was quite confusing, since I haven't modified binary files on
> my branch. I decided to proceed with the merge and removed the --dry-run
> switch. Binary files didn't show in the 'svn st' result afterwards. It
> seems that they weren't modified at all during the merge.
> Does this qualify as a bug, or am I missing something? It doesn't cause 
> any
> data loss, but it can be confusing when merging large branches (since
> diffing binaries is impossible). I was able to reproduce this on svn 
> 1.1.1,
> 1.1.4 and 1.2.0.
> If anyone is interested, I can send a short script which recreates
> this problem.

Yes, please - this would be really useful.

Max.


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@subversion.tigris.org
For additional commands, e-mail: users-help@subversion.tigris.org