本章討論了版本控制系統(tǒng)的生命周期。在后面的章節(jié)中,我們將會(huì)介紹每個(gè)操作對(duì)應(yīng)的 SVN 命令。
版本庫(kù)相當(dāng)于一個(gè)集中的空間,用于存放開發(fā)者所有的工作成果。版本庫(kù)不僅能存放文件,還包括了每次修改的歷史,即每個(gè)文件的變動(dòng)歷史。
Create 操作是用來(lái)創(chuàng)建一個(gè)新的版本庫(kù)。大多數(shù)情況下這個(gè)操作只會(huì)執(zhí)行一次。當(dāng)你創(chuàng)建一個(gè)新的版本庫(kù)的時(shí)候,你的版本控制系統(tǒng)會(huì)讓你提供一些信息來(lái)標(biāo)識(shí)版本庫(kù),例如創(chuàng)建的位置和版本庫(kù)的名字。
Checkout 操作是用來(lái)從版本庫(kù)創(chuàng)建一個(gè)工作副本。工作副本是開發(fā)者私人的工作空間,可以進(jìn)行內(nèi)容的修改,然后提交到版本庫(kù)中。
顧名思義,update 操作是用來(lái)更新版本庫(kù)的。這個(gè)操作將工作副本與版本庫(kù)進(jìn)行同步。由于版本庫(kù)是由整個(gè)團(tuán)隊(duì)共用的,當(dāng)其他人提交了他們的改動(dòng)之后,你的工作副本就會(huì)過(guò)期。
讓我們假設(shè) Tom 和 Jerry 是一個(gè)項(xiàng)目的兩個(gè)開發(fā)者。他們同時(shí)從版本庫(kù)中檢出了最新的版本并開始工作。此時(shí),工作副本是與版本庫(kù)完全同步的。然后,Jerry 很高效的完成了他的工作并提交了更改到版本庫(kù)中。
此時(shí) Tom 的工作副本就過(guò)期了。更新操作將會(huì)從版本庫(kù)中拉取 Jerry 的最新改動(dòng)并將 Tom 的工作副本進(jìn)行更新。
當(dāng)檢出之后,你就可以做很多操作來(lái)執(zhí)行變更。編輯是最常用的操作。你可以編輯已存在的文件來(lái),例如進(jìn)行文件的添加/刪除操作。
你可以添加文件/目錄。但是這些添加的文件目錄不會(huì)立刻成為版本庫(kù)的一部分,而是被添加進(jìn)待變更列表中,直到執(zhí)行了 commit 操作后才會(huì)成為版本庫(kù)的一部分。
同樣地你可以刪除文件/目錄。刪除操作立刻將文件從工作副本中刪除掉,但該文件的實(shí)際刪除只是被添加到了待變更列表中,直到執(zhí)行了 commit 操作后才會(huì)真正刪除。
Rename 操作可以更改文件/目錄的名字?!耙苿?dòng)”操作用來(lái)將文件/目錄從一處移動(dòng)到版本庫(kù)中的另一處。
當(dāng)你檢出工作副本或者更新工作副本后,你的工作副本就跟版本庫(kù)完全同步了。但是當(dāng)你對(duì)工作副本進(jìn)行一些修改之后,你的工作副本會(huì)比版本庫(kù)要新。在 commit 操作之前復(fù)查下你的修改是一個(gè)很好的習(xí)慣。
Status 操作列出了工作副本中所進(jìn)行的變動(dòng)。正如我們之前提到的,你對(duì)工作副本的任何改動(dòng)都會(huì)成為待變更列表的一部分。Status 操作就是用來(lái)查看這個(gè)待變更列表。
Status 操作只是提供了一個(gè)變動(dòng)列表,但并不提供變動(dòng)的詳細(xì)信息。你可以用 diff 操作來(lái)查看這些變動(dòng)的詳細(xì)信息。
我們來(lái)假設(shè)你對(duì)工作副本做了許多修改,但是現(xiàn)在你不想要這些修改了,這時(shí)候 revert 操作將會(huì)幫助你。
Revert 操作重置了對(duì)工作副本的修改。它可以重置一個(gè)或多個(gè)文件/目錄。當(dāng)然它也可以重置整個(gè)工作副本。在這種情況下,revert 操作將會(huì)銷毀待變更列表并將工作副本恢復(fù)到原始狀態(tài)。
合并的時(shí)候可能會(huì)發(fā)生沖突。Merge 操作會(huì)自動(dòng)處理可以安全合并的東西。其它的會(huì)被當(dāng)做沖突。例如,“hello.c” 文件在一個(gè)分支上被修改,在另一個(gè)分支上被刪除了。這種情況就需要人為處理。Resolve 操作就是用來(lái)幫助用戶找出沖突并告訴版本庫(kù)如何處理這些沖突。
Commit 操作是用來(lái)將更改從工作副本到版本庫(kù)。這個(gè)操作會(huì)修改版本庫(kù)的內(nèi)容,其它開發(fā)者可以通過(guò)更新他們的工作副本來(lái)查看這些修改。
在提交之前,你必須將文件/目錄添加到待變更列表中。列表中記錄了將會(huì)被提交的改動(dòng)。當(dāng)提交的時(shí)候,我們通常會(huì)提供一個(gè)注釋來(lái)說(shuō)明為什么會(huì)進(jìn)行這些改動(dòng)。這個(gè)注釋也會(huì)成為版本庫(kù)歷史記錄的一部分。Commit 是一個(gè)原子操作,也就是說(shuō)要么完全提交成功,要么失敗回滾。用戶不會(huì)看到成功提交一半的情況。
更多建議: