from:http://www.open.collab.net/scdocs/ddUsingSVN_command-line.html.zh-cnhtml
若是您參與的項目正在使用 Subversion 進行版本控制,您將須要使用 Subversion 訪問和更改項目源文件。您能夠點擊項目的左側導航窗格上的「Subversion」連接,在線瀏覽源代碼以查看該項目的目錄結構和文件。安全
「Subversion」頁面顯示三個子目錄:branches/、tags/、trunk/ 和一個自述文件。自述文件可使您對 Subversion 存儲庫有一個總體瞭解。您能夠點擊「訪問選項」,查看 Subversion 客戶端安裝說明。您的本地計算機上必須安裝有 Subversion 客戶端。併發
獲取項目的本地工做副本:svn checkout
編輯器
若要獲取最新源文件的「工做副本」,您必須首先簽出這些源文件,這一過程會將文件從存儲庫複製到您的系統中。在您的外殼程序或終端客戶端,請鍵入:svn
svn checkout https://(項目名稱).(域)/svn/(項目名稱)/(DIR) (項目名稱) --username [在此處輸入用戶名]
測試
當系統提示您時輸入您的用戶密碼。此密碼應與您在本站點中的用戶賬號的密碼相同。不指定目錄將簽出整個項目源代碼。您可能但願簽出「trunk/」目錄,由於此目錄具備工做「www/」文件夾。ui
轉換:--revision (-r) REV, --quiet (-q), --non-recursive (-N), --username USER, --password PASS, --no-auth-cache, --non-interactive, --config-dir DIR
編碼
注意:若是站點未啓用 SSL(安全套接字層),則在執行 Subversion 操做時,請使用 http
而不是 https
。例如,若要從項目的存儲庫中籤出最新的源代碼,請使用如下命令:命令行
svn checkout https://(項目名稱).(域)/svn/(項目名稱)/(DIR) (項目名稱) --username [在此處輸入用戶名]
從項目存儲庫中籤出本地副本後,您能夠在本地計算機上編輯現有文件、建立新文件和目錄、以及刪除文件。在您將所作的任何更改提交回 Subversion 存儲庫以前,這些更改只對項目文件的本地副本起做用。
將工做副本中的文件/目錄添加到存儲庫中:svn add
在您第一次在工做目錄中建立並編輯新文件後,能夠將此文件添加到存儲庫中,或添加一個目錄,目錄中有無內容都可。
svn add FILENAME/DIR
。
這樣就會在您的工做副本中添加文件/目錄,並安排它們以添加到存儲庫中。您下次提交時,會上載這些文件/目錄,並將它們添加到存儲庫中。若是您了添加內容,但在提交前又改變了主意,則可使用 svn revert
取消添加內容的安排。
轉換:--targets FILENAME, --non-recursive (-N), --quiet (-q), --config-dir arg, --auto-props, --no-auto-props
請參見添加文件/目錄示例。
查看帶有修訂和做者信息的特定文件的內容:svn blame
若要在線查看指定文件的做者和修訂信息,請鍵入:
svn blame FILENAME
每行文本的開始處都以上次更改該行的做者(用戶名)和修訂版本號做爲批註。
轉換:--revision (-r) REV, --username USER, --password PASS, --no-auth-cache, --non-interactive, --config-dir DIR
查看特定文件的內容:svn cat
有時,與存儲庫相比較,您的工做副本可能已過期;或者您可能已修改了本地工做副本。在這些狀況下,在提交更改或決定編輯您的工做副本以前,您會但願查看指定文件的內容差別。運行 svn cat FILENAME
將自動從存儲庫中取出 HEAD 修訂版本。這條子命令主要用於檢索具備較舊修訂版本號的文件,並將其顯示在屏幕上。經過在此站點上瀏覽項目源代碼,也能夠執行相同的操做。
轉換:--revision (-r) REV, --username USER, --password PASS, --no-auth-cache, --non-interactive, --config-dir DIR
清理工做副本:svn cleanup
有時可能會出現「工做副本已鎖定」錯誤。若要刪除鎖定,並遞歸清理工做副本,請使用 svn update
。
轉換:--diff3-cmd CMD, --config-dir DIR
請參見 svn cleanup
。
複製工做副本或存儲庫中的文件或目錄:svn copy
在項目中,您可能須要用到過去的舊文檔。例如,您可能想要使用一個已存在的 HTML 文件,使用其代碼做爲參考以在建立新內容時保持產品外觀和感受。建立文件時,您無需從頭開始,只需使用 svn copy
複製此文件,而後將其另存爲其它名稱並更改其內容。您能夠從存儲庫將文件複製爲本地工做副本,也能夠將本地工做副本複製回存儲庫文件。您還能夠在本地工做副本內部複製文件。Subversion 不支持在存儲庫之間進行復制。可以使用 svn copy SRC DST
完成此操做。
轉換:--message (-m) TEXT, --file (-F) FILE, --revision (-r) REV, --quiet (-q), --username USER, --password PASS, --no-auth-cache, --non-interactive, --force-log, --editor-cmd EDITOR, --encoding ENC, --config-dir DIR
請參見 svn copy
。
從本地工做副本中刪除文件或目錄:svn delete
您可能但願從本地工做副本中刪除不須要的文件。使用 svn delete FILENAME
可安排刪除文件。僅當您提交時,纔會在存儲庫中將該文件實際刪除。
轉換:--force, --force-log, --message (-m) TEXT, --file (-F) FILE, --quiet (-q), --targets FILENAME, --username USER, --password PASS, --no-auth-cache, --non-interactive, --editor-cmd EDITOR, --encoding ENC, --config-dir DIR
查看文件之間的差別:svn diff
可使用 svn diff
顯示工做副本中的指定文件相對於存儲庫中相應文件所作的本地修改。在命令提示符處,請鍵入:
svn diff (文件的路徑) (項目存儲庫的 URL)
例如,若要將本地修改後的文件「index.html」與項目存儲庫中的相應文件進行比較,請鍵入:
svn diff $SRC/...../index.html https://(項目名稱).(域)/svn/(項目名稱)/trunk (項目名稱) --username [在此處輸入用戶名]
除此以外,您也能夠轉到該文件所屬的目錄,並鍵入:
svn diff (FILENAME)
該命令將顯示差別,而且帶有修訂版本號。
轉換:--revision (-r) REV, --old OLD-TARGET, --new NEW-TARGET, --extensions (-x) "ARGS", --non-recursive (-N), --diff-cmd CMD, --notice-ancestry, --username USER, --password PASS, --no-auth-cache, --non-interactive, --no-diff-deleted, --config-dir DIR
在本地計算機上導出空目錄樹:svn export
在您的本地計算機上,能夠從項目存儲庫或本地工做副本內部提取一個無版本的副本,也稱爲空目錄樹。若要從存儲庫中得到較舊修訂版本的空目錄,請鍵入:
svn export [-r REV] [PATH]
該命令將從 URL 指定的存儲庫中的修訂版本 REV 位置(若是指定,不然從 HEAD 位置)將空目錄樹導出到 PATH。如省略 PATH,則該 URL 的最後一部分將用做本地目錄名稱。除此以外,您也能夠在本地計算機內部,從一個工做副本(由 PATH1 指定)向另外一工做副本(由 PATH2 指定)導出空目錄樹。這將保留全部的本地更改,但不會複製版本控制中的文件。若要執行此操做,請鍵入:
svn export PATH1 PATH2
轉換:--revision (-r) REV, --quiet (-q), --force, --username USER, --password PASS, --no-auth-cache, --non-interactive, --config-dir DIR
獲取有關 Subversion 的幫助:svn help
Subversion 能夠在命令行界面爲您提供幫助。若要得到有關特定子命令的幫助,請鍵入:
svn help [SUBCOMMAND...]
轉換:--version, --quiet (-q)
對文件和/或目錄進行本地更改後,您必須向 SVN 存儲庫提交這些更改。
提交您的更改:svn commit
若要向共享存儲庫提交您的更改,請鍵入:
svn commit -m "請在此處鍵入您的理由"
若是您不包括對該文件更改的描述,系統將提示您調用文件編輯器添加描述,而後 svn 才能完成提交操做;不然將會出現「提交失敗」錯誤。全部的提交都會被自動記錄,併發布到項目的提交討論中。
轉換:--message (-m) TEXT, --file (-F) FILE, --quiet (-q), --non-recursive (-N), --targets FILENAME, --force-log, --username USER, --password PASS, --no-auth-cache, --non-interactive, --encoding ENC, --config-dir DIR
請參見提交您的更改、editor-cmd。
將無版本的文件或樹導入到項目存儲庫中:svn import
您可使用 svn import
將無版本的文件或樹遞歸提交到項目存儲庫中。將根據須要在存儲庫中建立父目錄。使用下面的命令能夠從 PATH 向 URL 遞歸提交副本。若是省略 PATH,將認爲其爲「.」。
svn import [PATH] URL
示例:若要在您的本地計算機上建立帶有一個文件的無版本目錄 (D)。請點擊項目左側導航窗格中的「Subversion」連接,找到 Subversion 頁面。請注意,「瀏覽源代碼」下未列出 NEWDIR。若要將 D 導入項目存儲庫,請鍵入:
svn import -m "請在此處鍵入您的信息" D http://(項目名稱).(域)/svn/(項目名稱)/NEWDIR
刷新該頁面。請注意,此時「瀏覽源代碼」下列出了 D。點擊 D 查看該文件。
轉換:--message (-m) TEXT, --file (-F) FILE, --quiet (-q), --non-recursive (-N), --username USER, --password PASS, --no-auth-cache, --non-interactive, --force-log, --editor-cmd EDITOR, --encoding ENC, --config-dir DIR, --auto-props, --no-auto-props
打印有關工做副本中路徑的信息:svn info
有時,您將須要有關工做副本中文件的具體信息,以執行某些子命令。鍵入 svn info
,將打印出詳盡且有用的信息,這些信息涉及工做副本中的工做副本路徑中的項,其中包括:路徑、名稱、URL、修訂版本、節點類型、上次更改、做者、上次更改修訂版本、上次更改日期、上次更新的文本、上次更新的屬性以及校驗和。
轉換:--targets FILENAME, --recursive (-R), --config-dir DIR
查看存儲庫中的目錄項列表:svn list
在開始處理項目或取出「工做副本」以前,您可能但願查看項目存儲庫中的內容(即目錄和文件),或查看本地工做副本中的目錄項。在命令提示符處鍵入 svn list [TARGET...]
,也能夠查看這些內容。除此以外,您也能夠找到項目中的「軟件配置管理」頁,查看項目存儲庫。
轉換:--revision (-r) REV, --verbose (-v), --recursive (-R), --username USER, --password PASS, --no-auth-cache, --non-interactive, --config-dir DIR
查看提交日誌信息:svn log
若是要查看「工做副本」或存儲庫中文件/目錄的各個文件/目錄歷史,以跟蹤修訂信息,請鍵入:
svn log [PATH]
該命令會顯示出文件/目錄的修訂信息,從最近所作的修訂版本開始顯示提交信息和做者姓名等信息。除此以外,您也可使用該站點,查看項目存儲庫中各個文件的提交日誌信息。請點擊項目左側導航窗格中的「Subversion」連接。將出現 Subversion 頁。搜索「瀏覽源代碼」的目錄中的文件,而後點擊文件名。這時將會顯示一個提交日誌信息頁面。
轉換:--revision (-r) REV, --quiet (-q), --verbose (-v), --targets FILENAME, --stop-on-copy, --incremental, --xml, --username USER, --password PASS, --no-auth-cache, --non-interactive, --config-dir DIR
請參見 svn log
。
合併更改:svn merge
您能夠運行 svn merge
命令,以指示 Subversion 將存儲庫中最新版本的文件合併到您的工做副本中。
轉換:--revision (-r) REV, --non-recursive (-N), --quiet (-q), --force, --dry-run, --diff3-cmd CMD, --ignore-ancestry, --username USER, --password PASS, --no-auth-cache, --non-interactive, --config-dir DIR
請參見 svn merge
、解決衝突(合併其餘人的更改)、分支和合並:常見合併使用案例、合併最佳實踐。
建立新目錄:svn mkdir
若要在您的工做副本中建立新目錄,請鍵入:
svn mkdir PATH
若要在您的項目存儲庫中建立新目錄,請鍵入:
svn mkdir URL
PATH 或 URL 的最後一部分決定目錄名稱。在當即提交時在存儲庫中建立目錄,因此還須要一條提交信息
轉換:--message (-m) TEXT, --file (-F) FILE, --quiet (-q), --username USER, --password PASS, --no-auth-cache, --non-interactive, --editor-cmd EDITOR, --encoding ENC, --force-log, --config-dir DIR
移動文件或目錄:svn move
您可使用 svn move SRC DST
在工做副本或項目存儲庫內部移動文件或目錄。此命令等效於在使用 svn copy
後,再使用 svn delete
。在工做副本內部移動文件或目錄,不只會移動該文件或目錄,並且還將安排它以便於下次提交時進行添加。在項目存儲庫內部移動文件或目錄屬於封閉單元式提交,因此須要一條提交信息。
轉換:--message (-m) TEXT, --file (-F) FILE, --revision (-r) REV, --quiet (-q), --force, --username USER, --password PASS, --no-auth-cache, --non-interactive, --editor-cmd EDITOR, --encoding ENC, --force-log, --config-dir DIR
使用屬性
Subversion 具備不少具體屬性,這些屬性影響或決定其行爲。您能夠修改、提交和撤消屬性更改,就像對文件內容所執行的操做同樣。您還能夠從本地工做副本或項目存儲庫的文件、目錄或修訂版本中,刪除、編輯、打印、列出以及設置屬性。
請參見 屬性、無版本屬性、元數據屬性、svn propdel
、svn propedit
、svn propget
、svn proplist
、svn propset
、Hook 腳本。
解決衝突:svn resolved
更新本地工做副本時,可能會遇到衝突。您須要解決此衝突。解決衝突後,鍵入 svn resolved PATH...
,通知工做副本該衝突已「解決」。
轉換:--targets FILENAME, --recursive (-R), --quiet (-q), --config-dir DIR
請參見解決衝突(合併其餘人的更改)。
撤消您的更改:svn revert
使用 Subversion 時,您會發現 svn revert PATH...
等效於 Windows 中的 Ctrl Z
。您能夠:
注意,如不提供目標,會致使工做副本中的更改丟失。
轉換:--targets FILENAME, --recursive (-R), --quiet (-q), --config-dir DIR
獲取文件/目錄的狀態:svn status
在版本控制中,將更改提交到項目存儲庫以前最好對其進行審查。能夠運行 svn status
打印工做副本中的文件和目錄的狀態。打印結果爲八列編碼輸出。因爲每列都有詳盡的圖例,若要今後輸出中得出「無錯誤」的結論幾乎不可能。若要使此任務更加簡單,並同時可看到示例,請在命令提示符處鍵入 svn help status
。
轉換:--show-updates (-u), --verbose (-v), --non-recursive (-N), --quiet (-q), --no-ignore, --username USER, --password PASS, --no-auth-cache, --non-interactive, --config-dir
請參見檢查你的更改。
轉換工做副本:svn switch
可使用 svn switch URL [PATH]
更新工做副本,以鏡像新的 URL。您還能夠將工做副本或部分工做副本移動到新的分支。您能夠將此子命令用做分支的快捷方式。
轉換:--revision (-r) REV, --non-recursive (-N), --quiet (-q), --diff3-cmd CMD, --relocate, --username USER, --password PASS, --no-auth-cache, --non-interactive, --config-dir DIR
請參見轉換工做副本、分支和合並以及 svn switch
。
更新工做副本:svn update
爲了進行更好的版本控制,建議您天天用項目存儲庫更新本地工做副本,請使用:
svn update [PATH...]
列出的已更新條目以及它們的當前狀態顯示以下:
轉換:--revision (-r) REV, --non-recursive (-N), --quiet (-q), --diff3-cmd CMD, --username USER, --password PASS, --no-auth-cache, --non-interactive, --config-dir DIR
分支和標記
項目的主幹一般用做開發主線,而分支一般用做主線的變動。分支是正在進行的開發線。在軟件開發生命週期中,若是軟件產品的發佈版本已到期,常常 會用到分支,使測試者可使用候選版本,使新的開發能夠繼續進行,不受測試的約束。分支還用於實驗性工做,以及完成代碼重寫。標記是將一組文件修訂版本標 記爲總體的方式。雖然分支和標記都是使用 svn copy
子命令建立的,但它們是徹底不一樣的。分支表示多個修訂版本而標記只表示單個修訂版本。
本站點上您項目的 Subversion 存儲庫支持對您的源文件進行分支和標記。對於 Subversion 來講,標記和分支屬於簡單實用的「複製」操做。
若要建立分支或標記項目文件,請鍵入:
svn copy SRC DST -m "在此處鍵入您的信息"
請參見分支和合並。