svn基礎知識一


重要:

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)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM