When I said intermediate merges, I meant additional detail like "fix typos and remove dead code" in this PR to asyncio:
https://github.com/python/asyncio/pull/290/commits . And I don't like to see merge turds like these in my history (we've experimented with this a bunch in the asyncio repo):
* b516e80 Merge pull request #231 from haypo/issue_222
|\
| * b08ee40 Fix @coroutine for functions without __name__
* | cd10ff2 Merge pull request #237 from ajdavis/update-queue-join-tests
|\ \
| * | 70d8856 Fix queue join tests for CPython's test runner.
|/ /
* | bcb7ec4 Merge pull request #236 from ajdavis/queue-join-fix
|\ \
| * | e496c7c Fix LifoQueue's and PriorityQueue's put() and task_done().
| * | a943b49 Test LifoQueue's and PriorityQueue's put() and task_done().
|/ /
* | 7718675 #230: Change official URL from tulip to asyncio in README.rst
|/
* 173ff86 Update README.rst
* 4f9099e Merge pull request #225 from Eyepea/add_pycharm_in_gitignore
|\
| * 30f4788 add in .gitignore pyvenv and Pycharm files
|/
* 3582e11 Merge pull request #224 from Eyepea/readme_improvement
|\
| * bf4b2ce Rename README file to have rst render on Github
* | 1888b1d Switch hgignore and hgeol to git equivalents
|/
But of course I would love a web-based merge flow that doesn't create such turds! (It must be possible, since I can do it manually. :-)
Also, AFAIK git keeps separate track of who authored a change and who committed it, so credit to contributors should still be maintainable.