2013-03-04 92 views
0

我對perl瞭解不多,而且遇到麻煩,添加了git-cvsexportcommit.perl功能來添加在切換到cvs時在git項目上創建的新文件。我總是得到一個錯誤,如Git cvsexportcommit並添加新文件

cvs status: nothing known about `private/includes/suiviAnnuelpdf.php' 
Huh? Status 'Unknown' reported for unexpected file 'no file suiviAnnuelpdf.php' 

你有什麼想法嗎?

感謝

+0

我相信'git-cvsexportcommit'中有一個錯誤。 '狀態'未知'和'無文件...'不應該並排出現。解析這些行的代碼失敗。 – daveloyall 2013-09-18 16:39:10

+0

具體來說,我認爲如果m/^ create mode [0-7] +(。*)$ /;'不會匹配任何內容,那麼'push(@ afiles,$ 1)行......因此最終會出現「Unknown」 *和*「無文件」,當這些應該是互斥狀態。在上面的註釋中,「那些行」應該是「git-apply的輸出」或「git-diff-tree的輸出」。 (我不知道哪一個,我不是一個perl人。) – daveloyall 2013-09-18 16:58:07

回答

0

我不知道,如果你找到了一個解決方案,但我只是一直在做這一點,並遇到了類似的問題(我的是前一個Git遷移執行,我已經從CVS中刪除的文件)。問題是我沒有對我的Git repo進行任何更改,所以cvsexportcommit試圖重播最後一次刪除此文件的更改。 CVS抱怨說它對該文件一無所知(我也刪除了它)。

爲了將來的參考,這是我剛纔用來從Git倉庫發送提交到CVS的一個提交。您需要準備好一個CVS沙盒,我將打電話給foo-CVS以及我將撥打foo的git回購。

cd /tmp 
cvs co -d foo-CVS foo 
git clone /my/foo.git 
cd foo 
<DO THE CHANGE on file.txt> 
git add file.txt 
git commit file.txt 
git cvsexportcommit -w ../foo-CVS -v -u HEAD 
cd ../foo-CVS 
cvs commit -F .msg file.txt 

該命令也可以做承諾爲你很好,但我覺得更好的閱讀,直到我完全信任的過程中有什麼變化正在進入CVS的時刻。