[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: Merging Binary files

From: Ryan Schmidt <subversion-2007b_at_ryandesign.com>
Date: 2007-07-12 00:01:41 CEST

On Jul 11, 2007, at 16:18, claudia logan wrote:

> We recently migrated all our efforts into subversion and started
> creating branches and tags. Our process states that all changes
> are made in the trunk. Once we determine to "formally" create a
> branch in prep. for release, a POC (yours truly) creates the
> branch. which then goes to testing...etc. days later an approved
> change is made in the trunk then is merged to the branch. So
> having said this, I have two questions:
>
> 1. When I try to do a merge of only binary files, ie. word docs
> into the branch, I keep getting: Skipped FolderName.... and
> conflicts, and creates 2 files: filenameRright and FilenameRleft.
> When I do a status It states it as "C" conflict. How do I merge a
> binary file? AND include the Skipped Foldername?
>
> I am executing the following command:
>
> svn merge http://:my_repo/trunk/projectA/doc \
> http:/my_repo/branch/BranchName/doc .
>
> I want the latest and greatest from the trunk into the branch. Is
> this cor
>
> 2. From the best practices point of view, is this the best way to
> implement our process?

Subversion cannot merge binary files for you, so it gives you the
left and right files so that you can compare them yourself. You can
either open both of them in a program that understands those binary
files (presumably Microsoft Word for Word documents, for example),
visually compare them, and manually redo the changes. Or, use a tool
that understands how to show you a diff of that binary format. For
example, TortoiseSVN on Windows includes a diff viewer for Word
documents, I believe. For each file format that you want to diff, you
need a tool that understands that format.

As to why the folder was skipped, your merge command is not correct
for what you want to do. The merge command is really just a diff and
patch. So you have asked Subversion to compute the difference between
the head of the trunk and the head of the branch, and apply that
difference to the working copy. That's not what you want.

You need to keep track of revisions. Assume you created the branch
from the trunk at revision 100. Now some time has passed and the
repository is at revision 120 and there are more changes in the trunk
that you would like to merge into the branch. Do this:

svn merge -r100:120 http://my_repo/trunk/projectA/doc .

...where "." is a working copy of the branch. Resolve any conflicts
and test, and then commit, making sure to note in your commit message
what revisions you merged, like:

svn ci -m "Merging -r100:120 from trunk into some branch"

That way, next time you want to merge, you can look into the log to
remind yourself where you need to start. (In this case, your next
merge would need to start at r120.)

The above is necessary because Subversion does not have merge
tracking. That feature is currently being developed, so this process
will probably become easier in the future, but how long you'll have
to wait is not currently known.

An alternative is to use the svnmerge script to do all of your
merges, which handles some of these details for you.

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@subversion.tigris.org
For additional commands, e-mail: users-help@subversion.tigris.org
Received on Thu Jul 12 00:01:45 2007

This is an archived mail posted to the Subversion Users mailing list.