Go开发团队的技术负责人RussCox(rsc)发表了一篇介绍Go版本控制历史的文章。原因是每隔一段时间,总会有人使用以下代码来表明Go的第一次提交是在1972年:%gitlog--reverse--statcommit7d7c6a97f815e9279d08cfaea7d5efb5e90695a8Author:BrianKernighanAuthorDate:TueJul1819:05:451972-0500Commit:BrianKernighanCommitDate:TueJul1819:05:451972-0500hello,worldR=kenDELTA=7(7added,0deleted,0changed)src/pkg/debug/macho/测试数据/hello.b|7+++++++1filechanged,7insertions(+)...rsc认为这个说法很愚蠢,所以他揭示了更多关于Go版本控制的有趣历史,比如GoreallyThefirstcommit实际上是第五次commit,之前的都是假的commit。commit18c5b488a3b2e218c0e0cf2a7d4820d9da93a554Author:RobertGriesemerAuthorDate:SunMar220:47:342008-0800Commit:RobertGriesemerCommitDate:208:SunMar4702Go32起点。SVN=111041文档/go_spec|1197+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++1个文件更改,1197次插入(+)据介绍,Go使用的版本控制系统有4种:SVN、Perforce、Mercurial和Git。SVNGo在刚推出时就使用了SVN作为版本控制系统,据称是因为谷歌想评估在内部大规模推广SVN的可行性。虽然最后的结果没有选择SVN,但是上面提到的Go的第一次realcommit是提交到SVN服务器上的。可以说SVN见证了Go的诞生。Perforce2008年7月,Go在SVN中提交了最后一次提交,然后切换到Perforce。这是Go迁移到Perforce的第一次提交:commitc1f5eda7a2465dae196d1fa10baf6bfa9253808aAuthor:RobPikeAuthorDate:MonJul2118:06:392008-0700Commit:RobPikeCommitDate:Mon2008年7月18:06:39-0700更改日期OCL=13331CL=13331doc/go_lang.txt|2+-1filechanged,1insertion(+),1deletion(-)迁移到Perforce后,可以看到DELTA=,OCL=andCL=这几个标签。许多其他更改具有相同的OCL=和CL=,如下所示:commit942d6590d9005f89e971ed5af0374439a264a20eAuthor:KaiBackmanAuthorDate:FriOct2311:03:162009-0700Commit:KaiBackman提交日期:2009年10月23日星期五11:03:16-0700另一个argsize修复。我们以正确的对齐方式进行复制,但还不够(呃)。R=rscAPPROVED=rscDELTA=16(13added,0deleted,3changed)OCL=36020CL??=36024src/cmd/5g/ggen.c|2+-测试/arm-pass.txt|17+++++++++++++++--更改了2个文件,插入了16个(+),删除了3个(-)12:43:012009-0700提交:KaiBackmanang<.kaiborg>提交日期:10月23日星期五12:43:012009-0700修复由于过渡到hgR=rschttp://go/go-review/1013012src/make-arm.bash|4++--1个文件改变,2个插入(+),2个删除(-)这个开关也属于11月开源的Go作为准备工作的一部分,开发团队还需要为每个文件添加新的开源版权声明,rsc说他花了大约一周的时间。从2009年11月到2014年底一直在使用Git,随着GoogleCodeProjectHosting即将倒闭,Go也不得不寻找新的代码托管解决方案。在研究了几种选择之后,他们最终决定使用GerritCodeReview。许多人认为Go托管在GitHub上,但GitHub只是问题跟踪器的主要来源:源代码的官方主要副本位于go.googlesource.com。下面的commit见证了Go从Mercurial到Git的转换:commit94151eb2799809ece7e44ce3212aa3cbb9520849Author:RussCoxAuthorDate:FriDec521:33:072014-0500Commit:RussColanggate.org@rsColanggate.orgFriDec521:33:072014-0500encoding/xml:removeSyntaxError.Byte它是未使用的。它是在添加InputOffset的CL中引入的。我怀疑这是一个编辑错误。LGTM=bradfitzR=bradfitzCC=golang-codereviewshttps://golang.org/cl/182580043src/encoding/xml/xml.go|1-1个文件已更改,1个删除(-)提交258f53dee33b9055ea168cb186f8c076edee5905作者:DavidSymonds作者日期:2014年12月8日星期一13:50:49+1100MonCommit:DavidSymondsDecCommitDate:813:50:492014+1100删除.hgtags。.hgtags|140------------------------------------------------------------1个文件已更改,140个删除(-)提交369873c6e5d00314ae30276363f58e5af11b149cAuthor:DavidSymondsAuthorDate:MonDec813:50:492014+1100Commit:DavidSymondsCommitDate:MonDec813:50:492014+1100convert.hgignore.gitignore。.hgignore=>.gitignore|9+--------1个文件已更改,1个插入(+),8个删除(-)提交f33fc0eb95be84f0a688a62e25361a117e5b995b作者:DavidSymonds作者日期:2014年12月8日星期一13:53:11+1100Commit:DavidSymonds提交日期:2014年12月8日星期一13:53:11+1100cmd/dist:将dist从Hg转换为Git。源/cmd/dist/build.c|100++++++++++++++++++++++++++++++++----------------------1个文件已更改,59个插入(+),41个删除(-)提交26399948e3402d3512cb14fe5901afaef54482fa作者:DavidSymonds作者日期:2014年12月8日星期一11:39:11+1100提交:DavidSymonds提交日期:2014年12月8日星期一04:42:22+0000添加bin/到.gitignore。更改ID:I5c788d324e56ca88366fb54b67240cebf5dced2c审核时间:https://go-review.googlesource.com/1171审核人:AndrewGerrand.gitignore|1+1文件改,1插入(+)点此查看更多介绍本文转自OSCHINA本文标题:Go的版本控制历史:起步于SVN,打卡于Git本文地址:https://img.ydisp.cn/news/20220902/uknpsfbkqtl