From: Bo Yang <struggleyb.nku@gmail.com>
To: git@vger.kernel.org
Cc: gitster@pobox.com, Jens.Lehmann@web.de, trast@student.ethz.ch,
jrnieder@gmail.com
Subject: [PATCH 00/12] The first version of line level log browser
Date: Sat, 26 Jun 2010 06:27:25 -0700 [thread overview]
Message-ID: <1277558857-23103-1-git-send-email-struggleyb.nku@gmail.com> (raw)
In this version, we support multiple ranges from multiple files. Anybody interested at it can try it with something like:
git log -L /assign_range_to_parent/,/^}/ line.c or
git log -L diff-range /assign_range_to_parent/,/^}/ line.c to get a more detail history of how the lines evolved into such a state after fixing several bugs, or
git log diff-range -L /assign_range_to_parent/,/^}/ -L /cleanup/,/^}/ line.c to see when cleanup() function come into sceen.
We use a line number calculating method to find out the pre-image line range from the post-image line range. The algorithm is all in the map_lines function and I think the function is self-documenting. :)
For merge commit, we pass the line range to all of its parents and let these ranges change along each branch and combine again later when we encounter the splitting commit. This is because, if we keep the range non-split, we can give more context to users and make the output more meaningful. So I chagne the original idea that to split the ranges at a merge commit. :)
I have also test some run on the Linux kernel source code. The tool is a little slow in the kernel repository, but it always give the correct history. :)
Feel free to post any criticism/advice to me!
Bo Yang (12):
parse-options: stop when encounter a non-option
parse-options: add two helper functions
add the basic data structure for line level history
parse the -L options
export three functions from diff.c
add range clone functions
map/take range to parent
print the line log
map/print ranges along traversing the history topologically
add --always-print option
add two test cases
some document update
Documentation/git-log.txt | 30 +
Makefile | 2 +
builtin/log.c | 130 ++++-
diff.c | 6 +-
diff.h | 18 +
diffcore.h | 3 +
line.c | 1244 ++++++++++++++++++++++++++++++++++++
line.h | 128 ++++
parse-options.c | 24 +-
parse-options.h | 7 +-
revision.c | 13 +-
revision.h | 13 +-
t/t4301-log-line-single-history.sh | 342 ++++++++++
t/t4302-log-line-merge-history.sh | 118 ++++
14 files changed, 2066 insertions(+), 12 deletions(-)
create mode 100644 line.c
create mode 100644 line.h
create mode 100755 t/t4301-log-line-single-history.sh
create mode 100755 t/t4302-log-line-merge-history.sh
--
1.7.1.577.g36cf0.dirty
next reply other threads:[~2010-06-26 13:27 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-06-26 13:27 Bo Yang [this message]
2010-06-26 13:27 ` [PATCH 01/12] parse-options: stop when encounter a non-option Bo Yang
2010-06-26 13:27 ` [PATCH 02/12] parse-options: add two helper functions Bo Yang
2010-06-27 18:22 ` Junio C Hamano
2010-06-30 14:35 ` Bo Yang
2010-06-26 13:27 ` [PATCH 03/12] add the basic data structure for line level history Bo Yang
2010-06-27 18:23 ` Junio C Hamano
2010-06-30 14:42 ` Bo Yang
2010-06-26 13:27 ` [PATCH 04/12] parse the -L options Bo Yang
2010-06-26 13:27 ` [PATCH 05/12] export three functions from diff.c Bo Yang
2010-06-26 13:27 ` [PATCH 06/12] add range clone functions Bo Yang
2010-06-27 19:54 ` Junio C Hamano
2010-06-26 13:27 ` [PATCH 07/12] map/take range to parent Bo Yang
2010-06-26 13:27 ` [PATCH 08/12] print the line log Bo Yang
2010-06-27 23:49 ` Ramkumar Ramachandra
2010-06-26 13:27 ` [PATCH 09/12] map/print ranges along traversing the history topologically Bo Yang
2010-06-26 13:27 ` [PATCH 10/12] add --always-print option Bo Yang
2010-06-26 13:27 ` [PATCH 11/12] add two test cases Bo Yang
2010-06-26 13:27 ` [PATCH 12/12] some document update Bo Yang
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=1277558857-23103-1-git-send-email-struggleyb.nku@gmail.com \
--to=struggleyb.nku@gmail.com \
--cc=Jens.Lehmann@web.de \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=jrnieder@gmail.com \
--cc=trast@student.ethz.ch \
/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).