[PATCH/RFC] Add git-changelog-script to show the changes between two commits
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 [EMAIL PROTECTED] 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 - To unsubscribe from this list: send the line unsubscribe git in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH/RFC] Add git-changelog-script to show the changes between two commits
Nevermind, I apparently wanted: git-whatchanged HEAD ^$LAST_RELEASED_COMMIT I'll see about writing up a description of the extended commit reference scheme. Currently I can't find a description of it anywhere in the source tree. On Thu, Jul 21, 2005 at 02:31:43AM -0400, Ryan Anderson wrote: 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 [EMAIL PROTECTED] 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 - To unsubscribe from this list: send the line unsubscribe git in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html -- Ryan Anderson sometimes Pug Majere - To unsubscribe from this list: send the line unsubscribe git in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH/RFC] Add git-changelog-script to show the changes between two commits
On Thu, 21 Jul 2005, Ryan Anderson wrote: Nevermind, I apparently wanted: git-whatchanged HEAD ^$LAST_RELEASED_COMMIT Yes. And since git-whatchanged uses git-rev-parse, and can thus use the extended git commit format, including ranges, you can literally write the above as git-whatchanged $LAST_RELEASED_COMMIT.. (or, if you only care about the log, not the actual diff lines, use the faster and simpler git log $LAST_RELEASED_COMMIT.. which will also show you merges - something git-whatchanged doesn't do). You can also use the --pretty format specializers, so git log --pretty=short $LAST_RELEASED_COMMIT.. will do exactly what you'd expect it to do. Linus - To unsubscribe from this list: send the line unsubscribe git in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html