SVN commit,update用法

来源:互联网 发布:linux版本发布时间 编辑:程序博客网 时间:2024/05/17 07:56

您是否有過這樣子的經驗, 在編修檔案的過程中, 尤其是在撰寫程式檔, 突然改爛了, 而想說: 如果我有辦法知道剛才改了什麼地方有多好!或是在一份大作業或者是專案的情況下, 須要多個人一同改一份檔案, 總須事先說好誰要改哪個檔案, 改的時候別人都不能動,以免在存檔的時候被互相覆蓋.

有這麼苦嗎?!

事實上這些工作, 都可以交給一套完善的版本控制系統 (Version Control System) 來解決. 接下來要介紹的這套系統名做 [subversion] , subversion透過一個集中管理的檔案庫(repository), 記錄下每一次的更動, 於是您可以取得每一次修改的紀錄, 甚至還可以多個人一起改, subversion 會負責把兩個人的修正合併起來!

安裝 Subversion

首先您須要在您所要工作的機器上安裝 Subversion 這套系統. 若您的機器上已經安裝好了, 您可以跳過這一步.

  1. 若您在 FreeBSD 底下, 請直接 cd /usr/ports/devel/subversion; make install
  2. 若您在 Microsoft Windows 底下, 請至 http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=91 下載最新的 Subversion 安裝檔安裝即可, 或者是選擇跟 Explorer 整合在一起, 可以用右鍵來選擇功能的 TortoiseSVN http://tortoisesvn.tigris.org/download.html

若您使用其他的系統, 請參考 http://subversion.tigris.org/project_packages.html . 目前 Subversion 能在許多的作業系統上面執行.

checkout

對於每一個專案, 通常會有一個專屬的檔案庫. 若您不打算自行架設, 您可以至 https://opensvn.csie.org 申請一個.

首先您需要從檔案庫中取一份資料至目前目錄下. 您需要使用 `svn checkout 檔案庫路徑 [目的地路徑]`, 例如說:

~$ svn checkout http://OpenSVN.csie.org/demo
A demo
A demo/Makefile
A demo/integer.c
A demo/button.c
~$ cd demo # 切換到工作目錄 (demo) 下面
~/demo$

這時 svn會自動建立一個目錄, 若無指定 `目的地路徑` 的話則會以檔案庫路徑最一個目路為準 (以上例來說是 demo) , svn 將會作用在這個目錄底下.

一般操作

有兩個重要的指令, 分別是 svn update , 用來將檔案庫中的版本和本地端同步 (例如說有別人已經修正並上傳了) ; 另一個是 svn status , 可以看到本地端更動尚未上傳的情況. 若您尚不了解這是做什麼的並沒有關係, 接下來就會看到範例.

加入檔案 svn add

若要增加新的檔案進來, 請透過 `svn add <file name>`, 例如說我現在開始撰寫 newfile.c:

~/demo$ vim newfile.c           # 開始編輯 newfile.c

~/demo$ svn status # 看本地端的情況
? newfile.c # 前面加 ?表示該檔案尚未加入版本控制

~/demo$ svn add newfile.c # 將其加入版本控制
A newfile.c

~/demo$ svn status # 看本地端的情況
A newfile.c # 有新增的檔案, 尚未上傳

若要在這底下開新的目錄, 請透過 `svn mkdir <dir name>` , 或是先開好目錄, 再透過 `svn add <dir name>` 亦可.

修改

這時, 我可以針對我手上這一份檔案進行修改, 在我進行上傳(commit)前, 別人並不會看到這個更動, 所以並不用擔心我修正錯誤時, 別人會無法使用.

~/demo$ vim integer.c           # 修改 integer.c
~/demo$ svn status
A newfile.c
M integer.c # M 表是 modified

commit

一旦修改到一個斷落或完成時 (若是在程式開發的情況下, 通常都是在至少可以順利 compile過時)需要下 commit 這個指令, 將我本地端的修改送回檔案庫; 而在每次 commit 的時候, 可以順便附帶一個訊息, 表示這次commit 時修正了什麼地方, 以方便之後在找尋的時候, 除了透過時間及作者外, 還能有一些其他的資訊. 我們稱這個訊息為 commitlog , 建議最好要填寫, 就算是只有一行五六個字, 也勝於什麼都沒有寫. 若您的 commit log 只有一行, 可以直接透過 -m"<your commit log>" 加在 commit 後面, 如:

~/demo$ svn commit -m "fix bug"

或是直接用 svn commit , 這時它會自動跳出一個編輯器讓您輸入. 接著會看到像是這樣的畫面:

Sending newfile.c
Sending integer.c
Transmitting file data..
Committed revision 57.

表示完成, 此時在別的地方進行 svn update 時, 就會含有剛才您更新的資訊.

總結

透過 Subversion 進行開發的流程:

1.只有第一次的時候須要進行 svn checkout , 之後請從 2. 起即可

svn checkout <repository url>

2.假設有其他人在之間有進行修正, 所以先 svn update 更新到最新的版本

svn update

3.進行修正

4.再同步一次

svn update

(這時可以再用 svn status 觀看一下目前的結果, 以及可以透過 svn diff 觀看修正內容. 這將在後文介紹)

5.若有問題則回 3 再進行修正. 要不然確認後, 上傳自己的修正

svn commit
原创粉丝点击