This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: keeping branch up to date with mainline


Bernd Schmidt <bernds_cb1@t-online.de> wrote:

> Just tried these instructions on the reload-branch, and it doesn't
> appear to be working as documented:
>
> bernds@telcontar:/local/src/egcs/reload-branch> svnmerge.py init
> property 'svnmerge-integrated' set on '.'

This was the correct command to do, assuming that you *never* merged your
branch since its original creation. I inspected the history of the branch
(through 'svn log') and it seems this assumption is correct. So let's spot
the problem...

> bernds@telcontar:/local/src/egcs/reload-branch> svn status
> ?      svnmerge-commit-message.txt
>   M     .
> bernds@telcontar:/local/src/egcs/reload-branch> cat
> svnmerge-commit-message.txt
> Initialized merge tracking via "svnmerge" with revisions "1-96656" from
>
svn+ssh://gcc.gnu.org/svn/gcc/branches/CYGNUS/libjava/testsuite/libjava.lang
/Invoke_1.out
> bernds@telcontar:/local/src/egcs/reload-branch> svn diff

You see that svnmerge believes that the head of your branch is
"svn+ssh://gcc.gnu.org/svn/gcc/branches/CYGNUS/libjava/testsuite/libjava.lan
g/Invoke_1.out". This is obviously incorrect: it is a branch of the trunk,
so this message should say "svn+ssh://gcc.gnu.org/svn/gcc/trunk" instead.
This appears to be a bug in svnmerge: it is confused by the weird history
created by cvs2svn. Look at the confusing output of "svn log -v -r96657
svn://gcc.gnu.org/svn/gcc/branches/reload-branch", which is the commit that
created the branch. It should just list "A /branches/reload-branch (from
/trunk:96656)" and instead it contains many other entries.

Anyway, I have fixed the bug in svnmerge and attached a new version for you
in this mail. I have verified that running "svnmerge init" in a checkout of
the reload-branch now does the right thing. Before doing that, remember to
cleanup the wrong commit you did before: you can remove the svnmerge
property, with this command: "svn propdel svnmerge-integrated .", followed
by a commit.

For curiosity: you could have worked around this auto-detection problem by
manually specifying the head of the branch and the branch point: "svnmerge
init /trunk -r1-96656".


> (The "commit -F/rm" combination seems a bit arcane to me, what exactly
> am I doing there?)

Nothing special. The svnmerge tool *never* commits anything on your behalf:
it always modifies your working copy and lets you review what it did and do
the actual commit. To ease your work, it generates a simple commit message
in a text file. When you say "svn ci -F svnmerge-commit-message.txt", you're
just telling svn to grab the commit message from the text file that svnmerge
generated for you. Then, you can simply remove the file as it's useless.

Feel free to mail me with other svnmerge problems, I'm happy to provide you
with support.
-- 
Giovanni Bajo

Attachment: svnmerge.py
Description: Text document


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]