2011-04-01 51 views
1

我們在SVN存儲庫中維護較大的代碼庫。 對於發行版,我們只想將發佈標籤/分支推送到Mercurial存儲庫中,不包括中繼中的歷史記錄。具有部分歷史的Mercurial工作流的單向增量SVN

我幾乎沒有DVCS的經驗,所以也許我在錯誤的軌道上與我嘗試過。如果你能指出缺陷或指向替代品,我會非常高興。

這裏是我試過到目前爲止:

  • 汞柱轉換擴展:翻新使用hg convert <base project URL w/o "trunk">應該拉完整的歷史記錄,包括根據the convert extension documentation分支和標籤的完整的信息庫。但hg tags只返回提示默認,hg branches只有默認。此外,它很慢(是的,我讀了約svnsync),它包括完整的歷史。我讀到它可以用來逐步拉動,但我沒有看到爲我工作。

  • 汞柱轉換擴展:轉換標籤,並從另一個標籤拉動工程W/-f但我真的不相信它。它是否正確處理刪除?

  • hgsubversionhg clone完整的資料庫中不包括標籤和分支以及

  • hgsubversion:在標籤上的作品hg clone,但隨後從另一個標籤拉動是不可能的(中止:無法在存儲庫中的不同路徑上工作

在此先感謝指針。 「Noob,先閱讀並稍後回來」也很感激。

+0

也許是一個非現場問題,但你能解釋一下爲什麼你想要實現這樣的事情嗎?這對我來說似乎很奇怪。 – gizmo 2011-04-01 09:03:46

+0

@gizmo是的,這很奇怪:我們在我們的網站上使用svn,現在不想爲整個團隊切換到hg。 (緊張的時間表,沒有太多的時間進行再教育,分散的團隊,通常的藉口) 我們將代碼交付給客戶的持續集成環境,該環境使用hg作爲VCS。我們不希望推送完整的歷史記錄,而只會將定義的發佈基準推送到此存儲庫。 此環境只能通過我們有權訪問的客戶機器的VPN訪問。所以這個過程是:在開發過程中與SVN一起工作,從VPN機器上的SVN獲得釋放並推入到hg中。 – wwerner 2011-04-01 09:21:13

回答

0

回答我自己的問題:我找到了一種方法來實現我所需要的。

假設我們到了我要救我的底線空汞庫,我想補充一個.hgignore文件過濾所有的svn元數據:

syntax glob 
.svn 

然後我執行以下操作:

  1. svn co <tag url> .
  2. hg addremove
  3. hg commit -m"pulled rev. <tag>"
  4. hg tag <tag>

對於後續版本我做的:

  1. svn switch <tag url> .
  2. hg addremovehg commit & hg tag如上

這讓我有版本之間來回切換的可能性在我的hg倉庫中,我有一個hist在基線之間更改文件,但不在svn提交級別。

對此的評論? 謝謝。