svn基本操作(1)

來源:互聯網
上載者:User

重要:

SVN不是記錄每一個版本的實際內容,只是記錄版本間的差異

SVN使用延遲拷貝來實現svn copy,其只是原始檔案的一個連結,對拷貝的修改被svn記錄為相對於原始檔案的修改

 

 

1.建立存放庫

   假設d:/dev/svnrepo為存放svn存放庫的目錄

   svnadmin create d:/dev/svnrepo/test   建立一名為test的存放庫

2.匯入項目

   假設你的項目在d:/dev/eclipse中的Test檔案夾,你的目前的目錄為d:/dev/eclipse,你的svn存放庫路徑為http://localhost/svn/test

   svn import Test http://localhost/svn/test/OnlyTest -m "Initial Import"

   解釋:匯入的是Test檔案夾下的內容
;另外,注意要起一個路徑名OnlyTest
,否則全匯入到http://localhost/svn/test下了;-m 為日誌

3.匯出項目

   svn export <專案檔夾> <你的檔案夾>

   svn export -r <version> <專案檔夾> <你的檔案夾>

-------------------------

4.取出

   svn co(checkout) http://localhost/svn/test/OnlyTest   ---   將OnlyTest檔案夾其下的檔案取出來並建立預設資料夾OnlyTest

   svn co -r <url>  -- 取出特定版本

   svn co http://localhost/svn/test/OnlyTest MyTest  -- 將OnlyTest檔案夾下的檔案取出,放入建立立的檔案夾MyTest中

5.添加

  svn add *  --  svn會將未納入版本控制的檔案加入版本控制中(必須svn commit)

  svn add --non-recursive *   非遞迴添加

6.刪除

   svn delete(rm,remove,del) <filename>  -- 刪除檔案和目錄(必須svn commit)

7.提交

   svn commit -m "you log"  -- 提交

   svn commit --changelist <changelist name>  -- 提交指定的changelist

8.建立目錄

   svn mkdir <dirname>

   svn mkdir <url>

9.移動檔案或目錄

   svn move <source_name> <dist_name>

   svn move <source_url> <dist_url>

10.輸出特定檔案或URL的內容

   svn cat <file or url> --  輸出特定檔案或URL的內容

   svn cat -r <version> <file or url>

------------------------------

11.顯示本地或遠程某一檔案或目錄的詳細資料

   svn info <filename>

   svn info -r <version> <filename>

12.列表

   svn list(ls)

   svn list -r <version>

13.目前的目錄或檔案的狀態

   svn status <filename>

   svn status --show-updates(或-u)  從項目存放庫中找出哪些檔案有更新

狀態:

第一列:指出條目的狀態

空  無改動

A   添加

C   衝突

D   刪除

G   合并

M   修改

X    無版本記錄,被svn:externals使用

?    未用版本控制管理

第二列:屬性狀態

空  無改動

C   衝突

M   修改

第三列:工作拷貝是否被鎖定

空   未鎖

 L    鎖了

 

14.清理

   svn cleanup  --  遞迴清理工作拷貝

15.協助

   svn help

   svn help <subcommand>  -- 顯示子命令的協助,如:svn help add

-----------------------

18.鎖定某一目錄或檔案

   svn propset svn:needs-lock true  <二進位檔案>  -- 設定需要鎖[svn會將其設定為唯讀,提示使用者編輯這個檔案前先加鎖]

   svn lock <dir or file>

   svn lock --force <dir or file>  -- 強制對檔案加鎖,即使此檔案已被別人加鎖

19.解鎖

   svn unlock <dir or file>

   svn unlock --force <dir or file>  -- 可以解鎖其他使用者鎖定的檔案

20.顯示特定檔案和URL每一行的作者和修訂版本資訊

   svn blame <file or url>  --  每一行文本在開頭都放了最後修改的作者(使用者名稱)和修訂版本號碼。

   svn blame -r <version> <file or url>

 

21.更新

   svn update ----

把版本庫的修改帶到工作拷貝

   svn update -r<version>  --  改變到某一個版本

狀態:

A   添加   add

D   刪除   delete

U   更新   update

C   衝突   conflict

M   合并   merge

 

22.找不同

   svn diff <file>  -- 找出工作版本和最後更新的版本中的不同

   svn diff -c <version> <file>   查看檔案<file>
在修訂版本<version>修改的內容,是version和version-1比較

   svn diff -r <version> <file>   察看你的工作拷貝對舊的修訂版本<version>的修改

   svn diff -r <version1>:<version2> <file> 使用範圍符號來比較修訂版本<version1>和<version2>

   svn diff -r <version1>:<version2> <url>

   svn diff --changelist <changelist name>

 

23.拷貝

   svn copy <source> <dist>  --  其中source和dist既可以是工作目錄檔案也可以是url

   如:svn copy foo.txt bar.txt

         svn copy near.txt file:///tmp/repos/test/far-away.txt -m "Remote copy."

         svn copy file:///tmp/repos/test/far-away near-here

         svn copy file:///tmp/repos/test/far-away file:///tmp/repos/test/over-there -m "remote copy."

24. 顯示提交日誌資訊

   svn log -r <version> <path>

   svn log -r <version1>:<version2> <path>

   svn log <path>

   svn log -r {iso8601日期}  <path>

   svn log -r {iso8601日期}:{iso8601日期} <path>

   svn log -v <path>  顯示詳細的資訊(包括每個版本有哪些檔案有變動)

   svn log --stop-on-copy <path>  得出分支是什麼時候建立的

 

25.刪除工作拷貝檔案或目錄的“衝突
”狀態(相關的衝突檔案檔案)

   svn resolved <path>

26.取消所有的本地編輯

   svn revert <path>

   svn revert --recursive <path>  遞迴

27.解決衝突

   svn resolve --accept <status> <path>

   status:

      base:選擇你更新你的工作拷貝前的你checkout出的未經修改的版本

      working:手工處理後,選擇當前你工作拷貝中的版本

      mine-full:選擇在你svn update前的工作拷貝

      theirs-full:選擇svn update取出的檔案拷貝

28.將檔案放入到一個改變列表中

    svn changelist(cl) <changelist name> <path1> <path2> <path...>

    svn commit --changelist <changelist name> -- 只提交此change list的檔案

 

29.版本號碼標識

(1)號  87

(2){日期}  {2009-09-09}

(3)HEAD  存放庫中最新版本

(4)BASE   工作拷貝中你最後簽出的版本

(5)COMMITED  最後改動版本,等於或早於BASE

(6)PREV  COMMITED之前的一個版本

 

30.產生和應用補丁

svn diff > file.patch

patch <options> file.patch

 

31.svn項目組織

    project/

        trunk/    --主幹

        branches/   --分支

        tags/  --標籤

 

32.常用樣本

(1)提交改動

svn update  -- 更新到項目的目前狀態

# resolve conflicts  解決衝突

  編輯檔案

  svn resolved

# run tests  運行測試

svn commit -m "your logs"  -- 提交

(2)簡單bug修正

a.在一個分支中修正bug並提交

b.將其合并到存在此bug的其他分支中(svn merge -r<version1>:<version2>)

(3)複雜bug修正

a.建立一個bug修正分支(svn copy)  name=bug-trackid

b.為這個修正分支在修正前打標籤(svn copy) name=bugpre-trackid

c.修正bug

d.為這個修正在修正後打標籤(svn copy) name=bugpost-trackid

e.合并此bug修正到其他分支(svn merge -r bugpre-trackid:bugpost-trackid)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.