在樂字節(jié)學習的一天(在線更新)

在樂字節(jié)學習的第14天,學習了挺多知識,下面就是我今天在樂字節(jié)學習的知識。

SVN介紹

簡介

SVN全稱Subversion,是一個開放源代碼的版本控制系統(tǒng),Subversion 在 2000 年由 CollabNet Inc 開發(fā),現(xiàn)在發(fā)展成為 Apache 軟件基金會的一個項目,同樣是一個豐富的開發(fā)者和用戶社區(qū)的一部分。

SVN是一個開放源代碼的版本控制系統(tǒng),管理著隨時間改變的數(shù)據(jù)。這些數(shù)據(jù)放置在一個中央資料檔案庫(repository) 中。 這個檔案庫很像一個普通的文件服務器, 不過它會記住每一次文件的變動。 這樣你就可以把檔案恢復到舊的版本, 或是瀏覽文件的變動歷史。說得簡單一點SVN就是用于多個人共同開發(fā)同一個項目,共用資源的目的。

主要作用

目錄版本控制

Subversion 實現(xiàn)了一個 "虛擬" 的版本控管文件系統(tǒng), 能夠依時間跟蹤整個目錄的變動。 目錄和文件都能進行版本控制。

真實的版本歷史

Subversion中,可以增加(add)、刪除(delete)、復制(copy)和重命名(rename),無論是文件還是目錄。所有的新加的文件都從一個新的、干凈的版本開始。

自動提交

一個提交動作,不是全部更新到了檔案庫中,就是完全不更新。這允許開發(fā)人員以邏輯區(qū)間建立并提交變動,以防止當部分提交成功時出現(xiàn)的問題。

基本概念

Repository(源代碼庫):源代碼統(tǒng)一存放的地方

Checkout(提?。寒斈闶稚蠜]有源代碼的時候,你需要從repository checkout一份

Commit(提交):當你已經(jīng)修改了代碼,你就需要Commit到repository

Update (更新):當你已經(jīng)Checkout了一份源代碼, Update后就可以和Repository上的源代碼同步

工作流程

開始新一天的工作

1、從服務器下載項目組最新代碼。(Checkout)2、如果已經(jīng)Checkout并且有人已Commit了代碼,你可以更新以獲得最新代碼。(Update

3、進入自己的分支,進行工作,每隔一個小時向服務器自己的分支提交一次代碼(很多人都有這個習慣。因為有時候自己對代碼改來改去,最后又想還原到前一個小時的版本,或者看看前一個小時自己修改了哪些代碼,就需要這樣做了)。(Commit

4、下班時間快到了,把自己的分支合并到服務器主分支上,一天的工作完成,并反映給服務器。(Commit

注意:如果兩個程序員同時修改了同一個文件, SVN可以合并這兩個程序員的改動,實際上SVN管理源代碼是以行為單位的,就是說兩個程序員只要不是修改了同一行程序,SVN都會自動合并兩種修改。如果是同一行,SVN會提示文件Confict, 沖突,需要手動確認。

生命周期

創(chuàng)建版本庫

版本庫相當于一個集中的空間,用于存放開發(fā)者所有的工作成果。版本庫不僅能存放文件,還包括了每次修改的歷史,即每個文件的變動歷史。

Create 操作是用來創(chuàng)建一個新的版本庫。大多數(shù)情況下這個操作只會執(zhí)行一次。當你創(chuàng)建一個新的版本庫的時候,你的版本控制系統(tǒng)會讓你提供一些信息來標識版本庫,例如創(chuàng)建的位置和版本庫的名字。

檢出

Checkout 操作是用來從版本庫創(chuàng)建一個工作副本。工作副本是開發(fā)者私人的工作空間,可以進行內(nèi)容的修改,然后提交到版本庫中。

更新

顧名思義,update 操作是用來更新版本庫的。這個操作將工作副本與版本庫進行同步。由于版本庫是由整個團隊共用的,當其他人提交了他們的改動之后,你的工作副本就會過期。

讓我們假設 Tom 和 Jerry 是一個項目的兩個開發(fā)者。他們同時從版本庫中檢出了最新的版本并開始工作。此時,工作副本是與版本庫完全同步的。然后,Jerry 很高效的完成了他的工作并提交了更改到版本庫中。

此時 Tom 的工作副本就過期了。更新操作將會從版本庫中拉取 Jerry 的最新改動并將 Tom 的工作副本進行更新。

執(zhí)行變更

當檢出之后,你就可以做很多操作來執(zhí)行變更。編輯是最常用的操作。你可以編輯已存在的文件來,例如進行文件的添加/刪除操作。

你可以添加文件/目錄。但是這些添加的文件目錄不會立刻成為版本庫的一部分,而是被添加進待變更列表中,直到執(zhí)行了 commit 操作后才會成為版本庫的一部分。

同樣地你可以刪除文件/目錄。刪除操作立刻將文件從工作副本中刪除掉,但該文件的實際刪除只是被添加到了待變更列表中,直到執(zhí)行了 commit 操作后才會真正刪除。

Rename 操作可以更改文件/目錄的名字。"移動"操作用來將文件/目錄從一處移動到版本庫中的另一處。

復查變化

當你檢出工作副本或者更新工作副本后,你的工作副本就跟版本庫完全同步了。但是當你對工作副本進行一些修改之后,你的工作副本會比版本庫要新。在 commit 操作之前復查下你的修改是一個很好的習慣。

Status 操作列出了工作副本中所進行的變動。正如我們之前提到的,你對工作副本的任何改動都會成為待變更列表的一部分。Status 操作就是用來查看這個待變更列表。

Status 操作只是提供了一個變動列表,但并不提供變動的詳細信息。你可以用 diff 操作來查看這些變動的詳細信息。

修復錯誤

我們來假設你對工作副本做了許多修改,但是現(xiàn)在你不想要這些修改了,這時候 revert 操作將會幫助你。

Revert 操作重置了對工作副本的修改。它可以重置一個或多個文件/目錄。當然它也可以重置整個工作副本。在這種情況下,revert 操作將會銷毀待變更列表并將工作副本恢復到原始狀態(tài)。

解決沖突

合并的時候可能會發(fā)生沖突。Merge 操作會自動處理可以安全合并的東西。其它的會被當做沖突。例如,"hello.c" 文件在一個分支上被修改,在另一個分支上被刪除了。這種情況就需要人為處理。Resolve 操作就是用來幫助用戶找出沖突并告訴版本庫如何處理這些沖突。

提交更改

Commit 操作是用來將更改從工作副本到版本庫。這個操作會修改版本庫的內(nèi)容,其它開發(fā)者可以通過更新他們的工作副本來查看這些修改。

在提交之前,你必須將文件/目錄添加到待變更列表中。列表中記錄了將會被提交的改動。當提交的時候,我們通常會提供一個注釋來說明為什么會進行這些改動。這個注釋也會成為版本庫歷史記錄的一部分。Commit 是一個原子操作,也就是說要么完全提交成功,要么失敗回滾。用戶不會看到成功提交一半的情況。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容