設定和配置
獲取和建立專案
基本快照
分支與合併
共享和更新專案
檢查和比較
打補丁
除錯
電子郵件
外部系統
伺服器管理
指南
管理
底層命令
- 2.43.2 → 2.50.1 無更改
-
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 版本。
警告: 對於某些情況,匯入會導致不正確的結果。請參閱 ISSUES 部分以獲取更多參考。
你絕不應該在 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
-
殺死關鍵字:將使用 -kk 從 CVS 歸檔中提取檔案,以避免嘈雜的變更集。強烈推薦,但預設關閉以保留與早期匯入樹的相容性。
- -u
-
將標籤和分支名稱中的下劃線轉換為點。
- -s <subst>
-
將分支名稱中的字元 "/" 替換為 <subst>。
- -p <options-for-cvsps>
-
cvsps 的附加選項。選項
-u
和 -A 是隱式的,不應在此處使用。如果你需要傳遞多個選項,請用逗號分隔它們。
- -z <fuzz>
-
將時間戳模糊因子(以秒為單位)傳遞給 cvsps。如果未設定,cvsps 預設為 300s。
- -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/