亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 3215 | 回復(fù): 0
打印 上一主題 下一主題

svn命令行操作 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2011-04-13 21:37 |只看該作者 |倒序?yàn)g覽
svn命令行操作



svn命令 通常都有幫助,可通過如下方式查詢:

$ svn help

知道了子命令,但是不知道子命令的用法,還可以查詢:

$ svn help add

開發(fā)人員常用命令

(1) 導(dǎo)入項(xiàng)目

$ cd ~/project
$ mkdir -p svntest/{trunk,branches,tags}
$ svn import svntest https://localhost/test/svntest --message "Start project"
...
$ rm -rf svntest

我們新建一個(gè)項(xiàng)目svntest,在該項(xiàng)目下新建三個(gè)子目錄:trunk,開發(fā)主干;branches,開發(fā)分支;tags,開發(fā)階段性標(biāo)簽。然后導(dǎo)入到版本庫test下,然后把svntest拿掉。

(2) 導(dǎo)出項(xiàng)目

$ svn checkout https://localhost/test/svntest/trunk

修訂版本號的指定方式是每個(gè)開發(fā)人員必須了解的,以下是幾個(gè)參考例子,說明可參考svn推薦書。

$ svn diff --revision PREV:COMMITTED foo.c
# shows the last change committed to foo.c

$ svn log --revision HEAD
# shows log message for the latest repository commit

$ svn diff --revision HEAD
# compares your working file (with local changes) to the latest version
# in the repository

$ svn diff --revision BASE:HEAD foo.c
# compares your “pristine” foo.c (no local changes) with the
# latest version in the repository

$ svn log --revision BASE:HEAD
# shows all commit logs since you last updated

$ svn update --revision PREV foo.c
# rewinds the last change on foo.c
# (foo.c's working revision is decreased)

$ svn checkout --revision 3
# specified with revision number

$ svn checkout --revision {2002-02-17}
$ svn checkout --revision {15:30}
$ svn checkout --revision {15:30:00.200000}
$ svn checkout --revision {"2002-02-17 15:30"}
$ svn checkout --revision {"2002-02-17 15:30 +0230"}
$ svn checkout --revision {2002-02-17T15:30}
$ svn checkout --revision {2002-02-17T15:30Z}
$ svn checkout --revision {2002-02-17T15:30-04:00}
$ svn checkout --revision {20020217T1530}
$ svn checkout --revision {20020217T1530Z}
$ svn checkout --revision {20020217T1530-0500}

(3) 日常指令

$ svn update

$ svn add foo.file
$ svn add foo1.dir
$ svn add foo2.dir --non-recursive
$ svn delete README
$ svn copy foo bar
$ svn move foo1 bar1

$ svn status
$ svn status --verbose
$ svn status --verbose --show-updates
$ svn status stuff/fox.c

$ svn diff
$ svn diff > patchfile

$ svn revert README
$ svn revert

修改沖突發(fā)生時(shí),會(huì)生成三個(gè)文件:.mine, .rOLDREV, .rNEWREV。比如:

$ ls -l
sandwich.txt
sandwich.txt.mine
sandwich.txt.r1
sandwich.txt.r2

解決修改沖突方式之一:修改沖突的文件sandwich.txt,然后運(yùn)行命令:

$ svn resolved sandwich.txt

方式之二:用庫里的新版本覆蓋你的修改:

$ cp sandwich.txt.r2 sandwich.txt
$ svn resolved sandwich.txt

方式之三:撤銷你的修改,這種方式不需要運(yùn)行resolved子命令:

$ svn revert sandwich.txt
Reverted 'sandwich.txt'
$ ls sandwich.*
sandwich.txt

確保沒問題后,就可以提交了。

$ svn commit --message "Correct some fatal problems"
$ svn commit --file logmsg
$ svn commit

(4) 檢驗(yàn)版本歷史

$ svn log
$ svn log --revision 5:19
$ svn log foo.c
$ svn log -r 8 -v

$ svn diff
$ svn diff --revision 3 rules.txt
$ svn diff --revision 2:3 rules.txt
$ svn diff --revision 4:5 http://svn.red-bean.com/repos/example/trunk/text/rules.txt

$ svn cat --revision 2 rules.txt
$ svn cat --revision 2 rules.txt > rules.txt.v2

$ svn list http://svn.collab.net/repos/svn
$ svn list --verbose http://svn.collab.net/repos/svn

$ svn checkout --revision 1729 # Checks out a new working copy at r1729

$ svn update --revision 1729 # Updates an existing working copy to r1729


(5) 其他有用的命令

svn cleanup

為失敗的事務(wù)清場。

(6) 分支和合并

建立分支方法一:先checkout然后做拷貝,最后提交拷貝。

$ svn checkout http://svn.example.com/repos/calc bigwc
A bigwc/trunk/
A bigwc/trunk/Makefile
A bigwc/trunk/integer.c
A bigwc/trunk/button.c
A bigwc/branches/
Checked out revision 340.

$ cd bigwc
$ svn copy trunk branches/my-calc-branch
$ svn status
A + branches/my-calc-branch

$ svn commit -m "Creating a private branch of /calc/trunk."
Adding branches/my-calc-branch
Committed revision 341.

建立分支方法二:直接遠(yuǎn)程拷貝。

$ svn copy http://svn.example.com/repos/calc/trunk \
http://svn.example.com/repos/calc/branches/my-calc-branch \
-m "Creating a private branch of /calc/trunk."

Committed revision 341.

建立分支后,你可以把分支checkout并繼續(xù)你的開發(fā)。

$ svn checkout http://svn.example.com/repos/calc/branches/my-calc-branch

假設(shè)你已經(jīng)checkout了主干,現(xiàn)在想切換到某個(gè)分支開發(fā),可做如下的操作:

$ cd calc
$ svn info | grep URL
URL: http://svn.example.com/repos/calc/trunk
$ svn switch http://svn.example.com/repos/calc/branches/my-calc-branch
U integer.c
U button.c
U Makefile
Updated to revision 341.
$ svn info | grep URL
URL: http://svn.example.com/repos/calc/branches/my-calc-branch

合并文件的命令參考:

$ svn diff -r 343:344 http://svn.example.com/repos/calc/trunk
$ svn merge -r 343:344 http://svn.example.com/repos/calc/trunk
$ svn commit -m "integer.c: ported r344 (spelling fixes) from trunk."
$ svn merge -r 343:344 http://svn.example.com/repos/calc/trunk my-calc-branch
$ svn merge http://svn.example.com/repos/branch1@150 \
http://svn.example.com/repos/branch2@212 \
my-working-copy
$ svn merge -r 100:200 http://svn.example.com/repos/trunk my-working-copy
$ svn merge -r 100:200 http://svn.example.com/repos/trunk
$ svn merge --dry-run -r 343:344 http://svn.example.com/repos/calc/trunk

最后一條命令僅僅做合并測試,并不執(zhí)行合并操作。

建立標(biāo)簽和建立分支沒什么區(qū)別,不過是拷貝到不同的目錄而已。

$ svn copy http://svn.example.com/repos/calc/trunk \
http://svn.example.com/repos/calc/tags/release-1.0 \
-m "Tagging the 1.0 release of the 'calc' project."

$ ls
my-working-copy/
$ svn copy my-working-copy http://svn.example.com/repos/calc/tags/mytag
Committed revision 352.

后一種方式直接把本地的工作拷貝復(fù)制為標(biāo)簽。

此外,你還可以刪除某個(gè)分支。

$ svn delete http://svn.example.com/repos/calc/branches/my-calc-branch \
-m "Removing obsolete branch of calc project."

管理人員常用命令

(7) 版本庫管理

$ svnadmin help
...
$ svnadmin help create
...
$ svnadmin create --fs-type bdb /usr/local/repository/svn/test
$ chown -R svn.svn /usr/local/repository/svn/test

建立版本庫,庫類型為bdb(使用Berkeley DB做倉庫),庫名稱為test。
svn版本庫有兩種存儲方式:基于Berkeley DB(bdb)或者基于文件系統(tǒng)(fsfs),通過 –fs-type可指定存儲方式。

( 查詢版本庫信息

$ svnlook help
...
$ svnlook help tree
...
$ svnlook tree /usr/local/repository/svn/test --show-ids

bash> svn help
用法:svn <subcommand> [options] [args]
Subversion 命令行客戶端,版本 1.2.0。
請使用 “svn help <subcommand>” 顯示子命令的輔助說明。
大多數(shù)的子命令可接受文件或目錄參數(shù),對目錄進(jìn)行遞回存取。
如無指定參數(shù)給命令,默認(rèn)將會(huì)自當(dāng)前的目錄 (包含) 進(jìn)
行遞歸存取。

可用的子命令:(括號內(nèi)是子命令的簡寫)
   add
   blame (praise, annotate, ann)
   cat
   checkout (co) //從源碼庫取出一個(gè)工作版本的拷貝
   cleanup //
   commit (ci) //提交當(dāng)前工作拷貝的更改。這個(gè)地方是有可能出現(xiàn)代碼沖突的。
   copy (cp) //做一個(gè)工作拷貝的拷貝。
   delete (del, remove, rm) //刪除本地或者svn server response上的文件或者目錄。
   diff (di) //比較某個(gè)文件與庫中的對應(yīng)文件的不同,類似于系統(tǒng)的diff命令。參數(shù):文件名。
   export //導(dǎo)出一個(gè)無版本控制的目錄樹拷貝。一般用于導(dǎo)出發(fā)行,或者投入運(yùn)行的版本。
   help (?, h)
   import //將本地當(dāng)前目錄下的文件導(dǎo)入到svn response 中。
   info //當(dāng)前目錄下工作拷貝中某文件(文件夾)的信息,如URL,版本,修改日期等。參數(shù):要看的文件(文件夾)
   list (ls) //列出當(dāng)前工作拷貝下的文件 ,相當(dāng)于系統(tǒng)的ls命令,不過只能在工作拷貝目錄下使用。
   lock
   log
   merge //將兩個(gè)來源之間的差異應(yīng)用至工作拷貝路徑。
   mkdir //在本地或者svn respon上新建一個(gè)文件夾.參數(shù):URL或者路徑
   move (mv, rename, ren)
   propdel (pdel, pd)
   propedit (pedit, pe)
   propget (pget, pg)
   proplist (plist, pl)
   propset (pset, ps)
   resolved
   revert
   status (stat, st) //svn工作拷貝當(dāng)前狀態(tài),與svn server上的源碼比較的結(jié)果。
   switch (sw)
   unlock
   update (up) //將svn server端文件同步到本地

Subversion 是個(gè)版本控制系統(tǒng)的工具。
欲取得詳細(xì)資料,請參考 http://subversion.tigris.org/



>svn co
checkout (co): Check out a working copy from a repository.
usage: checkout URL[@REV]... [PATH]

   If specified, REV determines in which revision the URL is first
   looked up.

   If PATH is omitted, the basename of the URL will be used as
   the destination. If multiple URLs are given each will be checked
   out into a sub-directory of PATH, with the name of the sub-directory
   being the basename of the URL.

有效選項(xiàng):
   -r [--revision] arg       : ARG (一些命令需要 ARG1:ARG2 )
                             修訂版參數(shù)可以是:
                                 數(shù)字       修訂版號
                                 "{" 日期 "}" 在指定時(shí)間以后的修訂版date
                                 "HEAD"       最近的檔案庫
                                 "BASE"       基線,基于修訂版的工作條目
                                 "COMMITTED"   最后提交或基線之前
                                 "REV"       修訂版提交之前
   -q [--quiet]             : 打印盡可能少
   -N [--non-recursive]     : 只在單個(gè)目錄操作
   --username arg           : 指定用戶 ARG
   --password arg           : 指定密碼 ARG
   --no-auth-cache           : 不要緩沖用戶驗(yàn)證
   --non-interactive         : 不要交互提示
   --config-dir arg         : 從目錄 ARG 讀取用戶配置文件
   --ignore-externals       : ignore externals definitions
   
sh> svn add
add: 把文件和目錄放入版本控制中,
通過調(diào)度加到檔案庫。它們會(huì)在下一次提交時(shí)加入。
用法:add 路徑...

有效選項(xiàng):
   --targets arg             : 傳遞文件 ARG 內(nèi)容為附件參數(shù)
   -N [--non-recursive]     : 只在單個(gè)目錄操作
   -q [--quiet]             : 打印盡可能少
   --config-dir arg         : 從目錄 ARG 讀取用戶配置文件
   --force                   : 強(qiáng)制操作運(yùn)行
   --auto-props             : 使自動(dòng)屬性有效
   --no-auto-props           : 使自動(dòng)屬性無效   
   
   eg.(下面的命令必須在工作拷貝目錄下運(yùn)行)
   sh> svn add test.c //加一個(gè)文件
   sh> svn add test //加一個(gè)目錄,目錄下有任意結(jié)構(gòu)的文件夾
   
sh> svn import http://localhost/svn/hehehehehhe -m=sdfsdf   //可在任何目錄下,將當(dāng)前文件夾下的所以文件遞歸導(dǎo)入到svn response 的hehehhhe目錄下。

sh>svn export
export: 產(chǎn)生一個(gè)無版本控制的目錄樹拷貝。
用法:1、export [-r REV] URL[@PEGREV] [PATH]
       2、export [-r REV] PATH1[@PEGREV] [PATH2]

   1、從 URL 指定的檔案庫,導(dǎo)出一個(gè)干凈的目錄樹到 PATH。如果有指定
     REV 的話,內(nèi)容即為該修訂版的,否則就是 HEAD 修訂版。如果 PATH
     被省略的話,地址(URL)的最后部份會(huì)被用來當(dāng)成本地的目錄名稱。

   2、在工作拷貝中,從指定的 PATH1 導(dǎo)出一個(gè)干凈的目錄樹到 PATH2。如果
     有指定 REV 的話,會(huì)從指定的修訂版導(dǎo)出,否則從 WORKING 導(dǎo)出。如果
     PATH2 被省略的話,PATH1 的最后部份會(huì)被用來當(dāng)成本地的目錄名稱。
     如果沒有指定 REV 的話,所有的本地修改都還會(huì)保持著,但是未納入
     版本控制的文件不會(huì)被復(fù)制。

     如果指定了 PEGREV ,將從指定的修訂版本開始查找。


有效選項(xiàng):
   -r [--revision] arg       : ARG (一些命令需要 ARG1:ARG2 )
                             修訂版參數(shù)可以是:
                                 數(shù)字       修訂版號
                                 "{" 日期 "}" 在指定時(shí)間以后的修訂版date
                                 "HEAD"       最近的檔案庫
                                 "BASE"       基線,基于修訂版的工作條目
                                 "COMMITTED"   最后提交或基線之前
                                 "REV"       修訂版提交之前
   -q [--quiet]             : 打印盡可能少
   -N [--non-recursive]     : 只在單個(gè)目錄操作
   --force                   : 強(qiáng)制操作運(yùn)行
   --username arg           : 指定用戶 ARG
   --password arg           : 指定密碼 ARG
   --no-auth-cache           : 不要緩沖用戶驗(yàn)證
   --non-interactive         : 不要交互提示
   --config-dir arg         : 從目錄 ARG 讀取用戶配置文件
   --native-eol arg         : 使用一個(gè)與標(biāo)準(zhǔn)不同的 EOL 標(biāo)記
                             文件的系統(tǒng)標(biāo)記是一個(gè)本地的 svn:eol-style 屬性。
                             ARG 可能是一下之一 'LF','CR','CRLF'
   --ignore-externals       : ignore externals definitions
   
   eg.
   sh> svn export http://localhost/svn/hehehehehhhe
   
sh> svn merge   
merge: 將兩個(gè)來源之間的差異應(yīng)用至工作拷貝路徑。
用法:1、merge sourceURL1[@N] sourceURL2[@M] [WCPATH]
       2、merge sourceWCPATH1@N sourceWCPATH2@M [WCPATH]
       3、merge -r N:M SOURCE[@REV] [WCPATH]

   1、第一種形式中,來源 URL 各被指定到修訂版 N 與 M。這兩個(gè)就是作為
     比較的來源。如果沒有指定修訂版的話,默認(rèn)為 HEAD。

   2、在第二種形式中,對應(yīng)到兩個(gè)來源的工作拷貝路徑的 URL 定義出用以
     進(jìn)行比較的來源。這里必須指定修訂版。

   3、第三種形式中,SOURCE 可為 URL 或工作拷貝項(xiàng)目,后者會(huì)使用對應(yīng)的
     地址(URL)。在修訂版 REV 的 地址(URL) 會(huì)以它存在于修訂版 N 與 M 的路徑來作
     比較。如果未指定 REV,就會(huì)假設(shè)為 HEAD。

   WCPATH 是接受改變的工作拷貝路徑。如果省略 WCPATH 的話,默認(rèn)值為
   '.',除非來源的主要名字符合 '.' 里的某個(gè)文件;在這種情況下,文件
   差異將會(huì)直接應(yīng)用至該文件去。

有效選項(xiàng):
   -r [--revision] arg       : ARG (一些命令需要 ARG1:ARG2 )
                             修訂版參數(shù)可以是:
                                 數(shù)字       修訂版號
                                 "{" 日期 "}" 在指定時(shí)間以后的修訂版date
                                 "HEAD"       最近的檔案庫
                                 "BASE"       基線,基于修訂版的工作條目
                                 "COMMITTED"   最后提交或基線之前
                                 "REV"       修訂版提交之前
   -N [--non-recursive]     : 只在單個(gè)目錄操作
   -q [--quiet]             : 打印盡可能少
   --force                   : 強(qiáng)制操作運(yùn)行
   --dry-run                 : 嘗試操作但不修改
   --diff3-cmd arg           : 使用 ARG 作為合并命令
   --ignore-ancestry         : 合并時(shí)忽略原始信息
   --username arg           : 指定用戶 ARG
   --password arg           : 指定密碼 ARG
   --no-auth-cache           : 不要緩沖用戶驗(yàn)證
   --non-interactive         : 不要交互提示
   --config-dir arg         : 從目錄 ARG 讀取用戶配置文件
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP