SVN版本控制

2021-06-02 01:04:43 字數 3963 閱讀 4136

1.svn安裝

sudo apt-get install subversion

2.建立倉庫

對於多個**倉庫 首先在/var/下建立svn主目錄。

svnadmin create /var/svn/test1

svnadmin create /var/svn/test2

3.修改配置檔案

倉庫目錄下

conf/svnserve.conf

修改如下

注意:所有的行都必須頂格,否則報錯。

html**  

[general]  

#匿名訪問的許可權,可以是read,write,none,預設為read  

anon-access

= none

#認證使用者的許可權,可以是read,write,none,預設為write  

auth-access

= write

#密碼資料庫的路徑,去掉前面的#  

password-db

= passwd

停止svn伺服器:killall svnserve

我們有兩個**倉庫/svn/test1和/svn/test2,我們用svnserve -d -r /var/svn --listen-host 192.168.1.16來啟動,那麼在客戶端訪問時可以用svn:和svn: 來分別訪問兩個專案。

新增svn管理使用者及subversion組

$ sudo adduser svnuser

$ sudo addgroup subversion

$ sudo addgroup svnuser subversion     

也可以直接操作conf目錄authz passwd!

1、將檔案checkout到本地目錄

svn checkout path(path是伺服器上的目錄)

例如:svn checkout svn:

簡寫:svn co

2、往版本庫中新增新的檔案

svn add file

例如:svn addtest.php(新增test.php)

svn add *.php(新增當前目錄下所有的php檔案)

3、將改動的檔案提交到版本庫

svn commit -m 「logmessage「 [-n] [--no-unlock] path(如果選擇了保持鎖,就使用–no-unlock開關)

例如:svn commit -m 「add test file for my test「 test.php

簡寫:svn ci

4、加鎖/解鎖

svn lock -m 「lockmessage「 [--force] path

例如:svn lock -m 「lock test file「 test.php

svn unlock path

5、更新到某個版本

svn update -r m path

例如:svn update如果後面沒有目錄,預設將當前目錄以及子目錄下的所有檔案都更新到最新版本。

svn update -r 200 test.php(將版本庫中的檔案test.php還原到版本200)

svn update test.php(更新,於版本庫同步。如果在提交的時候提示過期的話,是因為衝突,需要先update,修改檔案,然後清除svn resolved,最後再提交commit)

簡寫:svn up

6、檢視檔案或者目錄狀態

1)svn status path(目錄下的檔案和子目錄的狀態,正常狀態不顯示)

【?:不在svn的控制中;m:內容被修改;c:發生衝突;a:預定加入到版本庫;k:被鎖定】

2)svn status -v path(顯示檔案和子目錄狀態)

第一列保持相同,第二列顯示工作版本號,第三和第四列顯示最後一次修改的版本號和修改人。

注:svn status、svn diff和 svn revert這三條命令在沒有網路的情況下也可以執行的,原因是svn在本地的.svn中保留了本地版本的原始拷貝。

簡寫:svn st

7、刪除檔案

svn delete path -m 「delete test fle「

例如:svn delete svn:/test.php -m 「delete test file」

或者直接svn delete test.php 然後再svn ci -m 『delete test file『,推薦使用這種

簡寫:svn (del, remove, rm)

8、檢視日誌

svn log path

例如:svn log test.php 顯示這個檔案的所有修改記錄,及其版本號的變化

9、檢視檔案詳細資訊

svn info path

例如:svn info test.php

10、比較差異

svn diff path(將修改的檔案與基礎版本比較)

例如:svn diff test.php

svn diff -r m:n path(對版本m和版本n比較差異)

例如:svn diff -r 200:201 test.php

簡寫:svn di

11、將兩個版本之間的差異合併到當前檔案

svn merge -r m:n path

例如:svn merge -r 200:205 test.php(將版本200與205之間的差異合併到當前檔案,但是一般都會產生衝突,需要處理一下)

12、svn 幫助

svn help

svn help ci

——————————————————————————

以上是常用命令,下面寫幾個不經常用的

——————————————————————————

13、版本庫下的檔案和目錄列表

svn list path

顯示path目錄下的所有屬於版本庫的檔案和目錄

簡寫:svn ls

14、建立納入版本控制下的新目錄

svn mkdir: 建立納入版本控制下的新目錄。

用法: 

1、mkdir path…

2、mkdir url…

建立版本控制的目錄。

1、每乙個以工作副本 path 指定的目錄,都會建立在本地端,並且加入新增排程,以待下一次的提交。

2、每個以url指定的目錄,都會透過立即提交於倉庫中建立。在這兩個情況下,所有的中間目錄都必須事先存在。

15、恢復本地修改

svn revert: 恢復原始未改變的工作副本檔案 (恢復大部份的本地修改)。revert:

用法: revert path…

注意: 本子命令不會訪問網路,並且會解除衝突的狀況。但是它不會恢復被刪除的目錄

16、**庫url變更

svn switch (sw): 更新工作副本至不同的url。

用法: 1、switch url [path]

2、switch –relocate from to [path...]

1、更新你的工作副本,對映到乙個新的url,其行為跟「svn update」很像,也會將伺服器上檔案與本地檔案合併。這是將工作副本對應到同一倉庫中某個分支或者標記的方法。

2、改寫工作副本的url元資料,以反映單純的url上的改變。當倉庫的根url變動(比如方案名或是主機名稱變動),但是工作副本仍舊對映到同一倉庫的同一目錄時使用這個命令更新工作副本與倉庫的對應關係。

17、解決衝突

svn resolved: 移除工作副本的目錄或檔案的「衝突」狀態。

用法: resolved path…

注意: 本子命令不會依語法來解決衝突或是移除衝突標記;它只是移除衝突的

相關檔案,然後讓 path 可以再次提交。

18、輸出指定檔案或url的內容。

svn cat 目標[@版本]…如果指定了版本,將從指定的版本開始查詢。

svn cat -r prev filename > filename (prev 是上一版本,也可以寫具體版本號,這樣輸出結果是可以提交的)

** 以及

SVN版本控制

一般情況,svn分3個目錄 主幹 trunk 分支 branch 標記 tag trunk 是用來做主方向開發的,乙個新模組的開發,這個時候就放在trunk,當模組開發完成後,需要修改,就用branch。branch 是用來做並行開發的,這裡的並行是指和trunk進行比較。tag 是用來做乙個mil...

本地版本跟svn版本對比 SVN(版本控制)

1.工作原理 客戶端 服務端 2.svn常見操作 1.發布專案 share project 專案組長將本機的專案第一次發布到 倉庫 3.提交 commit 組員將修改後的內同步到伺服器 本地 伺服器 4.更新 update 將伺服器中的最新 同步到本地 伺服器 本地 注意 更新提交操作 要及時 防止...

版本控制工具 SVN

學習svn的 svn入門使用 伺服器 tigris svn 客戶端 tortoise svn 伺服器的搭建 tigris svn server 1.6.5 2 建立中心庫 svnadmin create d share svnrepo 3 修改許可權配置 修改conf svnserve.conf 檔...