Re: [PATCH 00/12] Towards a better merge resolution support

2 messages, 2 authors, 2016-06-15 · open the first message on its own page

Re: [PATCH 00/12] Towards a better merge resolution support

From: Junio C Hamano <hidden>
Date: 2016-06-15 22:45:16

Alex Riesen [off-list ref] writes:
... IOW, copy the commit
resolution from some other merge commit. Maybe can be a way to use
rerere mechanism with that?
If you know which merge I did you want to steal from, you can prime your
rerere database by pretending to be me, doing the merge.  Something like:

	$ git checkout $merge^1 ;# detach to the parent of merge
        $ git merge $merge^2 ;# pretend you were me to redo it
        $ git diff -R $merge | git apply --index ;# and get what I did
	$ git rerere ;# have rerere record the resolution

Re: [PATCH 00/12] Towards a better merge resolution support

From: Alex Riesen <hidden>
Date: 2016-06-15 22:45:16

Junio C Hamano, Mon, Sep 01, 2008 12:38:25 +0200:
Alex Riesen [off-list ref] writes:
quoted
... IOW, copy the commit
resolution from some other merge commit. Maybe can be a way to use
rerere mechanism with that?
If you know which merge I did you want to steal from, you can prime your
rerere database by pretending to be me, doing the merge.  Something like:

	$ git checkout $merge^1 ;# detach to the parent of merge
        $ git merge $merge^2 ;# pretend you were me to redo it
        $ git diff -R $merge | git apply --index ;# and get what I did
I ended up using

    $ git checkout Merge^1
    $ git merge Merge^2
    $ git diff -R Merge | git apply
    $ git diff -R Merge --name-only -z | git update-index -z --stdin
    $ git rerere

Just git apply --index complained about the files missing from the
index:

    $ git tag Merge c5e2ace70271b481632aaf987361027ca4592df6
    $ gco Merge^1
    Previous HEAD position was c5e2ace... Merge branch 'jc/better-conflict-resolution' into next
    HEAD is now at 2392877... Merge branch 'master' into next
    $ git merge Merge^2
    Auto-merging Documentation/config.txt
    Auto-merging Documentation/git-checkout.txt
    CONFLICT (content): Merge conflict in Documentation/git-checkout.txt
    Auto-merging builtin-checkout.c
    CONFLICT (content): Merge conflict in builtin-checkout.c
    Auto-merging builtin-merge-recursive.c
    Auto-merging t/t6023-merge-file.sh
    Auto-merging t/t7201-co.sh
    CONFLICT (content): Merge conflict in t/t7201-co.sh
    Auto-merging xdiff-interface.c
    Auto-merging xdiff-interface.h
    Recorded preimage for 'Documentation/git-checkout.txt'
    Recorded preimage for 'builtin-checkout.c'
    Recorded preimage for 't/t7201-co.sh'
    Automatic merge failed; fix conflicts and then commit the result.
    $ git diff -R Merge |git apply --index
    error: Documentation/git-checkout.txt: does not exist in index
    error: builtin-checkout.c: does not exist in index
    error: t/t7201-co.sh: does not exist in index
	$ git rerere ;# have rerere record the resolution
Well, it works, but it's a bit of work and hard to automate (needs a
working tree). An option to merge:

    $ git merge <branch>
    conflict ... investigate ... find a resolution in <resolution>
    $ git reset --hard
    $ git merge --rerere <resolution> branch
    check... Ok.
    $ git commit

or rerere:

    $ git merge <branch>
    conflict ... investigate ... find a resolution in <resolution>
    $ git rerere <resolution>
    $ git reset --hard
    $ git merge <branch>
    check... Ok.
    $ git commit

These could be more convenient.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help