This is still rough, but I think it would be a good foundation to build interesting archaeology tools on. Usual "git blame" starts from the latest revision and finds where each line came from (i.e. who came up with that brilliant idea, or more often who introduced that bug). This new mode starts from an old revision, and annotates in reverse --- up to which point each line survived, before it got replaced with something else. A line that began its life in one file can be removed from the original file but migrate to another, and we will find its final resting place when you use the usual -C -C option. [1/4] "log" and friends: --children option [2/4] builtin-blame.c: move prepare_final() into a separate function. [3/4] builtin-blame.c: allow more than 16 parents [4/4] git-blame --reverse builtin-blame.c | 206 +++++++++++++++++++++++++++++++++++++++---------------- log-tree.c | 20 ++++++ revision.c | 28 ++++++++ revision.h | 1 + 4 files changed, 196 insertions(+), 59 deletions(-) -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html