使用命令行 Subversion 訪問項目源文件(SVN)

from:http://www.open.collab.net/scdocs/ddUsingSVN_command-line.html.zh-cnhtml

命令行 Subversion 入門

若是您參與的項目正在使用 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編碼

請參見基本工做週期初始簽出工做副本.net

注意:若是站點未啓用 SSL(安全套接字層),則在執行 Subversion 操做時,請使用 http 而不是 https。例如,若要從項目的存儲庫中籤出最新的源代碼,請使用如下命令:命令行

svn checkout https://(項目名稱).(域)/svn/(項目名稱)/(DIR) (項目名稱) --username [在此處輸入用戶名]

處理 Subversion 存儲庫中的文件

從項目存儲庫中籤出本地副本後,您能夠在本地計算機上編輯現有文件、建立新文件和目錄、以及刪除文件。在您將所作的任何更改提交回 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 diff

在本地計算機上導出空目錄樹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 存儲庫提交這些更改。

提交您的更改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 propdelsvn propeditsvn propgetsvn proplistsvn propsetHook 腳本

解決衝突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...]

列出的已更新條目以及它們的當前狀態顯示以下:

  • A = 已將一個文件添加到您的工做副本中。
  • U = 已更新您的工做副本中的一個文件。
  • D = 已從您的工做副本中刪除一個文件。
  • R = 已替換您的工做副本中的一個文件。
  • G = 已成功合併了一個文件。
  • C = 一個文件已合併了必須手動解決的衝突

轉換:--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 "在此處鍵入您的信息"

請參見分支和合並

相關文章
相關標籤/搜索