From: Tomas Carnecky <tomas.carnecky@gmail.com>
To: Junio C Hamano <gitster@pobox.com>
Cc: Git Mailing List <git@vger.kernel.org>
Subject: Re: Where did Documentation/perf_counter disappear from linux-2.6-tip.git ?
Date: Tue, 22 Dec 2009 19:18:40 +0100 [thread overview]
Message-ID: <4B310D80.4010502@gmail.com> (raw)
In-Reply-To: <7vmy1a3mrh.fsf@alter.siamese.dyndns.org>
On 12/22/09 7:08 PM, Junio C Hamano wrote:
> Tomas Carnecky<tomas.carnecky@gmail.com> writes:
>
>> $ git --version
>> git version 1.6.6.rc4
>>
>> # Documentation/perf_counter is missing from the master branch, so
>> first let's find
>> # out what the last commit was that touched that subdirectory:
>> $ git log --all -1 -- Documentation/perf_counter
>> commit 436224a6d8bb3e29fe0cc18122f8d1f593da67b8
>> Author: Peter Zijlstra<a.p.zijlstra@chello.nl>
>> Date: Tue Jun 2 21:02:36 2009 +0200
>> ...
>> M Documentation/perf_counter/builtin-report.c
>>
>> # Great, let's look in which branch that commit is
>> $ git branch --contains 436224a6d8bb3e29fe0cc18122f8d1f593da67b8
>> * master
>>
>> # So, let's look at the log of master and limit it to that subdirectory:
>> $ git log master -- Documentation/perf_counter
>> $
>
> Add --full-history so that you would get _all_ possible explanation of the
> history, perhaps?
>
> In a history with this shape:
>
> ---A---B---C---D---E
> \ /
> F---G
>
> suppose that
>
> - commit F introduces a path;
> - commit G removes the path;
> - no other commit has the path in question.
>
> Without --full-history, "log E -- path" is asked to give "_one_ possible
> way to explain the current state of path in E" (iow, "why there is nothing
> there right now at E?").
>
> Two explanations are possible even in this vastly simplified toy history.
>
> - It didn't exist in A, and none of the subsequent commits B, C, D that
> lead to E did anything to change that.
>
> - F added it, but G changed mind and removed it.
>
> When "log" encounters a merge commit while traversing the history
> backwards (in this case D) with paths limiter, if there is a commit among
> its parent whose tree matches its tree with respect to the paths, side
> branches leading to all the other parents are culled and only that one
> history is followed to explain the history. In this case, neither C or D
> has the path, so their trees with respect to the paths limiter match, and
> git doesn't follow the side branch that has F and G without
> --full-history.
I've never used nor seen --full-history before, but it did help in this
case, git log now correctly sees the commits touching that subdirectory.
Thanks for the explanation.
tom
prev parent reply other threads:[~2009-12-22 18:19 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-12-22 10:04 Where did Documentation/perf_counter disappear from linux-2.6-tip.git ? Tomas Carnecky
[not found] ` <6b08a1ab.3349a908.4b30b80f.ab91f@o2.pl>
2009-12-22 12:23 ` Tomas Carnecky
2009-12-22 18:08 ` Junio C Hamano
2009-12-22 18:18 ` Tomas Carnecky [this message]
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=4B310D80.4010502@gmail.com \
--to=tomas.carnecky@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
/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;
as well as URLs for NNTP newsgroup(s).