From: Fredrik Kuivinen <freku045@student.liu.se>
To: Junio C Hamano <junkio@cox.net>
Cc: Fredrik Kuivinen <freku045@student.liu.se>, git@vger.kernel.org
Subject: Re: [PATCH] merge-recursive: leave unmerged entries in the index.
Date: Sun, 11 Dec 2005 10:25:31 +0100 [thread overview]
Message-ID: <20051211092531.GA4919@c165.ib.student.liu.se> (raw)
In-Reply-To: <7vek4ktai1.fsf@assigned-by-dhcp.cox.net>
On Sat, Dec 10, 2005 at 10:26:30PM -0800, Junio C Hamano wrote:
> This does two things.
>
> - When one branch renamed and the other branch did not, the
> resulting half-merged file in the working tree used to swap
> branches around and showed as if renaming side was "ours".
> This was confusing and inconsistent (even though the conflict
> markers were marked with branch names, it was not a good
> enough excuse). This changes the order of arguments to
> mergeFile in such a case to make sure we always see "our"
> change between <<< and ===, and "their" change between ===
> and >>>.
>
> - When both branches renamed to the same path, and when one
> branch renamed and the other branch did not, we attempt
> mergeFile. When this automerge conflicted, we used to
> collapse the index. Now we use update-index --index-info
> to inject higher stage entries to leave the index in unmerged
> state for these two cases.
>
> What this still does _not_ do is to inject unmerged state into
> the index when the structural changes conflict. I have not
> thought things through what to do in each case yet, but the
> cases this commit cover are the most common ones, so this would
> be a good start.
>
Good work! I have one comment, see below.
> e5c23ede9ccc6ddd5f2cf13154f977bb1b687051
> diff --git a/git-merge-recursive.py b/git-merge-recursive.py
> index b7fb096..767b13c 100755
> --- a/git-merge-recursive.py
> +++ b/git-merge-recursive.py
> @@ -280,6 +280,22 @@ def updateFileExt(sha, mode, path, updat
> runProgram(['git-update-index', '--add', '--cacheinfo',
> '0%o' % mode, sha, path])
>
> +def setIndexStages(path,
> + oSHA1, oMode,
> + aSHA1, aMode,
> + bSHA1, bMode):
> + prog = ['git-update-index', '-z', '--index-info']
> + proc = subprocess.Popen(prog, stdin=subprocess.PIPE)
> + pipe = proc.stdin
> + # Clear stages first.
> + pipe.write("0 " + ("0" * 40) + "\t" + path + "\0")
> + # Set stages
> + pipe.write("%o %s %d\t%s\0" % (oMode, oSHA1, 1, path))
> + pipe.write("%o %s %d\t%s\0" % (aMode, aSHA1, 2, path))
> + pipe.write("%o %s %d\t%s\0" % (bMode, bSHA1, 3, path))
> + pipe.close()
> + proc.wait()
> +
It might be cleaner to use
runProgram(['git-update-index', '-z', '--index-info'],
input="0 " + ("0" * 40) + "\t" + path + "\0" + \
"%o %s %d\t%s\0" % (oMode, oSHA1, 1, path) + \
"%o %s %d\t%s\0" % (aMode, aSHA1, 2, path) + \
"%o %s %d\t%s\0" % (bMode, bSHA1, 3, path))
here instead. With this code we will get an exception if
git-update-index exits with an error code. It is also consistent with
the rest of the code.
- Fredrik
next prev parent reply other threads:[~2005-12-11 9:25 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-12-11 6:26 [PATCH] merge-recursive: leave unmerged entries in the index Junio C Hamano
2005-12-11 9:25 ` Fredrik Kuivinen [this message]
2005-12-11 9:42 ` Junio C Hamano
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=20051211092531.GA4919@c165.ib.student.liu.se \
--to=freku045@student.liu.se \
--cc=git@vger.kernel.org \
--cc=junkio@cox.net \
/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