2011-12-04 13 views
2

使用https://github.com/AndreyNikiforov/vault2git我能夠將Vault repo轉換爲Git,然後使用Mercurial的hg convert來獲得hg repo。唯一的問題是在運行hg convert後,更改集合提交日期的日期不正確。Vault to Git到Mercurial不能保存日期

日期顯示更改集從got到mercurial而不是提交日期轉換的時間。

我還需要做些什麼來保存日期嗎?

+0

可能是多餘的問題,但爲什麼你會進一步從git轉換爲mercurial? :) – favoretti

+0

我的目標是讓repo進入mercurial,而vault2git是我找到的唯一的x庫。 – Omar

+0

@Omar git倉庫中的時間戳是否正確? – Rudi

回答

2

我得到這個通過刪除檢查在hg convertgit擴展提交者信息的文件中https://www.mercurial-scm.org/repo/hg-stable/file/09b200396384/hgext/convert/git.py125130代碼工作:

 if n == "committer": 
      p = v.split() 
      tm, tz = p[-2:] 
      committer = " ".join(p[:-2]) 
      if committer[0] == "<": committer = committer[1:-1] 
      committer = self.recode(committer) 

一旦你刪除此,hg convert將用於作者信息日期。您需要複製repo鏈接中的convert擴展名,對其進行修改,然後將其添加到TortoiseHg。

爲什麼這需要做:

git犯,有兩個記錄在變更元數據:committerauthor

  • 作者是代碼負責人。

  • 提交者實際上是對存儲庫進行了更改的人員。

這種區別是一個開源項目,其中誰編寫代碼的人並不一定是其提交至倉庫的人員很重要:通常有接受拉項目的維護者(提交者)來自貢獻者(作者)的請求並將其提交到存儲庫。

Vault2Git使用Vault簽入信息(提交者和提交日期)作爲git changeset作者信息。 git提交者信息使用git用戶的信息和提交的實際日期(您的存儲庫的默認用戶)。您可以通過對Vault2Git所做的更改集執行git cat-file <rev hash>來查看此差異。

這適用於git,但是當您運行hg convert時,Mercurial使用author名稱和committer日期創建Mercruial變更集元數據。

1

您可以嘗試hg-git而不是轉換擴展名。這是兩者之間的雙向橋樑,意味着無損。這必須包括日期,否則每次你拉時哈希值都會改變。

+0

嘗試這樣做,但由於某種原因,它不會克隆使用vault2git創建的git repo。 – Omar

+0

讓我想知道vault2git創建的git repo是否有點奇怪。它設法導致兩種方法(通常工作)失敗。 –