post-receive-email - does not handle creating a new branch with same HEAD as other branch
From: Jake Goulding <hidden>
Date: 2016-06-15 22:46:00
From: Jake Goulding <hidden>
Date: 2016-06-15 22:46:00
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