From: Junio C Hamano <gitster@pobox.com>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Steven Rostedt <rostedt@goodmis.org>,
Jens Axboe <jaxboe@fusionio.com>,
LKML <linux-kernel@vger.kernel.org>, axboe <axboe@kernel.dk>,
Andrew Morton <akpm@linux-foundation.org>,
Tejun Heo <tj@kernel.org>
Subject: Re: [PATCH] ide: Fix bug caused by git merge
Date: Wed, 01 Jun 2011 15:01:51 -0700 [thread overview]
Message-ID: <7vmxi1fbxs.fsf@alter.siamese.dyndns.org> (raw)
In-Reply-To: <7vr57dfc8x.fsf@alter.siamese.dyndns.org> (Junio C. Hamano's message of "Wed, 01 Jun 2011 14:55:10 -0700")
Junio C Hamano <gitster@pobox.com> writes:
> Linus Torvalds <torvalds@linux-foundation.org> writes:
>
>> Junio - what made it harder for Steven to see the reason may be due
>> the default history simplification. I do wonder if we should just make
>> "--simplify-merges" the default, because the aggressive and simple
>> default culling makes it hard to see merge commits like this that just
>> pick one side over the other. --simplify-merges is more expensive,
>> but doesn't have some of the problems the aggressive simplification
>> has.
>
> It is more expensive not just in computation cycles but in latency, as it
> is inherently a "limited" operation that needs to first walk the history
> and then post-process.
>
> $ time sh -c 'git log drivers/ide/ide-cd.c | head -n 200 >/dev/null'
>
> with and without "--simplify-merges" shows more than 50-fold differences
> (0.15s vs 8s).
>
> I am more disturbed by the fact that "git show 698567f3fa7" does not show
> the mismerge (even with -c). Of course I know that not showing "taking
> from one side" is by design of -c/--cc, but I still feel there should be
> something we could do about it.
Your comment was about digging history after problem happened, so this is
a tangent in that sense, but I am wondering if it makes sense to advertise
and encourage the use of --conflict=diff3 even more, to prevent accidents
like this from happening in the first place.
Here is how our default merge conflict marker (modelled after RCS and CVS
output) look like when recreating the merge:
diff --cc drivers/ide/ide-cd.c
index 6e5123b,a5ec5a7..0000000
--- a/drivers/ide/ide-cd.c
+++ b/drivers/ide/ide-cd.c
@@@ -1781,8 -1781,7 +1781,12 @@@ static int ide_cd_probe(ide_drive_t *dr
ide_cd_read_toc(drive, &sense);
g->fops = &idecd_ops;
++<<<<<<< HEAD
+ g->flags |= GENHD_FL_REMOVABLE | GENHD_FL_BLOCK_EVENTS_ON_EXCL_WRITE;
+ g->events = DISK_EVENT_MEDIA_CHANGE;
++=======
+ g->flags |= GENHD_FL_REMOVABLE;
++>>>>>>> 61c4f2c
add_disk(g);
return 0;
With --conflict=diff3, it becomes crystal clear that g->events assignment
needs to be removed for even somebody who does not know the history of
this part of the kernel at all (like me).
diff --cc drivers/ide/ide-cd.c
index 6e5123b,a5ec5a7..0000000
--- a/drivers/ide/ide-cd.c
+++ b/drivers/ide/ide-cd.c
@@@ -1781,8 -1781,7 +1781,15 @@@ static int ide_cd_probe(ide_drive_t *dr
ide_cd_read_toc(drive, &sense);
g->fops = &idecd_ops;
++<<<<<<< ours
+ g->flags |= GENHD_FL_REMOVABLE | GENHD_FL_BLOCK_EVENTS_ON_EXCL_WRITE;
+ g->events = DISK_EVENT_MEDIA_CHANGE;
++||||||| base
+ g->flags |= GENHD_FL_REMOVABLE;
++ g->events = DISK_EVENT_MEDIA_CHANGE;
++=======
++ g->flags |= GENHD_FL_REMOVABLE;
++>>>>>>> theirs
add_disk(g);
return 0;
next prev parent reply other threads:[~2011-06-01 22:02 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-06-01 19:25 [PATCH] ide: Fix bug caused by git merge Steven Rostedt
2011-06-01 20:27 ` Linus Torvalds
2011-06-01 20:41 ` Jens Axboe
2011-06-01 20:57 ` Andreas Schwab
2011-06-01 21:55 ` Junio C Hamano
2011-06-01 22:01 ` Junio C Hamano [this message]
2011-06-02 0:01 ` Steven Rostedt
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=7vmxi1fbxs.fsf@alter.siamese.dyndns.org \
--to=gitster@pobox.com \
--cc=akpm@linux-foundation.org \
--cc=axboe@kernel.dk \
--cc=jaxboe@fusionio.com \
--cc=linux-kernel@vger.kernel.org \
--cc=rostedt@goodmis.org \
--cc=tj@kernel.org \
--cc=torvalds@linux-foundation.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