1卸夕、將文件checkout到本地目錄
de? >svn checkout path(path是服務(wù)器 上的目錄)例如:svn checkout svn://192.168.1.1/pro/domain
de>
2完丽、往版本庫中添加新的文件
de? >svn add file例如:svn add test.php(添加test.php)svn add *.php(添加當(dāng)前目錄下所有的php文件)
de>
3斩例、將改動(dòng)的文件提交到版本庫
de? >svn commit -m “LogMessage“ [-N] [--no-unlock] PATH(如果選擇了保持鎖惶我,就使用–no-unlock開關(guān))例如:svn commit -m “add test fileformy test“ test.php簡寫:svn ci
de>
4、加鎖/解鎖
de? >svn lock -m “LockMessage“ [--force] PATH例如:svn lock -m “l(fā)ock test file“ test.phpsvn unlock PATH
de>
5等曼、更新到某個(gè)版本
de? >svn update -r m path例如:svn update如果后面沒有目錄层皱,默認(rèn)將當(dāng)前目錄以及子目錄下的所有文件都更新到最新版本 性锭。svn update -r 200 test.php(將版本庫中的文件test.php還原到版本200)svn update test.php(更新,于版本庫同步叫胖。如果在提交的時(shí)候提示過期的話草冈,是因?yàn)闆_突,需要先update瓮增,修改 文件怎棱,然后清除svn resolved,最后再提交commit)簡寫:svn up
de>
6绷跑、查看文件或者目錄狀態(tài)
de? >1)svn status path(目錄下的文件和子目錄的狀態(tài)拳恋,正常狀態(tài)不顯示)【?:不在svn的控制中;M:內(nèi)容被修改砸捏;C:發(fā)生沖突谬运;A:預(yù)定加入到版本庫;K:被鎖定】2)svn status -v path(顯示文件和子目錄狀態(tài))第一列保持相同垦藏,第二列顯示工作版本號(hào)梆暖,第三和第四列顯示最后一次修改的版本號(hào)和修改人。注:svn status掂骏、svn diff和 svn revert這三條命令在沒有網(wǎng)絡(luò)的情況下也可以執(zhí)行的轰驳,原因是svn在本地的.svn中保留了本地版本的原始拷貝。簡寫:svn st
de>
7弟灼、刪除 文件
de? >svndeletepath -m “deletetest fle“例如:svndeletesvn://192.168.1.1/pro/domain/test.php -m “delete test file”或者直接svndeletetest.php 然后再svn ci -m ‘deletetest file‘级解,推薦使用這種簡寫:svn (del, remove, rm)
de>
8、查看日志
de? >svn log path例如:svn log test.php 顯示這個(gè)文件的所有修改記錄田绑,及其版本號(hào)的變化
de>
9勤哗、查看文件詳細(xì)信息
de? >svn info path例如:svn info test.phpde>
10、比較差異
de? >svn diff path(將修改的文件與基礎(chǔ)版本比較)例如:svn diff test.phpsvn diff -r m:n path(對版本m和版本n比較差異)例如:svn diff -r 200:201 test.php簡寫:svn di
de>
11掩驱、將兩個(gè)版本之間的差異合并到當(dāng)前文件
de? >svn merge -r m:n path例如:svn merge -r 200:205 test.php(將版本200與205之間的差異合并到當(dāng)前文件芒划,但是一般都會(huì)產(chǎn)生沖突豁延,需要處理一下)
de>
12、SVN 幫助
de? >svn helpsvn help ci——————————————————————————
de>
以上是常用命令腊状,下面寫幾個(gè)不經(jīng)常用的
——————————————————————————
13、版本庫下的文件和目錄列表
de? >svn list path顯示path目錄下的所有屬于版本庫的文件和目錄簡寫:svn ls
de>
14苔可、創(chuàng)建納入版本控制下的新目錄
de? >svn mkdir: 創(chuàng)建納入版本控制下的新目錄缴挖。用法: 1、mkdir PATH…2焚辅、mkdir URL…創(chuàng)建版本控制的目錄映屋。1、每一個(gè)以工作副本 PATH 指定的目錄同蜻,都會(huì)創(chuàng)建在本地端棚点,并且加入新增調(diào)度,以待下一次的提交湾蔓。2瘫析、每個(gè)以URL指定的目錄,都會(huì)透過立即提交于倉庫中創(chuàng)建默责。在這兩個(gè)情況下贬循,所有的中間目錄都必須事先存在。
de>
15桃序、恢復(fù)本地修改
de? >svn revert: 恢復(fù)原始未改變的工作副本文件 (恢復(fù)大部份的本地修改)杖虾。revert:用法: revert PATH…注意: 本子命令不會(huì)存取網(wǎng)絡(luò),并且會(huì)解除沖突的狀況媒熊。但是它不會(huì)恢復(fù)被刪除的目錄
de>
16奇适、代碼 庫URL變更
de? >svnswitch(sw): 更新工作副本至不同的URL。用法:1芦鳍、switchURL [PATH]2嚷往、switch–relocate FROM TO [PATH...]1、更新你的工作副本怜校,映射到一個(gè)新的URL间影,其行為跟“svn update”很像,也會(huì)將服務(wù)器上文件與本地文件合并茄茁。這是將工作副本對應(yīng)到同一倉庫中某個(gè)分支或者標(biāo)記的方法魂贬。2、改寫工作副本的URL元數(shù)據(jù)裙顽,以反映單純的URL上的改變付燥。當(dāng)倉庫的根URL變動(dòng)(比如方案名或是主機(jī)名稱變動(dòng)),但是工作副本仍舊對映到同一倉庫的同一目錄時(shí)使用這個(gè)命令更新工作副本與倉庫的對應(yīng)關(guān)系愈犹。我的例子:svnswitch--relocate http://59.41.99.254/mytt http://www.mysvn.com/mytt
de>
17键科、解決 沖突
de? >svn resolved: 移除工作副本的目錄或文件的“沖突”狀態(tài)闻丑。用法: resolved PATH…注意: 本子命令不會(huì)依語法來解決沖突或是移除沖突標(biāo)記;它只是移除沖突的相關(guān)文件勋颖,然后讓 PATH 可以再次提交嗦嗡。
de>
18、輸出指定文件或URL的內(nèi)容饭玲。
de? >svn cat 目標(biāo)[@版本]…如果指定了版本侥祭,將從指定的版本開始查找。svn cat -r PREV filename > filename (PREV 是上一版本,也可以寫具體版本號(hào),這樣輸出結(jié)果是可以提交的)
de>
19茄厘、 查找工作拷貝中的所有遺留的日志文件矮冬,刪除進(jìn)程中的鎖 。
de? >當(dāng)Subversion改變你的工作拷貝(或是.svn 中 的任何信息)次哈,它會(huì)盡可能的小心胎署,在修改任何事情之前,它把意圖寫到日志文件中去窑滞,然后執(zhí)行l(wèi)og文件中的命令琼牧,然后刪掉日志文件,這與分類帳的文件系統(tǒng) 架構(gòu)類似葛假。如果Subversion的操作中斷了(舉個(gè)例子:進(jìn)程被殺死了障陶,機(jī)器死掉了),日志文件會(huì)保存在硬盤上聊训,通過重新執(zhí)行日志文 件抱究,Subversion可以完成上一次開始的操作,你的工作拷貝可以回到一致的狀態(tài)带斑。這就是svn cleanup 所作的:它查找工作拷貝中的所有遺留的日志文件鼓寺,刪除進(jìn)程中的鎖。如果Subversion告訴你工作拷貝中的一部分已經(jīng)“鎖定 ”了勋磕,你就需要運(yùn)行這個(gè)命令了妈候。同樣,svn status 將會(huì)使用L 顯示鎖定的項(xiàng)目:$ svn statusL somedirM somedir/foo.c $ svn cleanup$ svn statusM somedir/foo.c
de>
20挂滓、 拷貝用戶的一個(gè)未被版本化的目錄樹到版本庫苦银。
de? >svn import 命令是拷貝用戶的一個(gè)未被版本化的目錄樹到版本庫最快的方法,如果需要赶站,它也要建立一些中介文件幔虏。$ svnadmin create /usr/local/svn/newrepos $ svn import mytree file:///usr/local/svn/newrepos/some/project Adding mytree/foo.c Adding mytree/bar.c Adding mytree/subdir Adding mytree/subdir/quux.h Committed revision 1.在上一個(gè)例子里,將會(huì)拷貝目錄mytree 到版本庫的some/project 下:$ svn list file:///usr/local/svn/newrepos/some/project bar.c foo.c subdir/注意贝椿,在導(dǎo)入之后想括,原來的目錄樹并沒有 轉(zhuǎn)化成工作拷貝,為了開始工作烙博,你還是需要運(yùn)行svn checkout 導(dǎo)出一個(gè)工作拷貝瑟蜈。另附:為SVN 加入Email通知 可以通過Subversion的Hook腳本的方式為SVN 加入郵件列表功能 編譯安裝了Subversion后 在源碼的tools 下有一個(gè)comm-email.pl的Perl腳本烟逊,在你的檔案目錄下有一個(gè)hooks目錄,進(jìn)入到hooks目錄把post-commit.tmpl 改名為post-commit并給它可執(zhí)行的權(quán)限铺根。 更改post-commit腳本 把comm-email.pl腳本的決對路徑加上宪躯,否則 SVN 找不到comm-email.pl REPOS="$1" REV="$2" /usr/local/svn /resp/commit-email.pl "$REPOS" "$REV" email@address1.com email@address2.com #log-commit.py --repository "$REPOS" --revision "$REV" 最后一行是用來記日志的 我不用這個(gè)功能 所以注釋掉了
de>
svn將分支、主干等處理
de? >創(chuàng)建分支svn cp -m"create branch"http://svn_server/xxx_repository/trunk http://svn_server/xxx_repository/branches/br_feature001 獲得分支 svn co http://svn_server/xxx_repository/branches/br_feature001 合并主干上的最新代碼到分支上cd br_feature001 svn merge http://svn_server/xxx_repository/trunk 如果需要預(yù)覽該刷新操作位迂,可以使用svn mergeinfo命令眷唉,如:svn mergeinfo http://svn_server/xxx_repository/trunk --show-revs eligible或使用svn merge --dry-run選項(xiàng)以獲取更為詳盡的信息。分支合并到主干一旦分支上的開發(fā)結(jié)束囤官,分支上的代碼需要合并到主干。SVN中執(zhí)行該操作需要在trunk的工作目錄下進(jìn)行蛤虐。命令如下:cd trunk svn merge --reintegrate http://svn_server/xxx_repository/branches/br_feature001 分支合并到主干中完成后應(yīng)當(dāng)刪該分支党饮,因?yàn)樵赟VN中該分支已經(jīng)不能進(jìn)行刷新也不能合并到主干。合并版本并將合并后的結(jié)果應(yīng)用到現(xiàn)有的分支上svn -r148:149merge http://svn_server/xxx_repository/trunk建立tags產(chǎn)品開發(fā)已經(jīng)基本完成驳庭,并且通過很嚴(yán)格的測試刑顺,這時(shí)候我們就想發(fā)布給客戶使用,發(fā)布我們的1.0版本svn copy http://svn_server/xxx_repository/trunk http://svn_server/xxx_repository/tags/release-1.0 -m "1.0 released"刪除分支或tagssvn rm http://svn_server/xxx_repository/branches/br_feature001svn rm http://svn_server/xxx_repository/tags/release-1.0同步trunk代碼至分支cd my-working-branchsvn merge http://my-repo/trunk該命令負(fù)責(zé)把從創(chuàng)建該branch后饲常,trunk上所有的修改復(fù)制一份蹲堂,然后應(yīng)用到本branch上,因此重復(fù)進(jìn)行merge會(huì)導(dǎo)致沖突
de>