summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPat Notz <pknotz@sandia.gov>2009-02-10 16:43:30 (GMT)
committerJunio C Hamano <gitster@pobox.com>2009-02-11 18:38:53 (GMT)
commite5f5050ed1481c3bc27658f625a87155aed0984f (patch)
tree292472f64994812bd44150dc43c51cad3a746740
parent7b73d828f02e885f4e9619ff1a2b43e3d8dcf259 (diff)
downloadgit-e5f5050ed1481c3bc27658f625a87155aed0984f.zip
git-e5f5050ed1481c3bc27658f625a87155aed0984f.tar.gz
git-e5f5050ed1481c3bc27658f625a87155aed0984f.tar.bz2
Fix contrib/hooks/post-receive-email for new duplicate branch
In the show_new_revisions function, the original code: git rev-parse --not --branches | grep -v $(git rev-parse $refname) | isn't quite right since one can create a new branch and push it without any new commits. In that case, two refs will have the same sha1 but both would get filtered by the 'grep'. In the end, we'll show ALL the history which is not what we want. Instead, we should list the branches by name and remove the branch being updated and THEN pass that list through rev-parse. Revised as suggested by Jakub Narebski and Junio C Hamano to use git-for-each-ref instead of git-branch. (Thanks!) Signed-off-by: Pat Notz <pknotz@sandia.gov> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r--contrib/hooks/post-receive-email4
1 files changed, 3 insertions, 1 deletions
diff --git a/contrib/hooks/post-receive-email b/contrib/hooks/post-receive-email
index 28a3c0e..60cbab6 100644
--- a/contrib/hooks/post-receive-email
+++ b/contrib/hooks/post-receive-email
@@ -615,7 +615,9 @@ show_new_revisions()
revspec=$oldrev..$newrev
fi
- git rev-parse --not --branches | grep -v $(git rev-parse $refname) |
+ other_branches=$(git for-each-ref --format='%(refname)' refs/heads/ |
+ grep -F -v $refname)
+ git rev-parse --not $other_branches |
if [ -z "$custom_showrev" ]
then
git rev-list --pretty --stdin $revspec