I have a couple questions around grepping among open pull requests.
First, "git for-each-ref --no-merged": When I run the following,
it lists refs/pull/1112/head, even though #1112 was merged in commit
ced4da1. I guess this is because the tip of refs/pull/1112/head is
107fc59, not ced4da1?
This maybe shows my lack of familiarity with Git details,
but superficially the two commits appear identical -- [1] and [2] --
same parent, etc. Nonetheless they have different SHA-1s.
I'm not sure why that is -- I didn't merge the commit --
but regardless, GitHub somehow still connects ced4da1 with #1112.
So my question is, how are they doing that,
and why can't "git for-each-ref --no-merged" likewise
connect ced4da1 with refs/pull/1112/head?
$ git clone \
> --bare \
> --config remote.origin.fetch=+refs/pull/*/head:refs/pull/*/head \
> https://github.com/apache/trafficserver.git
$ cd trafficserver.git
$ git for-each-ref --no-merged
More generally, what I want is to periodically list open pull requests
that add or modify lines containing the string "memset". So far I have
the following in a Makefile. Can you recommend any improvements?
.PHONY: all
all: trafficserver.git
cd trafficserver.git && git fetch
cd trafficserver.git && git for-each-ref --format '%(refname)'
refs/pull --no-merged | \
while read refname; do \
git log -p "master..$$refname" | grep -q '^+.*memset' && echo
"$$refname"; \
done
trafficserver.git:
git clone \
--bare \
--config remote.origin.fetch=+refs/pull/*/head:refs/pull/*/head \
https://github.com/apache/trafficserver.git
Lastly, a question more about GitHub than Git, but: Given the way GitHub
is setup, I hope I can get a list of unmerged pull requests from Git
alone. Can you think of a way to list *open* pull requests,
or is that status only available out of band?
Thanks!
[1]
https://github.com/apache/trafficserver/commit/107fc59104cce2a4b527f04e7ac86695c98b568c
[2]
https://github.com/apache/trafficserver/commit/ced4da13279f834c381925f2ecd1649bfb459e8b