• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            逛奔的蝸牛

            我不聰明,但我會(huì)很努力

               ::  :: 新隨筆 ::  ::  :: 管理 ::

            版本控制已經(jīng)出現(xiàn)有些年頭了。然而,我還是會(huì)被人問(wèn)起一些,諸如版本控制是什么或者它是如何工作的,這樣基礎(chǔ)的問(wèn)題。本文會(huì)概括地解釋版本控制解決的重要問(wèn)題,本文使用的場(chǎng)景針對(duì)的是源代碼版本控制。


            目前有很多不同類(lèi)型的版本控制系統(tǒng)(Version Control System, VCS)。一些VCS,比如SubversionCVS,以中央倉(cāng)庫(kù)(repository)為中心進(jìn)行架構(gòu)。此外,還有分布式的VCS(Distributed VCS,DVCS), Git 和 Mercurial 是兩個(gè)新近出現(xiàn)的DVCS。然而,在上述兩種類(lèi)型的環(huán)境中,通常會(huì)有一個(gè)“指定的”中央倉(cāng)庫(kù)。對(duì)應(yīng)地,比如一個(gè)Subversion服務(wù)器或者一個(gè)GitHub倉(cāng)庫(kù)。下面會(huì)基于這個(gè)場(chǎng)景進(jìn)行圖示說(shuō)明。那么讓我們開(kāi)始吧。

            在開(kāi)發(fā)者拷貝到本機(jī)之前,服務(wù)器需要?jiǎng)?chuàng)建一個(gè)倉(cāng)庫(kù)。創(chuàng)建初始倉(cāng)庫(kù)會(huì)由于產(chǎn)品不同而有所差別。從現(xiàn)在起,你所要知道的就是,在服務(wù)器上有一個(gè)初始空間。我把這個(gè)版本稱(chēng)作版本“A”。

            現(xiàn)在,每個(gè)開(kāi)發(fā)者(開(kāi)發(fā)者1和開(kāi)發(fā)者2)都會(huì)拷貝版本“A”到他們本地電腦。再一次地,從服務(wù)器拷貝的過(guò)程會(huì)由于產(chǎn)品不同采用的技術(shù)會(huì)有所差別。

            每個(gè)開(kāi)發(fā)者會(huì)在他們的本地拷貝上進(jìn)行開(kāi)發(fā)。他們的本地拷貝基于版本“A”。然而,由于他們應(yīng)該不會(huì)做同樣的開(kāi)發(fā),因而他們的版本會(huì)有所差別。因此,會(huì)有2個(gè)以上的版本會(huì)同時(shí)被創(chuàng)建,比如版本“B”和版本“C”。


            開(kāi)發(fā)者1首先完成了她的工作并提交到服務(wù)器。服務(wù)器上的當(dāng)前版本被更新成版本“B”。


            開(kāi)發(fā)者2現(xiàn)在完成了他的工作并試圖提交到服務(wù)器。然而,這是服務(wù)器告知他基于開(kāi)發(fā)的版本已經(jīng)發(fā)生改變。這也是為什么采取版本控制的首要原因之一。這個(gè)特性是對(duì)網(wǎng)絡(luò)共享代碼然后由開(kāi)發(fā)者手動(dòng)更新的一個(gè)跨越式發(fā)展,這確保了之前的編輯沒(méi)有被新的修改覆蓋。


            開(kāi)發(fā)者2必須首先獲得所有版本“B”的變化,并合并到他的修改中,然后才可以提交到服務(wù)器。這個(gè)過(guò)程聽(tīng)起來(lái)有些復(fù)雜。然而,大多數(shù)現(xiàn)代的版本控制系統(tǒng)十分高級(jí),能夠自動(dòng)在開(kāi)發(fā)者的本地拷貝上完成合并。有幾種情況會(huì)產(chǎn)生沖突(例如:開(kāi)發(fā)者1和開(kāi)發(fā)者2同時(shí)修改了同一個(gè)文件的同一行)。這就是一些VCS產(chǎn)品比其他更高級(jí)的地方。不論如何完成合并,現(xiàn)在開(kāi)發(fā)者2在他們的本地系統(tǒng)上同時(shí)混合了版本B和版本C。


            現(xiàn)在開(kāi)發(fā)者2可以提交他的版本到服務(wù)器。

            這是一個(gè)版本控制的基礎(chǔ)。通過(guò)注意觀察圖中服務(wù)器的連線(xiàn)可以發(fā)現(xiàn)版本控制的原理。服務(wù)器記錄了所有先前的版本包括發(fā)生的變化,什么時(shí)候發(fā)生以及由誰(shuí)進(jìn)行修改。當(dāng)需要進(jìn)行代碼回溯或者引入其他bug時(shí),這個(gè)記錄能夠解除困境。
            我希望本文能夠?yàn)榘姹究刂葡到y(tǒng)提供一個(gè)基礎(chǔ)的介紹。如果你有任何疑問(wèn),請(qǐng)就你問(wèn)題發(fā)表評(píng)論。
             
            英文原文:greenmoonsoftware 編譯:伯樂(lè)在線(xiàn) – 唐尤華

            posted on 2012-04-27 15:07 逛奔的蝸牛 閱讀(1005) 評(píng)論(0)  編輯 收藏 引用 所屬分類(lèi): JavaC/C++Qt其他編程
            日本欧美久久久久免费播放网| 久久综合九色综合精品| 精品久久久久久无码不卡| 亚洲综合日韩久久成人AV| 99999久久久久久亚洲| 久久精品国产精品国产精品污 | 日本道色综合久久影院| 久久精品国产99国产精品| 亚洲午夜久久久久妓女影院 | 久久r热这里有精品视频| 无码任你躁久久久久久久| 无码人妻少妇久久中文字幕蜜桃 | 一本久久免费视频| AAA级久久久精品无码片| 久久综合五月丁香久久激情| 久久99国产精品久久99果冻传媒| 久久久久亚洲?V成人无码| 久久香蕉超碰97国产精品| 青青热久久国产久精品| 国产精品久久久久久影院| 国产亚洲精品久久久久秋霞| 999久久久国产精品| 久久大香香蕉国产| 久久精品一区二区三区AV| 日韩va亚洲va欧美va久久| 夜夜亚洲天天久久| 国产成人精品免费久久久久| 久久久国产打桩机| 欧美无乱码久久久免费午夜一区二区三区中文字幕| 国内精品久久久久久久久电影网| 久久精品夜色噜噜亚洲A∨| 94久久国产乱子伦精品免费| 久久久久国产精品| 国产午夜久久影院| 久久无码av三级| 99久久人人爽亚洲精品美女| 久久精品国产99国产电影网| 欧美精品一区二区精品久久| 久久青草国产手机看片福利盒子| 99久久无色码中文字幕| 久久久久久a亚洲欧洲aⅴ|