Modifications:
1. We do the parent rewriting with a more sane way. Just like the way we deal with multiple pathspec pruning, we rewrite P to its parent P^, if P^ can take all the interesting ranges from P. Otherwise, we keep P.
2. --graph will not override --full-line-diff any more. Now, they are two totally different options. You can use --full-line-diff with or without --graph.
3. Bug fix, this includes:
* --graph outputs correct graph lines
* mark a commit as root one if it takes no ranges
* some other minor fix...
Bo Yang (18):
parse-options: enhance STOP_AT_NON_OPTION
parse-options: add two helper functions
Add the basic data structure for line level history
Refactor parse_loc
Parse the -L options
Export three functions from diff.c
Add range clone functions
map/take range to the parent of commits
Print the line log
Hook line history into cmd_log, ensuring a topo-ordered walk
Add tests for line history browser
Make rewrite_parents public to other part of git
Make graph_next_line external to other part of git
Add parent rewriting to line history browser
Add --graph prefix before line history output
Add --full-line-diff option
Add test cases for '--graph' of line level log
Document line history browser
Documentation/blame-options.txt | 19 +-
Documentation/git-log.txt | 15 +
Documentation/line-range-format.txt | 18 +
Makefile | 2 +
builtin/blame.c | 89 +--
builtin/log.c | 111 +++-
diff.c | 6 +-
diff.h | 17 +
diffcore.h | 1 +
graph.c | 14 +-
graph.h | 10 +
line.c | 1563 +++++++++++++++++++++++++++++++++++
line.h | 141 ++++
parse-options.c | 22 +-
parse-options.h | 7 +-
revision.c | 25 +-
revision.h | 23 +-
t/t4301-log-line-single-history.sh | 619 ++++++++++++++
t/t4302-log-line-merge-history.sh | 163 ++++
19 files changed, 2736 insertions(+), 129 deletions(-)
create mode 100644 Documentation/line-range-format.txt
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