簡體   English   中英

我可以讓git-svn導入一個本身包含git存儲庫的Subversion存儲庫嗎?

[英]Can I make git-svn import a Subversion repository which itself contains git repositories

我在SVN中有一個帶有plugins文件夾的項目。 幾個plugins文件夾是git存儲庫-我使用git clone將它們添加到了我的plugins文件夾中。

這對我來說一直很好,但是現在我希望使用git-svn將SVN存儲庫遷移到git:

git svn init http://path/to/my/repo --no-metadata 
git config svn.authorsfile ~/authors.txt
git svn fetch

這對於我所有在我的plugins文件夾中沒有git repos的早期版本都可以正常工作,但是當它到達包含git存儲庫的第一個版本時,它將失敗並顯示以下錯誤:

trunk/plugins/my_plugin/.git/HEAD was not found in commit 
ae9ad0ab7cebd144c823d90d43cdab2b30d13f9e (r2259)

有沒有辦法解決這個問題,讓我完全導入我的存儲庫,也許是通過排除駐留在SVN存儲庫中的任何.git文件夾?

事實證明,我在Ubuntu上使用git-svn 1.5,而在git-svn fetch上不支持--ignore-paths標志。 從源代碼構建git 1.6之后,我現在可以運行:

git svn fetch --ignore-paths='\.git'

現在,提取操作將忽略所有.git文件夾,並將所有SVN歷史記錄成功導入到我的新git存儲庫中。

您可以轉儲當前的svn庫, 過濾掉.git目錄,並基於此過濾的轉儲創建另一個svn庫,並將此新庫用作git庫的基礎。

並行使用git和svn可能很有趣 -您必須用新的gitless替換現有的repo,而缺少的.git目錄可能會帶來麻煩。

我沒有嘗試過,所以您要小心,並要備份。

由於Git的工作方式,擁有多個.git文件夾會給您帶來麻煩(嗯,您已經知道了)。

您有2種選擇:-如果您不關心故事,請采用簡單的方法:從svn中刪除.git文件夾,然后將git移至整個項目

  • 如果您在講故事,請用困難的方法:檢查此鏈接並按照步驟進行

我知道我的團隊負責人對此有一些問題,但是確實有效。

編輯:我忘了提另一種方式:您可能會使用Bazaar來拉該項目,因為它與兩者交互。 不確定是否會更容易

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM