簡體   English   中英

“Hg到Hg(Gateway)到SVN”與“Git to Git(Gateway)到SVN”相比

[英]“Hg to Hg (Gateway) to SVN” compared to “Git to Git (Gateway) to SVN”

問題類似於 (未答復)和問題(同樣的問題不涉及Git)。

我們的目標是使Hg為SVN前端一段時間完全過渡到汞之前。

設置可能看起來如下所示(與上面提到的問題相同),但是我不確定中間Hg存儲庫的確切拓撲。

Dev1 Hg --> Hg <--> SVN
Dev2 Hg -/

我知道上面的設置適用於gitgit-svn ,如本評論中所述

Dev1 Git --> Git (bare) <--> Git (bridge) <--> SVN
Dev2 Git -/

建立:

  1. 無論是git svn init ,還是git svn clone SVN repo。 然后它成為“Git / SVN Bridge”。

  2. 修復任何分支,標簽等...這里。 svn/* refs被認為是遙控器,所以如果你想跟蹤分支,請檢查這些遙控器並創建適當的本地分支。 另外,檢查標簽,並創建實際標簽。 您必須為要在Git和SVN之間同步的任何SVN分支創建本地分支。

  3. 現在,在某處創建一個新的裸存儲庫( git init ),並從橋中將所有分支git push –tags裸存儲庫( git push –tags )。

  4. 所有Git用戶現在克隆這個裸存儲庫。 該橋只由一個(或幾個)了解如何同步Git和SVN的人維護。

要通過網橋更改主服務器上的SVN中繼,反之亦然:

  1. git svn fetch (獲取新的SVN更改)

  2. git checkout master

  3. git pull master (從裸倉庫中獲取Git更改)

  4. git checkout svn/trunk (checkout detached head)

  5. git merge –no-ff –log master (從master更改合並)。 –no-ff確保實際提交, –log從master上的每個提交復制單個日志消息( –log是可選的)。 如果要編輯提交消息,則可以運行git commit -amend。

  6. git svn dcommit (這會將你的合並提交推送到SVN。請注意,提交是在一個獨立的頭上,並且不再可訪問)。 您在master上的所有工作(因為master和svn/trunk的merge-base)都作為單個更改提交,現在可供SVN用戶使用。

  7. git checkout master

  8. git merge svn/trunk (從SVN獲取新的更新 - 使用更改的提交消息 - 並合並到master)

  9. git push barerepo (使git push barerepo用戶可以使用SVN更改)

我不知道的是,是否有可能以某種方式在Hg上復制上述內容。 正如我所看到的(我是Git的中間用戶並且了解使用Hg的基礎知識),Hg的障礙是:

  • 沒有遠程跟蹤分支(這可能與書簽有關嗎?單獨克隆的回購?)
  • 不可能通過hgsubversion推送合並提交(上面列表中的步驟hgsubversion 。什么阻止hgsubversionsvn dcommit做什么?)

是否有可能使Hg-SVN網關以與Git-SVN網關相同的方式工作? 如果不是,為什么?

簡短的版本是:沒有人確信我推出合並到Subversion的合理預期行為是什么,並且對hgsubversion有一些輕微的修改,建議推動合並而不是重新修訂。 這些都不應該太難,只需要有人動機去實施。 如果你很好奇, 這個帖子有一個類似的請求,我回答了一個相當深入的討論我和其他幾個人一起思考的基本方法。

暫無
暫無

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

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