My employer's integration team has a very complex model that they don't clearly describe. They also change their policies at different points in the release cycle.
I'm trying to figure out whether a given set of pull requests were ultimately merged to various release line branches.
What I think I want is (1) a list of all changes that affected the code I'd see if I did "git checkout master". (2) Another list of all changes that I'd see on rel/foo. (3) Ditto for rel/bar.
I would expect "git log" to be able to produce such a list, but I see nothing obviously relevant in its man page.
Even better would be some smart tool which I could feed a list of pull requests and find out which branches contained those changes.
AFAICT, the integration team here changes the bug number and comments when merging. (The comments remain human-recognizable, but 'diff' might be confused.) They also quite reasonably combine all the commits in a given pull request into a single merge to each target branch.
Any suggestions for how to figure out what they've done, or more importantly NOT done?
If I have to, I'll resort to diffing the source code from the release branches, and doing "git blame" for anything that's in one only place, to determine what release lines it ought to be in, but there really ought to be a more straightforward way to do this kind of audit. (And also, that method won't show unintended merges.)
Has anyone got a canned command for this? Or an explanation of git's branching model that would make sense to someone used to more traditional source control tools?