Given the simple case of two commits:
A--B
with branches setup like: master: A b1: B
If I create a new branch b2 at the same point as b1 from a remote server:
$ git push origin B:b2
The following code will be run in post-receive-email:
git rev-parse --not --branches | grep -v $(git rev-parse $refname) | git rev-list --pretty --stdin $newrev
(refname = refs/heads/b2, newrev=B)
The problem occurs because the first rev-parse reports:
^A ^B ^B
And the grep removes lines matching B, leaving:
^A
which causes the eventual rev-list command to be:
git rev-list --pretty ^A B
This problem could be exaggerated if there were a lot of commits between A and B, which would cause each commit A..B to be reported.
Is there any alternate way to write this command to cause these false positives to not be reported? I tried to write a version that uses the ref name instead of the hash, but it did not end up very pretty (and I don't think it worked...).
Thanks!
-Jake