网易首页 > 网易号 > 正文 申请入驻

Go开发者:你看到的第一次commit是假的

0
分享至

文 | 局长

出品 | OSC开源社区(ID:oschina2013)

Go 开发团队技术 leader Russ Cox (rsc) 发文介绍了关于 Go 的版本控制历史。 起因是每隔一段时间,总有人用下面这段代码表示 Go 的首次 commit 是在 1972 年:

% git log --reverse --stat
commit 7d7c6a97f815e9279d08cfaea7d5efb5e90695a8
Author: Brian Kernighan
AuthorDate: Tue Jul 18 19:05:45 1972 -0500
Commit: Brian Kernighan
CommitDate: Tue Jul 18 19:05:45 1972 -0500

hello, world

R=ken
DELTA=7 (7 added, 0 deleted, 0 changed)

src/pkg/debug/macho/testdata/hello.b | 7 +++++++
1 file changed, 7 insertions(+)

...

rsc 认为这种说法十分愚蠢,于是他揭秘了关于 Go 版本控制的更多有趣历史,比如 Go 真正的首次 commit 其实是第 5 个 commit,在此之前的是假 commit。

commit 18c5b488a3b2e218c0e0cf2a7d4820d9da93a554
Author: Robert Griesemer
AuthorDate: Sun Mar 2 20:47:34 2008 -0800
Commit: Robert Griesemer
CommitDate: Sun Mar 2 20:47:34 2008 -0800

Go spec starting point.

SVN=111041

doc/go_spec | 1197 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 1197 insertions(+)

据介绍,Go 使用过的版本控制系统总共有 4 个: SVN、Perforce、Mercurial 和 Git 。

SVN

Go 刚启动的时候使用 SVN 作为版本控制系统,据称这是因为谷歌希望通过此举评估在内部大规模推广 SVN 的可行性。最后的结果虽然没有选择 SVN,但上文提到的 Go 首次真正 commit 正是提交到了 SVN 服务器,可以说 SVN 见证了 Go 的诞生。

Perforce

2008 年 7 月,Go 在 SVN 提交了最后一次 commit,此后便转用 Perforce。

下面是 Go 迁移到 Perforce 的首次 commit:

commit 777ee7163bba96f2c9b3dfe135d8ad4ab837c062
Author: Rob Pike
AuthorDate: Mon Jul 21 16:18:04 2008 -0700
Commit: Rob Pike
CommitDate: Mon Jul 21 16:18:04 2008 -0700

map delete

SVN=128258

doc/go_lang.txt | 6 ++++++
1 file changed, 6 insertions(+)

commit 05caa7f82030327ccc9ae63a2b0121a029286501
Author: Rob Pike
AuthorDate: Mon Jul 21 17:10:49 2008 -0700
Commit: Rob Pike
CommitDate: Mon Jul 21 17:10:49 2008 -0700

help management of empty pkg and lib directories in perforce

R=gri
DELTA=4 (4 added, 0 deleted, 0 changed)
OCL=13328
CL=13328

lib/place-holder | 2 ++
pkg/place-holder | 2 ++
src/cmd/gc/mksys.bash | 0
3 files changed, 4 insertions(+)

迁移至 Perforce 后,可以看到引入了DELTA=,OCL=和 CL= 这些标签。并且许多其他变更具有相同的 OCL= 和 CL= ,如下:

commit c1f5eda7a2465dae196d1fa10baf6bfa9253808a
Author: Rob Pike
AuthorDate: Mon Jul 21 18:06:39 2008 -0700
Commit: Rob Pike
CommitDate: Mon Jul 21 18:06:39 2008 -0700

change date

OCL=13331
CL=13331

doc/go_lang.txt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

Go 在开源前的大部分开发工作都是在 Perforce 服务器上进行。

Mercurial

2009 年 10 月 ,Go 的版本控制系统开始切换至 Mercurial:

commit 942d6590d9005f89e971ed5af0374439a264a20e
Author: Kai Backman
AuthorDate: Fri Oct 23 11:03:16 2009 -0700
Commit: Kai Backman
CommitDate: Fri Oct 23 11:03:16 2009 -0700

one more argsize fix. we were copying with the correct
alignment but not enough (duh).

R=rsc
APPROVED=rsc
DELTA=16 (13 added, 0 deleted, 3 changed)
OCL=36020
CL=36024

src/cmd/5g/ggen.c | 2 +-
test/arm-pass.txt | 17 +++++++++++++++--
2 files changed, 16 insertions(+), 3 deletions(-)

commit b74fd8ecb17c1959bbf2dbba6ccb8bae6bfabeb8
Author: Kai Backman
AuthorDate: Fri Oct 23 12:43:01 2009 -0700
Commit: Kai Backman
CommitDate: Fri Oct 23 12:43:01 2009 -0700

fix build issue cause by transition to hg

R=rsc
http://go/go-review/1013012

src/make-arm.bash | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

这次的切换也是属于 11 月开源 Go 的准备工作的一部分,开发团队还需要 将新的开源版权声明添加到每个文件中。rsc 表示这些工作花费了他大约一周的时间。


Git

从 2009 年 11 月到 2014 年底,由于 Google Code Project Hosting 即将关闭,Go 也不得不寻找新的代码托管方案。在研究了几个选项后,他们最终选择使用 Gerrit Code Review 。许多人认为 Go 托管在 GitHub 上,但 GitHub 只是问题跟踪器的主要来源:源代码的官方主要副本位于 go.googlesource.com 。

下面的 commit 见证了 Go 从 Mercurial 到 Git 的转换:

commit 94151eb2799809ece7e44ce3212aa3cbb9520849
Author: Russ Cox
AuthorDate: Fri Dec 5 21:33:07 2014 -0500
Commit: Russ Cox
CommitDate: Fri Dec 5 21:33:07 2014 -0500

encoding/xml: remove SyntaxError.Byte

It is unused. It was introduced in the CL that added InputOffset.
I suspect it was an editing mistake.

LGTM=bradfitz
R=bradfitz
CC=golang-codereviews
https://golang.org/cl/182580043

src/encoding/xml/xml.go | 1 -
1 file changed, 1 deletion(-)

commit 258f53dee33b9055ea168cb186f8c076edee5905
Author: David Symonds
AuthorDate: Mon Dec 8 13:50:49 2014 +1100
Commit: David Symonds
CommitDate: Mon Dec 8 13:50:49 2014 +1100

remove .hgtags.

.hgtags | 140 ----------------------------------------------------------------
1 file changed, 140 deletions(-)

commit 369873c6e5d00314ae30276363f58e5af11b149c
Author: David Symonds
AuthorDate: Mon Dec 8 13:50:49 2014 +1100
Commit: David Symonds
CommitDate: Mon Dec 8 13:50:49 2014 +1100

convert .hgignore to .gitignore.

.hgignore => .gitignore | 9 +--------
1 file changed, 1 insertion(+), 8 deletions(-)

commit f33fc0eb95be84f0a688a62e25361a117e5b995b
Author: David Symonds
AuthorDate: Mon Dec 8 13:53:11 2014 +1100
Commit: David Symonds
CommitDate: Mon Dec 8 13:53:11 2014 +1100

cmd/dist: convert dist from Hg to Git.

src/cmd/dist/build.c | 100 ++++++++++++++++++++++++++++++---------------------
1 file changed, 59 insertions(+), 41 deletions(-)

commit 26399948e3402d3512cb14fe5901afaef54482fa
Author: David Symonds
AuthorDate: Mon Dec 8 11:39:11 2014 +1100
Commit: David Symonds
CommitDate: Mon Dec 8 04:42:22 2014 +0000

add bin/ to .gitignore.

Change-Id: I5c788d324e56ca88366fb54b67240cebf5dced2c
Reviewed-on: https://go-review.googlesource.com/1171
Reviewed-by: Andrew Gerrand

.gitignore | 1 +
1 file changed, 1 insertion(+)

点此查看更多介绍:https://research.swtch.com/govcs 。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
U23国足本场战乌兹与熊猫杯时首发变化:仅杨希、贺一然无变动

U23国足本场战乌兹与熊猫杯时首发变化:仅杨希、贺一然无变动

懂球帝
2026-01-17 18:42:09
牛女士道歉后续:爷爷转账100删除孩子联系方式,有人跑单位去闹

牛女士道歉后续:爷爷转账100删除孩子联系方式,有人跑单位去闹

阿纂看事
2026-01-17 09:52:50
199:166!高市时代恐结束,公明党开始扛旗,中方跟日本划清界限

199:166!高市时代恐结束,公明党开始扛旗,中方跟日本划清界限

军机Talk
2026-01-17 14:39:48
自闭症孩子免密下单290个锅贴,家长:部分自食,其余分享给同学

自闭症孩子免密下单290个锅贴,家长:部分自食,其余分享给同学

观威海
2026-01-16 10:30:07
廖汉生:妻舅是元帅,大舅哥是国家主席,晚年他拒绝当国家副主席

廖汉生:妻舅是元帅,大舅哥是国家主席,晚年他拒绝当国家副主席

墨说古今
2026-01-16 23:24:12
世界第1遭逆转!决胜局连丢8分葬送好局,凤凰组合1-2泰国王牌

世界第1遭逆转!决胜局连丢8分葬送好局,凤凰组合1-2泰国王牌

钉钉陌上花开
2026-01-17 19:18:19
又来!印度羽毛球赛因场地落鸟粪中断,本土选手淡定自若、对手直接干呕

又来!印度羽毛球赛因场地落鸟粪中断,本土选手淡定自若、对手直接干呕

懂球帝
2026-01-17 12:51:11
1962年,我国为何将长白山一半划给了朝鲜?其实谈判背后意义重大

1962年,我国为何将长白山一半划给了朝鲜?其实谈判背后意义重大

文史道
2026-01-13 12:47:43
破案了!洛夫顿说不打,后来又打,卢伟进行了解答

破案了!洛夫顿说不打,后来又打,卢伟进行了解答

体育哲人
2026-01-17 17:13:23
3次推开养母徐帆的手,徐朵对徐帆神情冷漠,对冯小刚却很亲昵

3次推开养母徐帆的手,徐朵对徐帆神情冷漠,对冯小刚却很亲昵

安宁007
2026-01-17 14:56:05
男单爆大冷!随着林诗栋被淘汰,张本智和也输了,八强全部落位!

男单爆大冷!随着林诗栋被淘汰,张本智和也输了,八强全部落位!

余蹮搞笑段子
2026-01-17 19:04:47
王静逼聂卫平跟孔祥明离婚,7年后聂卫平嫌儿子太笨,埋怨王静

王静逼聂卫平跟孔祥明离婚,7年后聂卫平嫌儿子太笨,埋怨王静

百态人间
2026-01-16 16:02:25
亚洲第一个倒下的国家即将出现,曾比肩中国,如今在走日本的老路

亚洲第一个倒下的国家即将出现,曾比肩中国,如今在走日本的老路

卷史
2026-01-17 07:31:10
高兴太早,辽宁队终于赢球却收坏消息,杨鸣真该管管了

高兴太早,辽宁队终于赢球却收坏消息,杨鸣真该管管了

宗介说体育
2026-01-17 16:31:21
马年春晚首次联排场外细节!张小婉侧身躲镜头,丁禹兮匆匆插兜走

马年春晚首次联排场外细节!张小婉侧身躲镜头,丁禹兮匆匆插兜走

萌神木木
2026-01-17 18:21:29
故事,1890年,一名印第安女奴正如同牲畜般被进行称重出售

故事,1890年,一名印第安女奴正如同牲畜般被进行称重出售

忠于法纪
2026-01-16 21:14:29
罗永浩公关:有大V一个月前出谋划策,现在贾国龙目标就是“干老罗”

罗永浩公关:有大V一个月前出谋划策,现在贾国龙目标就是“干老罗”

凤凰网财经
2026-01-16 22:14:22
回顾许家印被抓捕现场,奋力反抗,怒吼不已,被抓捕人员抬出去

回顾许家印被抓捕现场,奋力反抗,怒吼不已,被抓捕人员抬出去

干史人
2026-01-08 22:47:00
高市早苗刚送走李在明,中方通告全世界,不会再对日本手软

高市早苗刚送走李在明,中方通告全世界,不会再对日本手软

无情有思可
2026-01-17 20:09:46
8年套走1257万,民政局副局长岂能“发老年人财”|快评

8年套走1257万,民政局副局长岂能“发老年人财”|快评

新京报
2026-01-17 16:50:04
2026-01-17 20:47:00
开源中国 incentive-icons
开源中国
每天为开发者推送最新技术资讯
7551文章数 34496关注度
往期回顾 全部

科技要闻

8亿周活扛不住烧钱 ChatGPT终向广告"低头"

头条要闻

媒体:网友捐款超1400万 并不能直接解决嫣然医院问题

头条要闻

媒体:网友捐款超1400万 并不能直接解决嫣然医院问题

体育要闻

三巨头走了俩,联盟笑柄却起飞了

娱乐要闻

马年春晚首次联排场外细节!

财经要闻

保不准,人民币会闪击6.8!

汽车要闻

林肯贾鸣镝:稳中求进,将精细化运营进行到底

态度原创

游戏
本地
教育
房产
手机

LCK春季赛:大闹天宫一锤定音,BFX鏖战团战击溃BRO

本地新闻

云游内蒙|黄沙与碧波撞色,乌海天生会“混搭”

教育要闻

科一、北川中学、蜀东外国语......绵阳多所学校正在招聘

房产要闻

真四代来了!这次,海口楼市将彻底颠覆!

手机要闻

暂定3月!华为Pura X2与Mate 80 GTS齐发,参数全线拉满

无障碍浏览 进入关怀版