From: Junio C Hamano <gitster@pobox.com>
To: "Uwe Kleine-König" <ukleinek@informatik.uni-freiburg.de>
Cc: Git Mailing List <git@vger.kernel.org>
Subject: Re: rerere fails to record resolution if file doesn't exist in merge base
Date: Mon, 09 Jul 2007 01:22:29 -0700 [thread overview]
Message-ID: <7vps32ugu2.fsf@assigned-by-dhcp.cox.net> (raw)
In-Reply-To: <20070709070725.GA4445@lala> (Uwe Kleine-König's message of "Mon, 9 Jul 2007 09:07:25 +0200")
Uwe Kleine-König <ukleinek@informatik.uni-freiburg.de> writes:
> Anyhow, the failure still exists, even though the original report was
> sent when rerere was still a perl script ...
>
> zeisberg@cassiopeia:/tmp/rerere$ git init
> Initialized empty Git repository in .git/
> zeisberg@cassiopeia:/tmp/rerere$ mkdir .git/rerere
This should be creating .git/rr-cache, but what you said in your
message is correct regardless.
> In my eyes the last command should have recorded the resolution for
> lolo, shouldn't it?
I think two-file merge (ancestor did not have it, and you and he
added the path differently) is rare enough that it was dropped
outside of the radar. A fix would probably be a trivial change
to builtin-rerere.c::find_conflict(), I think. While it would
still be sane to insist that we do not do rerere for symlinks,
and require to have stages #2 and #3, we should be able to drop
the requirement to have stage #1. rerere does not use
information from there anyway.
Not even compile tested, but something like this should do.
builtin-rerere.c | 17 +++++++----------
1 files changed, 7 insertions(+), 10 deletions(-)
diff --git a/builtin-rerere.c b/builtin-rerere.c
index c25b3d5..6ffc43d 100644
--- a/builtin-rerere.c
+++ b/builtin-rerere.c
@@ -168,19 +168,16 @@ static int find_conflict(struct path_list *conflict)
int i;
if (read_cache() < 0)
return error("Could not read index");
- for (i = 0; i + 2 < active_nr; i++) {
- struct cache_entry *e1 = active_cache[i];
- struct cache_entry *e2 = active_cache[i+1];
- struct cache_entry *e3 = active_cache[i+2];
- if (ce_stage(e1) == 1 &&
- ce_stage(e2) == 2 &&
+ for (i = 0; i+1 < active_nr; i++) {
+ struct cache_entry *e2 = active_cache[i];
+ struct cache_entry *e3 = active_cache[i+1];
+ if (ce_stage(e2) == 2 &&
ce_stage(e3) == 3 &&
- ce_same_name(e1, e2) && ce_same_name(e1, e3) &&
- S_ISREG(ntohl(e1->ce_mode)) &&
+ ce_same_name(e2, e3) &&
S_ISREG(ntohl(e2->ce_mode)) &&
S_ISREG(ntohl(e3->ce_mode))) {
- path_list_insert((const char *)e1->name, conflict);
- i += 2;
+ path_list_insert((const char *)e2->name, conflict);
+ i++; /* skip over both #2 and #3 */
}
}
return 0;
next prev parent reply other threads:[~2007-07-09 8:22 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-07-09 7:07 rerere fails to record resolution if file doesn't exist in merge base Uwe Kleine-König
2007-07-09 8:22 ` Junio C Hamano [this message]
2007-07-09 11:35 ` Uwe Kleine-König
2007-07-09 13:40 ` Johannes Schindelin
2007-07-09 13:47 ` [PATCH] rerere: record resolution even if file is not " Johannes Schindelin
2007-07-09 15:32 ` Uwe Kleine-König
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=7vps32ugu2.fsf@assigned-by-dhcp.cox.net \
--to=gitster@pobox.com \
--cc=git@vger.kernel.org \
--cc=ukleinek@informatik.uni-freiburg.de \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.