設定和配置
獲取和建立專案
基本快照
分支與合併
共享和更新專案
檢查和比較
打補丁
除錯
電子郵件
外部系統
伺服器管理
指南
管理
底層命令
- 2.43.2 → 2.52.0 無更改
-
2.43.1
2024-02-09
- 2.35.1 → 2.43.0 無更改
-
2.35.0
2022-01-24
- 2.11.4 → 2.34.8 無更改
-
2.10.5
2017-09-22
-
2.9.5
2017-07-30
- 2.3.10 → 2.8.6 無更改
-
2.2.3
2015-09-04
- 2.1.4 無更改
-
2.0.5
2014-12-17
概要
git cvsimport [-o <branch-for-HEAD>] [-h] [-v] [-d <CVSROOT>] [-A <author-conv-file>] [-p <options-for-cvsps>] [-P <file>] [-C <git-repository>] [-z <fuzz>] [-i] [-k] [-u] [-s <subst>] [-a] [-m] [-M <regex>] [-S <regex>] [-L <commit-limit>] [-r <remote>] [-R] [<CVS-module>]
描述
警告: git cvsimport 使用 cvsps 版本 2,該版本被認為是過時的;它不適用於 cvsps 版本 3 及更高版本。如果你正在進行一次性的 CVS 儲存庫匯入,請考慮使用 cvs2git 或 cvs-fast-export。
將 CVS 儲存庫匯入 Git。它將建立一個新儲存庫,或以增量方式匯入到現有儲存庫中。
將 CVS 日誌分割成補丁集由 cvsps 完成。至少需要版本 2.1。
警告: 在某些情況下,匯入會導致不正確的結果。請參閱 問題 部分以獲取進一步參考。
你 **永遠不應該** 在 git cvsimport 建立的分支上進行任何自己的工作。預設情況下,初始匯入將從 CVS 儲存庫的主分支建立並填充一個“master”分支,你可以自由地在此分支上工作;之後,你需要自己 git merge 增量匯入或任何 CVS 分支。建議透過 -r 指定一個命名遠端,以區分和保護傳入的分支。
如果你打算設定一個所有開發人員都可以讀/寫的共享公共儲存庫,或者你想使用 git-cvsserver[1],那麼你可能想做一個匯入儲存庫的裸克隆,並使用該克隆作為共享儲存庫。參見 gitcvs-migration[7]。
選項
- -v
-
詳細程度:讓 cvsimport 報告它正在做什麼。
- -d <CVSROOT>
-
CVS 存檔的根目錄。可以是本地的(一個簡單的路徑)或遠端的;目前,只支援 :local:, :ext: 和 :pserver: 訪問方法。如果未給出,git cvsimport 將嘗試從
CVS/Root讀取。如果不存在這樣的檔案,它會檢查CVSROOT環境變數。 - <CVS-module>
-
你想要匯入的 CVS 模組。相對於 <CVSROOT>。如果未給出,git cvsimport 嘗試從
CVS/Repository讀取。 - -C <target-dir>
-
要匯入到的 Git 儲存庫。如果目錄不存在,它將被建立。預設為當前目錄。
- -r <remote>
-
要將此 CVS 儲存庫匯入到的 Git 遠端。將所有 CVS 分支移動到 remotes/<remote>/<branch>,類似於 git clone 預設使用 origin 的方式。
- -o <branch-for-HEAD>
-
當沒有指定遠端(透過 -r)時,CVS 的
HEAD分支被匯入到 Git 儲存庫內的 origin 分支,因為HEAD對於 Git 已經有特殊含義。當指定了遠端時,HEAD分支被命名為 remotes/<remote>/master,映象 git clone 的行為。如果你想匯入到不同的分支,請使用此選項。使用 -o master 繼續最初由舊的 cvs2git 工具進行的匯入。
- -i
-
僅匯入:匯入後不執行簽出。此選項確保工作目錄和索引保持不變,如果它們不存在,也不會建立它們。
- -k
-
刪除關鍵字:將從 CVS 存檔中提取 -kk 檔案,以避免不必要的更改集。強烈推薦,但預設關閉以保持與早期匯入樹的相容性。
- -u
-
將標籤和分支名稱中的下劃線轉換為點。
- -s <subst>
-
將分支名稱中的字元 "/" 替換為 <subst>。
- -p <options-for-cvsps>
-
cvsps 的附加選項。選項 -u 和 -A 是隱式的,不應在此處使用。
如果你需要傳遞多個選項,請用逗號分隔它們。
- -z <fuzz>
-
將時間戳模糊因子(以秒為單位)傳遞給 cvsps。如果未設定,cvsps 預設為 300 秒。
- -P <cvsps-output-file>
-
不呼叫 cvsps,而是讀取提供的 cvsps 輸出檔案。用於除錯或當 cvsps 由 cvsimport 外部處理時。
- -m
-
嘗試根據提交訊息檢測合併。此選項將啟用預設的正則表示式,這些正則表示式會嘗試從提交訊息中捕獲源分支名稱。
- -M <regex>
-
嘗試根據提交訊息和自定義正則表示式檢測合併。它也可以與
-m一起使用以啟用預設的正則表示式。你必須轉義斜槓。正則表示式必須捕獲源分支名稱在 $1 中。
此選項可以多次使用以提供多個檢測正則表示式。
- -S <regex>
-
跳過與正則表示式匹配的路徑。
- -a
-
匯入所有提交,包括最近的提交。cvsimport 預設會跳過時間戳在 10 分鐘前的提交。
- -L <limit>
-
限制匯入的提交數量。用於解決 cvsimport 記憶體洩漏的情況。
- -A <author-conv-file>
-
CVS 預設在寫入其提交日誌時使用 Unix 使用者名稱。使用此選項和一個 author-conv-file 將 CVS 中記錄的名稱對映到作者姓名、電子郵件和可選的時區。
exon=Andreas Ericsson <ae@op5.se> spawn=Simon Pawn <spawn@frog-pond.org> America/Chicago
git cvsimport 將使其看起來好像這些作者一直設定了正確的 GIT_AUTHOR_NAME 和 GIT_AUTHOR_EMAIL。如果指定了時區,GIT_AUTHOR_DATE 將應用相應的偏移量。
為方便起見,每次提供 -A 選項時,這些資料都會儲存到
$GIT_DIR/cvs-authors,並且每次執行 git cvsimport 時都會從該檔案中讀取。如果你打算稍後使用 git cvsexportcommit 將更改匯出回 CVS,則不建議使用此功能。
- -R
-
生成一個
$GIT_DIR/cvs-revisions檔案,其中包含從 CVS 修訂號到新建立的 Git 提交 ID 的對映。生成的檔案將包含每個(檔名,修訂號)對的匯入行;每行看起來像src/widget.c 1.1 1d862f173cdc7325b6fa6d2ae1cfd61fd1b512b7
如果檔案已存在,則將修訂資料追加到該檔案中,用於進行增量匯入。
如果你在提交訊息、錯誤跟蹤系統、電子郵件存檔等中儲存了 CVS 修訂號,此選項可能很有用。
- -h
-
列印一個簡短的用法訊息並退出。
問題
與時間戳相關的問題
-
如果 CVS 儲存庫中的提交時間戳不夠穩定,無法用於排序提交,則更改可能會以錯誤的順序顯示。
-
如果任何檔案曾被“cvs import”超過一次(例如,匯入多個供應商釋出),則 HEAD 包含錯誤的內容。
-
如果不同檔案的順序時間戳交叉了提交匹配時間視窗內的修訂順序,則提交的順序可能錯誤。
與分支相關的問題
-
未提交任何提交的分支不會被匯入。
-
來自分支點的所有檔案都會新增到分支,即使它們從未在 CVS 中新增。
-
這適用於在建立子分支 **之後** 新增到源分支的檔案:如果之前在子分支上沒有進行任何提交,它們將錯誤地新增到 Git 中的子分支。
與標籤相關的問題
-
同一修訂上的多個標籤不會被匯入。
如果你懷疑這些問題中的任何一個可能適用於你想匯入的儲存庫,請考慮使用 cvs2git。
-
cvs2git (cvs2svn 的一部分),
https://subversion.apache.org/