一区二区久久-一区二区三区www-一区二区三区久久-一区二区三区久久精品-麻豆国产一区二区在线观看-麻豆国产视频

版本控制工具歷史的10個(gè)里程碑

  英文原文:Astonishments, ten, in the history of version control

  引言:

“如果你想要了解真正的歷史,你需要回到在打孔卡上進(jìn)行人工比對(duì)的年代。” —— Jim Rootham

  在這個(gè)為鱈魚編寫傳記都能夠流行的年代,寫一本記錄程序員如何存儲(chǔ)代碼——他們最重要的勞動(dòng)成果的書一點(diǎn)也不瘋狂。

  既然你和我都沒有時(shí)間來閱讀或編寫這樣的一本書,我們打算用這篇博客來進(jìn)行探討。

  這是一個(gè)重要的問題。

 ?。ìF(xiàn)在)版本控制產(chǎn)品非常普通而且很流行。

  然而,它經(jīng)歷了幾十年的不斷創(chuàng)新。在這個(gè)領(lǐng)域里最聰明的人的努力下,代碼管理變得非常簡(jiǎn)單而且有效。

  每一步都是那么讓人感到驚奇。

  1. 源代碼就是一個(gè)文本文件!(20世紀(jì) 60 年代)

  現(xiàn)在看來,存儲(chǔ)源代碼和編寫簡(jiǎn)單文檔應(yīng)該是一樣的。但如果你簡(jiǎn)單讀一下 ASCII 的歷史就會(huì)知道,即使達(dá)成這樣的共識(shí)也來之不易。

  2. 人們可以手動(dòng)跟蹤代碼版本?。?0世紀(jì) 60 年代)

  在沒有軟件的年代,所有事情都要從源代碼開始。

“我工作的第一家公司有一個(gè)源碼管理部門。當(dāng)你把代碼寫好以后,將軟盤交給源碼管理部門一位漂亮女士。他們會(huì)及時(shí)更新函數(shù)庫,用你的磁盤基于公司官方的代碼構(gòu)建產(chǎn)品交付給客戶。” ——  Miles Duke

  3. 你可以為單個(gè)文件保留多個(gè)版本?。?972,1978)

  采用奇特的交錯(cuò)編織文件格式,SCCS 在版本控制領(lǐng)域稱雄了 10 年之久。

  記錄單個(gè)文件的從一個(gè)版本到下一個(gè)之間的變化花費(fèi)了幾年的時(shí)間。“差異文件比較算法”是這個(gè)課題最近發(fā)表的一篇論文(1976)。

  1982年,RCS 反向使用 diff 文件(描述算法原文)打敗了 SCCS 成為繼任者,并讓評(píng)論家大跌眼鏡:

“一起出現(xiàn)的還有帶有反向比較功能的 RCS,我認(rèn)為它非常棒。” —— 無名氏

  4. 每個(gè)人都可以簽出自己的拷貝!(1982)

  在那個(gè)時(shí)候,人們工作時(shí)需要登錄一臺(tái)中央大型機(jī)并通過它一起工作。采用符號(hào)鏈接,RCS 可以讓每個(gè)人都工作在相同版本的代碼上,而且每個(gè)人都有自己的工作拷貝。

“有一個(gè)叫做 RCS 的文件,實(shí)際上它十一個(gè)鏈接到 RCS 倉庫的符號(hào)鏈接,你可以與其他小組成員一起使用。”  —— 耶魯大學(xué) RCS 使用介紹

  5. 喔!你可以一次給多個(gè)文件進(jìn)行版本控制!(1986)

  令人吃驚的是,直到 CVS 出現(xiàn)之前,版本控制系統(tǒng)都只支持單個(gè)文件。當(dāng)然,你可以使用通配符讓 RCS 提交多個(gè)文件或者標(biāo)記特定分支。但這些并不是版本控制系統(tǒng)的一部分。

  CVS 默認(rèn)會(huì)遞歸修改所有文件。突然之間,軟件從單個(gè)目錄或文件變成了文本文件的遞歸樹。

  雖然由于不具備“原子性”導(dǎo)致實(shí)現(xiàn)的產(chǎn)品不盡如人意(后來 Subversion 在 2000 年解決了這個(gè)問題),但是瑕不掩瑜。

  6. 兩個(gè)人可以同時(shí)編輯同一個(gè)文件,并將他們的工作合并在一起?。?986)

  20 世紀(jì) 90 年代末,我在 Creature Labs 工作。我們從 Visual SourceSafe(商業(yè)軟件,微軟公司發(fā)布)轉(zhuǎn)到 CVS(開源軟件,由一些嘻皮士發(fā)布)。

  坦率的講,大家都懷疑 CVS 能否做到它宣稱的那樣:讓多個(gè)人同時(shí)編輯同一個(gè)文件,并將他們的修改沒有錯(cuò)誤地合并到一起而不造成其他問題。

  在我們開發(fā) Creatures 3 的時(shí)候,SourceSafe 的互斥鎖成為了一個(gè)大問題。我們當(dāng)時(shí)要添加垃圾搜集功能,這個(gè)功能會(huì)影響到幾乎所有的代碼。這個(gè)時(shí)候,我們的首席程序員不得不在周末簽出每一個(gè)文件然后進(jìn)行修改。

  1986年的這篇論文記錄下了這個(gè)奇跡。當(dāng) Dick Grune 和他的團(tuán)隊(duì)在荷蘭開發(fā)一個(gè)編譯器的時(shí)候,他們遇到了同樣的問題,CVS 從此應(yīng)運(yùn)而生。

  7. 可以在遠(yuǎn)程服務(wù)器上共享代碼倉庫?。?994)

  大多數(shù)時(shí)候,人們只在一臺(tái)機(jī)器上使用版本控制。在 1986 年,人們可以通過 RCS 的一些版本以及 CVS 提供的遠(yuǎn)程文件共享機(jī)制以擁有遠(yuǎn)程代碼倉庫。

“假如 RCS 的某個(gè)版本可以通過遠(yuǎn)程服務(wù)器訪問,那么開發(fā)人員就可以在代碼倉庫之外的機(jī)器上進(jìn)行開發(fā)了。”  —— Dick Grune

  然而,直到 1994 年 TCP/IP 協(xié)議的引入,這個(gè)想法才得以起步。

“直到 Cygnus 軟件的 Jim Blandy 和 Karl Fogel(這兩位后來成為 Subversion 項(xiàng)目的主要開發(fā)者)為 CVS 發(fā)布了一些補(bǔ)丁,使得 CVS 客戶端軟件可以通過遠(yuǎn)程 TCP/IP 連接進(jìn)行訪問,CVS 才真正變得無處不在。 ”—— Eric Raymond

  8. 免費(fèi)的開源版本控制主機(jī)服務(wù)!(1999)

  這并不是源碼管理技術(shù)的進(jìn)步,但這的確是一個(gè)標(biāo)志,InterNET 社區(qū)的發(fā)展與技術(shù)的進(jìn)步同等重要:

“OSS 以及成為歷史,這已經(jīng)成為一種趨勢(shì)。John T. Hall 預(yù)見到,如果項(xiàng)目都是在線開發(fā),那么之前開發(fā)的版本就在那里。開發(fā)平臺(tái)服務(wù)是一種創(chuàng)新,但是沒有人去做,我們就想‘為什么不呢?’”—— Brian Biles

  就像末日狂歡那樣(因?yàn)楣善钡脑颍?,VA Linux 把 SourceForge 帶到了這個(gè)世界上。這對(duì)新項(xiàng)目是天大的好消息(例如我的 TortoiseCVS)。

  在當(dāng)時(shí),在 InterNET 上獲得一臺(tái)服務(wù)器很困難而且非常昂貴,進(jìn)行源碼管理和 bug 追蹤也是如此。這項(xiàng)新服務(wù)盡管缺乏商業(yè)模式,卻讓無數(shù)項(xiàng)目更早地面世。

  譯注:OSS,一個(gè)綜合的業(yè)務(wù)運(yùn)營(yíng)和管理平臺(tái),同時(shí)也是真正融合了傳統(tǒng) IP 數(shù)據(jù)業(yè)務(wù)與移動(dòng)增值業(yè)務(wù)的綜合管理平臺(tái)。

  9. 沒有主代碼庫,你可以向所有人發(fā)布?。?005)

  在 21 世紀(jì)頭 10 年,有一股將版本控制實(shí)現(xiàn)完全分布式的潮流。

  也就是說,在你本地的機(jī)器上存放的是一份完整的代碼歷史,可以輕易地與任何其他拷貝進(jìn)行分支和合并。順帶說一下,也正是這個(gè)特性使得分支和合并變得更加容易。

  我并沒有記錄某個(gè)人第一次發(fā)明這種工具,而是按照它產(chǎn)品化以及流行的時(shí)間進(jìn)行統(tǒng)計(jì)。鑒于此,將它定在 2005 年似乎有些不公平。Mercurial 和 Git 發(fā)布于 2005 年 4 月。

  這篇“分布式版本控制風(fēng)險(xiǎn)”(2005年底)介紹了這個(gè)革命性的創(chuàng)新。

  10. 當(dāng)你簽出一個(gè) fork,你可以讓大家都看到?。?008)

  GitHub 的成功有很多原因(盡管我之前提到過一些,要講清楚這個(gè)問題還是需要單獨(dú)寫一篇文章討論)。

  關(guān)鍵在于,你可能甚至可以將一些自己做的不大的改動(dòng)提交到別人的公共代碼上。在 GitHub 之前,一般我們會(huì)保存在自己的電腦上。

  如今,只需要簡(jiǎn)單做一個(gè) fork,或者甚至可以直接在瀏覽器上編輯,這樣任何人都可以馬上發(fā)現(xiàn)你代碼中的 bug。

  尾聲  

  快速回顧一下這幾十年的進(jìn)展。是的,計(jì)算機(jī)的發(fā)展做出了貢獻(xiàn)。但更主要的是,這些都是人們?yōu)楦玫貐f(xié)作而貢獻(xiàn)出的聰明才智。

  這讓我想到,下一個(gè)會(huì)是什么?在版本控制領(lǐng)域還會(huì)有什么令人驚嘆的事情發(fā)生?

  推而廣之,同樣的事情會(huì)在其它領(lǐng)域發(fā)生嗎?

  作為核心信息基礎(chǔ)設(shè)施,這種巨大的改進(jìn)能夠最終改善政府、醫(yī)療、新聞或者數(shù)據(jù)領(lǐng)域創(chuàng)新的障礙嗎?

  我有這種感覺,我們就要找到答案了。

  想了解更多嗎?請(qǐng)閱讀《版本控制時(shí)間軸》(發(fā)表于 Plastic SCM 的博客,不要忘記看一下評(píng)論)以及《理解版本控制系統(tǒng)》(作者 Eric Raymond)

 ?。ň幾g:伯樂在線 – 唐尤華

it知識(shí)庫版本控制工具歷史的10個(gè)里程碑,轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 麻豆91视频 | 91精品欧美一区二区三区 | 国内久久久久久久久久 | 亚洲一区二区三区不卡视频 | 黄色网在线免费观看 | 一区二区网站 | 无码中文字幕日韩专区 | 欧美午夜性视频 | 末成年美女黄网站色大片连接 | 91久久国产精品视频 | 国产精品欧美激情第一页 | 国产91中文剧情在线观看 | 国产亚洲精品福利 | 精品国产第一国产综合精品gif | 国产精品视频在这里有精品 | 亚洲综合影院 | 中文字幕在线视频精品 | 亚洲日本va中文字幕婷婷 | 一区二区三区四区在线不卡高清 | 国产精品高清一区二区三区 | 亚洲精品美女久久久久网站 | 五月婷婷激情六月 | 亚州va| 免费人成在线观看视频色 | 一级毛毛片毛片毛片毛片在线看 | 国产成人精品一区二三区在线观看 | 五月天亚洲综合 | 91手机在线 | 美女精品永久福利在线 | 午夜视频91 | 中文字幕一区在线观看视频 | 亚洲欧洲成人 | 高清国产一区 | 国产无套在线播放 | 伊人精品在线 | 亚洲国产99999在线精品一区 | 午夜视频免费在线 | 高清国产欧美一v精品 | 无套日出白浆在线播放 | 成人午夜性视频欧美成人 | 色 在线播放 |