SVN 相關命名腳本


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

    * 幫助索引

    * 關於使用軟件配置管理 (Subversion) 進行源代碼版本控制
          o 使用命令行 svn 訪問項目源文件
                + Subversion 入門
                + 處理 SVN 存儲庫中的文件
                + 將您的更改提供給 SVN 存儲庫
                + 使用存儲庫

命令行 Subversion 入門

如果您參與的項目正在使用 Subversion 進行版本控制,您將需要使用 Subversion 訪問和更改項目源文件。您可以點擊項目的左側導航窗格上的“Subversion”鏈接,在線瀏覽源代碼以查看該項目的目錄結構和文件。

“Subversion”頁面顯示三個子目錄:branches/、tags/、trunk/ 和一個自述文件。自述文件可以使您對 Subversion 存儲庫有一個整體瞭解。您可以點擊“訪問選項”,查看 Subversion 客戶端安裝說明。您的本地計算機上必須安裝有 Subversion 客戶端。

獲取項目的本地工作副本:svn checkout

若要獲取最新源文件的“工作副本”,您必須首先簽出這些源文件,這一過程會將文件從存儲庫複製到您的系統中。在您的外殼程序或終端客戶端,請鍵入:
svn checkout https://(項目名稱).(域)/svn/(項目名稱)/(DIR) (項目名稱) --username [在此處輸入用戶名]

當系統提示您時輸入您的用戶密碼。此密碼應與您在本站點中的用戶帳號的密碼相同。不指定目錄將簽出整個項目源代碼。您可能希望簽出“trunk/”目錄,因爲此目錄具有工作“www/”文件夾。
轉換:--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 存儲庫中的文件

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

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

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

請參見分支和合並。
相關信息

    * open.collab.net 上的 Subversion

頁首

發佈了10 篇原創文章 · 獲贊 1 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章