Re: [RFH] revision limiting sometimes ignored
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Feb 3, 2008, 06:39 UTC
- Message-ID
- <7vr6fuzgq1.fsf@gitster.siamese.dyndns.org>
- In-Reply-To
- <20080203043310.GA5984@coredump.intra.peff.net>
Jeff King <peff@peff.net> writes:
Show 34 quoted lines
> On Sat, Feb 02, 2008 at 10:00:54PM -0500, Jeff King wrote:
>
>> That being said, the commit in your 'master' branch _is_ part of
>> 1dd567d5, and should be culled. So I'm not clear on why it shows up only
>> when you ask to see both branches, and that may be a bug.
>
> OK, there is definitely a bug here, but I'm having some trouble figuring
> out the correct fix. It's in the revision walker, so I have cc'd those
> who are more clueful than I.
>
> You can recreate a problematic repo using this script:
>
> -- >8 --
> mkdir repo && cd repo
> git init
>
> touch file && git add file
> commit() {
> echo $1 >file && git commit -a -m $1 && git tag $1
> }
>
> commit one
> commit two
> commit three
> git checkout -b other two
> commit alt-three
> git checkout master
> git merge other || true
> commit merged
> commit four
> -- 8< --
>
> So a fairly simple repo, but with the key element that it contains a
> merge.It is not so simple, it appears. If I add for reproducibility "test_tick" like this:
commit () {
test_tick &&
echo $1 >file &&
git commit -a -m $1 &&
git tag $1
}the problem goes away.
So there is some interaction with "insert_by_date()". Still digging.
t/t6009-rev-list-parent.sh | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 43 insertions(+), 0 deletions(-)
diff --git a/t/t6009-rev-list-parent.sh b/t/t6009-rev-list-parent.sh new file mode 100755 index 0000000..66164e9 --- /dev/null +++ b/t/t6009-rev-list-parent.sh @@ -0,0 +1,43 @@ +#!/bin/sh + +test_description='properly cull all ancestors' + +. ./test-lib.sh + +commit () { + : test_tick && + echo $1 >file && + git commit -a -m $1 && + git tag $1 +} + +test_expect_success setup ' + + touch file && + git add file && + + commit one && + commit two && + commit three && + + git checkout -b other two && + commit alt-three && + + git checkout master && + + git merge -s ours other && + + commit merged && + commit four && + + git -p show-branch --more=999 + +' + +test_expect_failure 'one is ancestor of others and should not be shown' ' + + git rev-list one --not four >result && + >expect && + diff -u expect result + +'