2012-05-02 37 views
6

我有一個編程任務,我將在本週末在我的大學提交,並且他們對作業的匿名程度有嚴格的規定以保持公正性,所以如果我的姓名(或任何其他明顯的標識信息)出現在任何地方在工作中它可能會被自動取消資格。如何匿名化一個mercurial倉庫?

在準備將所有內容刻錄到光盤時,我剛剛注意到/記得我的HG回購是全部是我的名字的副本。代碼都是乾淨的,但每個變更集的作者都是我的全名和電子郵件,或者我的大學登錄ID和實驗室計算機的主機名(取決於我在哪裏工作)。

我需要創建回購的匿名版本(或換掉我學生ID號的所有名稱),而不會丟失其中包含的任何其他信息。

因此,正如標題所說,我如何匿名化一個mercurial存儲庫?

回答

8

您可以使用Mercurial的Convert extension--authors option將您的存儲庫「轉換」爲新的Mercurial存儲庫,並在轉換過程中更改作者的名稱。從第二個鏈接

報價:

轉換也可以轉換期間重新映射作者姓名,如果提供了 --authors選項。參數應該是一個簡單的文本文件將每個源提交作者映射到目標提交作者。對於使用UNIX登錄來識別作者的源SCM(例如: CVS),它是 。例如:

john=John Smith <[email protected]> 
tom=Tom Johnson <[email protected]> 
+0

謝謝,這很好地完成了這項工作。 (1)似乎你需要單獨和準確地列出所有的用戶名(所以需要在整理之前進行一些工作)(2)許多變更集的ID被修改(3)可能的由於2,創建了一個額外的變更集來修復回購中的標籤。 – DMA57361

+3

@ DMA57361:1)使用'hg log --template'{author} \ n'|排序-u'來獲取唯一用戶名的列表,2)變更集ID使用加密散列函數(SHA-1)形成,其中包括用戶名作爲輸入,3)正確! –

+0

@MartinGeisler(1)昨天會幫忙:),但幸運的是我只需要在這種情況下收集4個用戶名。 (2)我意識到了,但是我認爲我會將它作爲未來讀者的警告添加,因爲它可能會阻止已被推送/合併/等的轉換回購回原始? – DMA57361

1

如果您沒有任何合併變更集,那麼您可以嘗試在Mercurial 2.0中使用graft命令將您的存儲庫移植到新的存儲庫,同時更改記錄的用戶名。

如果您確實有合併變更集,則可能在Mercurial 2.2中使用transplant擴展名,儘管更改記錄的用戶名似乎更難。

相關問題