?
This document uses PHP Chinese website manual Release
git-cvsimport - 將您的數(shù)據(jù)從另一個人們喜歡討厭的 SCM 中拯救出來
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 <commitlimit>] [-r <remote>] [-R] [<CVS_module>]
警告: git cvsimport
使用 cvsps 版本2,這被視為棄用; 它不適用于 cvsps 版本3和更高版本。如果您正在執(zhí)行 CVS 存儲庫的一次性導(dǎo)入,請考慮使用cvs2git或cvs-fast-export。
將 CVS 存儲庫導(dǎo)入 Git。它將創(chuàng)建一個新的存儲庫,或者增量導(dǎo)入到現(xiàn)有的存儲庫中。
將 CVS 日志分割成補(bǔ)丁集是由cvsps
。至少需要2.1版本。
警告:對于某些情況下導(dǎo)入導(dǎo)致不正確的結(jié)果。請參閱“問題”一節(jié)以作進(jìn)一步參考。
你應(yīng)該永遠(yuǎn)不會做由創(chuàng)建的分支自己的任何工作git cvsimport
。默認(rèn)情況下,初始導(dǎo)入將創(chuàng)建并填充
CVS 存儲庫的主分支的“主”分支,您可以自由使用該分支; 之后,您需要git merge
自行增量導(dǎo)入或任何 CVS 分支。建議通過-r指定一個命名的遠(yuǎn)程來分隔和保護(hù)傳入的分支。
如果您打算建立一個所有開發(fā)人員都可以讀/寫的共享公共存儲庫,或者如果您想使用 git-cvsserver [1],那么您可能想要對導(dǎo)入的存儲庫進(jìn)行裸克隆,并將克隆用作共享存儲庫。請參閱 gitcvs-migration [7]。
-v
詳細(xì)程度:讓我們cvsimport
報告它在做什么。
-d <CVSROOT>
CVS 存檔的根??赡苁潜镜兀ê唵温窂剑┗蜻h(yuǎn)程; 目前,僅支持:local :,:ext:和:pserver:訪問方法。如果沒有給出,git cvsimport
將嘗試讀取它CVS/Root
。如果不存在這樣的文件,它檢查CVSROOT
環(huán)境變量。
<CVS_module>
您要導(dǎo)入的 CVS 模塊。相對于<CVSROOT>。如果沒有給出,git cvsimport
嘗試從CVS/Repository
讀取它。
-C <target-dir>
要導(dǎo)入到的 Git 存儲庫。如果該目錄不存在,它將被創(chuàng)建。默認(rèn)是當(dāng)前目錄。
-r <remote>
將此 CVS 存儲庫導(dǎo)入到遠(yuǎn)程的 Git。類似于默認(rèn)使用origin
的git clone
方式,將所有 CVS 分支移動到遠(yuǎn)程/ <遠(yuǎn)程> / <分支>中。
-o <branch-for-HEAD>
如果沒有指定 remote(通過-r),則 CVS 的HEAD
分支將被導(dǎo)入到 Git 存儲庫中的origin
分支中,因為HEAD
已經(jīng)對 Git 有特殊意義。當(dāng)指定遠(yuǎn)程時,HEAD
分支命名為遠(yuǎn)程/遠(yuǎn)程/主鏡像git clone
行為。如果要導(dǎo)入到其他分支,請使用此選項。
使用-o master
繼續(xù),最初由舊的 cvs2git 工具進(jìn)行導(dǎo)入。
-i
僅導(dǎo)入:導(dǎo)入后不要執(zhí)行檢出切換。這個選項確保工作目錄和索引保持不變,如果它們不存在,將不會創(chuàng)建它們。
-k
殺死關(guān)鍵字:將-kk
文件從 CVS 存檔中提取,以避免噪音變化集。強(qiáng)烈建議,但默認(rèn)關(guān)閉以保持與早期導(dǎo)入樹的兼容性。
-u
將標(biāo)記和分支名稱中的下劃線轉(zhuǎn)換為點。
-s <subst>
用<subst>替換分支名稱中的字符“/”
-p <options-for-cvsps>
cvsps 的其他選項。選項-u
和-A
是隱式的,不應(yīng)該用在這里。
如果您需要傳遞多個選項,請用逗號分隔它們。
-z <fuzz>
以秒為單位將時間戳模糊因子傳遞給 cvsps。如果未設(shè)置,則 cvsps 默認(rèn)為300秒。
-P <cvsps-output-file>
不要調(diào)用 cvsps,請閱讀提供的 cvsps 輸出文件。用于調(diào)試或在 cvsimport 之外處理cvsps時使用。
-m
嘗試根據(jù)提交消息檢測合并。此選項將啟用試圖從提交消息中捕獲源分支名稱的默認(rèn)正則表達(dá)式。
-M <regex>
嘗試使用自定義正則表達(dá)式檢測基于提交消息的合并。它也可以用來-m
啟用默認(rèn)的正則表達(dá)式。你必須逃避正斜杠。
正則表達(dá)式必須在$ 1中捕獲源分支名稱。
該選項可以多次使用以提供多個檢測正則表達(dá)式。
-S <regex>
跳過與正則表達(dá)式匹配的路徑。
-a
導(dǎo)入所有提交,包括最近的提交。默認(rèn)情況下,cvsimport會跳過時間小于10分鐘前的提交。
-L <limit>
限制導(dǎo)入的提交數(shù)量。解決 cvsimport 泄漏內(nèi)存的問題。
-A <author-conv-file>
默認(rèn)情況下,CVS 在編寫提交日志時使用 Unix 用戶名。使用此選項和 author-conv-file 將在 CVS 中記錄的名稱映射到作者姓名,電子郵件和可選時區(qū):
exon=Andreas Ericsson <ae@op5.se> spawn=Simon Pawn <spawn@frog-pond.org> America/Chicago
git cvsimport
將使其顯示為這些作者始終正確設(shè)置了其 GIT_AUTHOR_NAME和GIT_AUTHOR_EMAIL。如果指定了時區(qū),則
GIT_AUTHOR_DATE 將應(yīng)用相應(yīng)的偏移量。
為方便起見,每次-A
提供選項時都會保存此數(shù)據(jù)到$GIT_DIR/cvs-authors
,并且每次git cvsimport
運(yùn)行時都會從同一文件中讀取。
如果您打算稍后使用git cvsexportcommit
再將更改導(dǎo)出回 CVS,則不推薦使用此功能。
-R
生成$GIT_DIR/cvs-revisions
包含從 CVS 修訂號到新創(chuàng)建的 Git 提交 ID 的映射的文件。生成的文件將為導(dǎo)入的每個(文件名,修訂版)對包含一行; 每一行看起來像
src/widget.c 1.1 1d862f173cdc7325b6fa6d2ae1cfd61fd1b512b7
如果修訂數(shù)據(jù)已經(jīng)存在,則修改數(shù)據(jù)會附加到該文件,以便在執(zhí)行增量導(dǎo)入時使用。
如果您將 CVS 修訂號存儲在提交消息,錯誤跟蹤系統(tǒng),電子郵件存檔等中,則此選項可能很有用。
-h
打印一條簡短的使用信息并退出。
如果-v
指定,腳本報告它正在做什么。
否則,成功表示為 Unix 方式,即通過簡單地以零退出狀態(tài)退出。
與時間戳有關(guān)的問題:
如果 CVS 存儲庫中的提交時間戳不夠穩(wěn)定,無法用于排序提交,則更改可能以錯誤的順序顯示。
如果有任何文件曾多次“cvs import”編輯過(例如,導(dǎo)入多個供應(yīng)商版本),則 HEAD 包含錯誤的內(nèi)容。
如果不同文件的時間戳順序在提交匹配時間窗口內(nèi)與修訂訂單相交,提交順序可能是錯誤的。與分支有關(guān)的問題:
未提交任何提交的分支未導(dǎo)入。
即使從未添加到CVS中,分支點中的所有文件也會添加到分支中。
這適用于創(chuàng)建子分支后添加到源分支的文件:如果先前沒有對子分支進(jìn)行提交,它們將錯誤地添加到 git 中的子分支中。
與標(biāo)簽相關(guān)的問題:
不會導(dǎo)入同一修訂版中的多個標(biāo)記。如果您懷疑這些問題中的任何一個可能適用于要導(dǎo)入的存儲庫,請考慮使用 cvs2git:
cvs2git (part of cvs2svn), http://subversion.apache.org/