Hi ! Here are some thoughts as an answer to Ziliang's mail:
De : Ros-dev [mailto:ros-dev-bounces@reactos.org] De la part de Zachary Gorden Envoyé : jeudi 16 février 2017 23:03 À : ReactOS Development List Objet : Re: [ros-dev] Microsoft switched to Git
The fact that git has problems maintain a large history is ONE of the limitations that prompted them to develop GVFS. There are several comments on the first page in the discussion of the ars technica article on GVFS that talk about git's issues with long histories: https://arstechnica.com/information-technology/2017/02/microsoft-hosts-the-w... I can't link directly to the comments, but if you search by user name you jump right to them. Two especially relevant ones are by smengler and zaqzlea. The one by zaqzlea is also rather interesting if Linux itself has truncated its own commit history, which is more than a bit disturbing from my perspective.
I guess that this 'truncated history' story happened when Linus switched to his newly-created Git the 16. April, 2005 : https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=1... because, if one believes what's written inside https://git.wiki.kernel.org/index.php/GraftPoint , "When Linus started using git for maintaining his kernel tree there didn't exist any tools to convert the old kernel history." Later on, when new features have been added to Git, people were able to create Git repositories of Linux' code before the 16/04/2005 Git transition, and then, to be able to see the whole Linux history, you need to use the so-called graft points. Examples are given here: http://stackoverflow.com/questions/3264283/linux-kernel-historical-git-repos... https://archive.org/details/git-history-of-linux
We also see a few remarks by a guy calling himself scuttle22 who claims that truncating history and dropping it is "common practice" and acceptable. His original posts have all been downvoted to oblivion, presumably because others take a less lackadaisical perspective on preserving history for purposes of documentation and accountability.
This is possibly "common practice", maybe in order to reduce the git repos... In there: http://stackoverflow.com/questions/4515580/how-do-i-remove-the-old-history-f... , someone ask for example how to trim the history before a certain date, while the complete copy of history is kept in an archive repository....
I also take the occasion to mention the peculiar possibility, with Git, to have a repository having multiple roots ("initial commits"): for example, someone did the error once in the linux kernel repo: http://lkml.iu.edu/hypermail/linux/kernel/1603.2/01926.html .
Best, Hermès