[PATCH/RFC] Add git-changelog-script to show the changes between two commits
From: Ryan Anderson <hidden>
Date: 2016-06-15 22:42:02
I'll start by saying that, well, I'm pretty sure this patch is wrong.
I was trying to look at the changes between two commits, sanely, but
failed to find a tool or example in the tree that hinted at how to do
this.
After poking around at git-whatchanged trying to figure out what it is
trying to do - I gave up and wrote something that *seems* to work
correctly for the simple test cases I pulled together. I just don't
trust it.
My thinking here is that, when doing a release of a package such as git
or Linux, the releaser could do something like:
git changelog $LAST_RELEASED_COMMIT HEAD | git-shortlog |\
mail -s "Linux 2.7.0 finally open" linux-kernel
Where LAST_RELEASED is recorded somewhere or pulled from an internal
changelog with something like:
grep "Released commit-id:" changelog | awk -F: '{print $2}'" |\
head -1
Signed-off-by: Ryan Anderson <redacted>
diff --git a/Makefile b/Makefile
--- a/Makefile
+++ b/Makefile@@ -36,7 +36,8 @@ SCRIPTS=git git-apply-patch-script git-m git-reset-script git-add-script git-checkout-script git-clone-script \ gitk git-cherry git-rebase-script git-relink-script git-repack-script \ git-format-patch-script git-sh-setup-script git-push-script \ - git-branch-script git-parse-remote + git-branch-script git-parse-remote \ + git-changelog-script git-revdiff-script PROG= git-update-cache git-diff-files git-init-db git-write-tree \ git-read-tree git-commit-tree git-cat-file git-fsck-cache \
diff --git a/git-changelog-script b/git-changelog-script
new file mode 100755
--- /dev/null
+++ b/git-changelog-script@@ -0,0 +1,3 @@ +#!/bin/sh + +git-revdiff-script $@ | git-diff-tree --stdin --pretty -r | LESS="$LESS -S" ${PAGER:-less}
diff --git a/git-revdiff-script b/git-revdiff-script
new file mode 100755
--- /dev/null
+++ b/git-revdiff-script@@ -0,0 +1,18 @@ +#!/usr/bin/perl + +use warnings; +use strict; + +my ($start,$end) = @ARGV; + +open(R,"-|","git-rev-list",$start) + or die "Failed to pipe from git-rev-list: " . $!; + +my $rev; +while ($rev = <R>) { + chomp $rev; + print $rev,"\n"; + last if $end eq $rev; +} + +close(R);
--
Ryan Anderson
sometimes Pug Majere