I also get that "silo" feeling from git's pull requests, but for a different reason. That great big "merge & close request" button seems nice and handy, but if you press it, you're doing it wrong. You should probably be merging it locally, running your automated tests and some manual sanity checks, and then pushing it to github. What github should do is have a button that pops up a dialog containing some commands you can cut and paste to the command line to do just that. My flow looks something like this:
- click around to find the author's repository URL
- git remote add it
- git fetch that remote
- copy the author's issue branch name from the pull request page
- git merge that
- run the automated tests, and check functionality
- then either git push or delete my own master branch and then check it out as a tracking branch from origin/master
That last step is probably suboptimal, but it doesn't happen often and I know how to do it that way. It illustrates my point, though: why doesn't github tell me how to do it?
I've complained about this before too, but if you click the "i" with a circle around it in the bar that says "this pull request can be automatically merged" you get a nice box with all the git commands to do a local fetch and merge. I think this functionality should be less hidden away but it is there and quite useful.
For IPython, we now merge most pull requests by clicking the green button. It's convenient, and it automatically links the merge to the PR, so you can find the discussion associated with the changes. For testing, we have a script (test_pr.py) that merges and tests the changes, posting the result to a comment on the PR.