Re: cmd_cherry in builtin/log.c?
- From
Jonathan Nieder <jrnieder@gmail.com>
- Date
- Dec 7, 2010, 17:39 UTC
- Message-ID
- <20101207173923.GA21483@burratino>
- In-Reply-To
- <AANLkTikXmc-3BBkxy-D8GNLAMXUOPghp78GpStZ-_wBW@mail.gmail.com>
Hi,
Thiago Farina wrote:
> I was looking into builtin/log.c to see how it does --reverse and I > saw that cmd_cherry is there. > > I'm wondering, why is it there?
Good question. So let's check.
$ git log --oneline -Scmd_cherry builtin/log.c 81b50f3 Move 'builtin-*' into a 'builtin/' subdirectory
That wasn't too helpful. Okay, okay.
$ git log --oneline -Scmd_cherry -- builtin-log.c 81b50f3 Move 'builtin-*' into a 'builtin/' subdirectory e827633 Built-in cherry
Running "git show e827633" reveals that the core of the original script is
for c in $inup do git-diff-tree -p $c done | git-patch-id | while read id name do echo $name >>$patch/$id done
while the core of the builtin version is
get_patch_ids(&revs, &patch_id_opts, prefix);
The latter function is static, introduced by v1.4.1~12^2~5 (format-patch: introduce "--ignore-if-in-upstream", 2006-06-25).
So the answer is that "git cherry" is considered a variant on "git log" (like format-patch, show, and whatchanged) and that it uses "git log" internals.
Hope that helps, Jonathan