git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Catalin Marinas" <catalin.marinas@gmail.com>
To: "Yann Dirson" <ydirson@altern.org>
Cc: "GIT list" <git@vger.kernel.org>
Subject: Re: Use of "stg sync"
Date: Tue, 6 Feb 2007 10:07:15 +0000	[thread overview]
Message-ID: <b0943d9e0702060207v3a6ed16fs61feb34f03211a6@mail.gmail.com> (raw)
In-Reply-To: <20070204144233.GP5362@nan92-1-81-57-214-146.fbx.proxad.net>

On 04/02/07, Yann Dirson <ydirson@altern.org> wrote:
[...]
> Then I wanted to integrate the bugfix from "etch" into "lenny".  So I
> just tried to use "stg sync" on this patch.  It should be noted that
> this particular patch is the one that adds the Debian packaging files
> (as opposed to the other ones, which modify the upstream source
> files).
>
> Here is what I get.  I suppose that could have been expected, but that
> looks nevertheless annoying...

Have you modified the last try/except block in stgit.main.main? You
should only get an error message, not the full backtrace.

The interesting messages are:

> Synchronising "debian"...Error: File "debian/tau.files" added in branches but different
> Error: File "debian/tau-racy.files" added in branches but different
> Error: File "debian/rules" added in branches but different
> Error: File "debian/changelog" added in branches but different
> stg sync: GIT index merging failed (possible conflicts)

Which are what I would expect the 'sync' command to do - it tries a
three-way merge between the debian//top, debian@etch//top and
debian@etch//bottom (the order is probably different). Since the
debian/rules etc. files aren't present in debian@etch//bottom and you
modified them in debian@etch//top, you get a merge conflict - files
added in both branches but different.

'stg status' should show the conflict files and you have to manually
fix them. If you know that you only modified the patch in etch, you
can do 'stg resolved -a -r patched'. You could also add 'recursive =
True' argument to the git.merge() call in
stgit.commands.sync.__branch_merge_patch(). This would perform a merge
with 'git-merge-recursive' rather than 'git-read-tree -m' and it is
supposed to do a smarter two-way merging. You might not get a conflict
at all or, at least, the conflicted file would have some markers.

The reason I didn't add the recursive merge for 'sync' was the
slowness of this operation (git-read-tree -m was faster but maybe
git-merge-recursive was improved in the last weeks). Please try this
and let me know whether you get better results so I can modify the
'sync' command.

Anyway, this is a limitation of 'sync' three-way merging and I
couldn't find an easy solution. For me, the best thing is that if the
patch was synchronised, there won't be any conflicts reported and I
can be sure they are the same. You mentioned patches of patches some
time ago but these would get lost on the first rebase (unless you want
to have a patch made of sub-stacks but you get to a fractal structure
with sub-sub-...-sub-stacks :-))

-- 
Catalin

      reply	other threads:[~2007-02-06 10:07 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-02-04 14:42 Use of "stg sync" Yann Dirson
2007-02-06 10:07 ` Catalin Marinas [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=b0943d9e0702060207v3a6ed16fs61feb34f03211a6@mail.gmail.com \
    --to=catalin.marinas@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=ydirson@altern.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).