On Aug 11, 3:38 pm, David Aguilar dav...@gmail.com wrote:
On Wed, Aug 10, 2011 at 10:01:38PM -0700, LovelyLich wrote:
Hi all
I have git clone
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git,
So, I get an repo for linux kernel source code .
What I want to do is to search for a function changes from version A
to version B.
for instance, I want to get change log for function
kmem_cache_create in file mm/slab.c from kernel 2.6.18 to
3.0.
What I should issue an command?
I have tried
git log --grep='kmem_cache_create' mm/slab.c
but this will get many commits and every commit is specified with an
sha1, not kernel version which i wanted.
What if you did something like this?
$ git log \
--grep='kmem_cache_create --pretty=format:%H \
-- mm/slab.c |
while read sha1; do
echo $sha1
git describe $sha1
done
Be advised that that only finds commits that mention
'kmem_cache_create' in the commit message (--grep).
You might get farther using git blame on the file
and see the commits that make up that function.
Also, the git describe output is a fuzzy representation
of the version.
What are you trying to find? There's a lot you can do once you
have the $sha1. For example, git tag --contains $sha1
would tell you which releases contain the change.
That might be closer to what you're interested in.
If you're interested in commits that touch the function
definition you could try the -S switch, which will show you
everytime content changes containing that string:
$ git log -S'kmem_cache_create' ...
There's no way to do a general log for changes to a function
but git has all the information necessary to implement such
a script. That'd be a pretty useful script. I wonder if
anyone's ever written such a thing.
git-blame is the closest to that. It can be told to look
at the history of a range of lines in a file:
http://stackoverflow.com/questions/5098256/git-blame-prior-commitshttp://book.git-scm.com/5_finding_issues_-_git_blame.html
I hope that helps,
--
David
git-cola: The highly caffeinated git GUI
https://github.com/davvid/git-cola.githttp://cola.tuxfamily.org/
Very thanks for you long and detailed reply.I think I got what i
want from your reply . thanks again.
BTW, i found i can solve this problem easily by using gitk to browse
log...
--
You received this message because you are subscribed to the Google Groups Git
for human beings group.
To post to this group, send email to git-users@googlegroups.com.
To unsubscribe from this group, send email to
git-users+unsubscr...@googlegroups.com.
For more options, visit this group at
http://groups.google.com/group/git-users?hl=en.