[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Triggers status?



On Wed, 24 Oct 2007, Ian Jackson wrote:
> I then tried to use rebase, like this:
> 
>   cp -a dpkg.triggers dpkg.triggers.rebase
>   cd dpkg.triggers.rebase/
>   git-fetch ../dpkg.debian master:debian-head
>   # where ../dpkg.debian is a straightforward pull of the head
>   git-rebase debian-head
> 
> This produced a great deal of output including complaints, for
> example:
>   error: patch failed: debian/control:6
>   error: debian/control: patch does not apply
> and:
>   CONFLICT (content): Merge conflict in src/cleanup.c

This is just the normal behaviour since you have a conflict in the rebase.
You just have to fix it exactly like you fixed the conflict when you did
the merge.

If you look at the output more carefully, you first see:
    error: patch failed: debian/control:6
    error: debian/control: patch does not apply
    error: patch failed: src/cleanup.c:236
    error: src/cleanup.c: patch does not apply
    error: patch failed: src/remove.c:163
    error: src/remove.c: patch does not apply

This just tells you that the patches of the current changeset being rebased do
not apply.  Later on you see:
    Falling back to patching base and 3-way merge...
    Auto-merged configure.ac
    Auto-merged debian/control
    Auto-merged src/cleanup.c
    CONFLICT (content): Merge conflict in src/cleanup.c
    Auto-merged src/remove.c
    Failed to merge in the changes.

It means that most of the changes have been merged properly except the
part that concerns src/cleanup.c. You can do a "git diff" and you'll see 
the conflict:
$ git diff
diff --cc src/cleanup.c
index d1ebb68,29ac8fe..0000000
--- a/src/cleanup.c
+++ b/src/cleanup.c
@@@ -237,9 -229,8 +230,13 @@@ void cu_prermremove(int argc, void **ar
  
    if (cleanup_pkg_failed++) return;
    maintainer_script_installed(pkg,POSTINSTFILE,"post-installation",
++<<<<<<< HEAD:src/cleanup.c
 +                              "abort-remove", NULL);
 +  pkg->status= *oldpkgstatus;
++=======
+                               "abort-remove", (char*)0);
++>>>>>>> triggers initial implementation as of 1.14.5ubuntu8:src/cleanup.c
    pkg->eflag &= ~eflagf_reinstreq;
-   modstatdb_note(pkg);
+   cu_postinstdone(pkg);
    cleanup_pkg_failed--;
  }

At that point, you manually fix the conflict with your editor and you do
"git add src/cleanup.c" to indicate that your resolved the conflict.

Then you continue the rebase process with "git rebase --continue".

You might have to do that multiple times if there are more conflicts.
But in any case those conflicts would also arise with a "git merge"
so it's not git-rebase's fault.

> Just to check that it's not anything wrong with my triggers branch I
> did this too:
> 
>   cp -a dpkg.debian dpkg.debian.merge
>   cd dpkg.debian.merge/
>   git pull ../dpkg.triggers
> 
> which seemed to work perfectly.

Unless you had "dpkg.debian" already merged in your "dpkg.triggers" branch, I
don't understand this. 

Cheers,
-- 
Raphaël Hertzog

Premier livre français sur Debian GNU/Linux :
http://www.ouaza.com/livre/admin-debian/



Reply to: