2012-10-29 57 views
0

給定一個來自某個版本的版本庫的文件,並且可能已經被修改過,是否有一種很好的方法來識別它(最有可能)來自哪個版本?我期望的是,將它與所有文件的版本(或足夠的版本)進行比較並選擇具有最小差異的版本。mercurial:找出文件來自哪個版本

我的使用案例:多年來,我編寫並設置了各種仍在使用的乳膠樣式。很多時候,沒有官方的「發佈」,也沒有版本號,有時我忘記更新版本號。我現在經常會遇到關於這個或那個文件的問題。我使用mercurial來跟蹤樣式的歷史記錄(其中一些追溯記錄),並且在歷史中快速查找腳本的位置將很方便,因此我可以告訴我是否正在處理已經解決的問題。

我感興趣的是如何將文件與回購歷史記錄進行匹配。前瞻性解決方案很明確:始終使用版本號避免此問題。正如this answer對相關問題的建議,KeywordExtension可以自動執行版本號。由於不推薦使用它,所以我也歡迎有關「更好」方法的建議。

+0

>由於不建議 只有* *的一些意見「而不是它的使用推薦「,這是意見,而不是要求同意 –

+0

同意;但我尊重mercurial開發人員的智慧,所以我很樂意聽取其他選擇。 – alexis

回答

0
  1. 您不能使用任何東西,除了校驗和文件中,問題和它的歷史修訂
  2. 你有沒有水銀templater
  3. 您可以添加新的命令,以水銀任何校驗和相關的關鍵字,使用[別名]部分(並且甚至殼命令在別名定義被允許)

上述引線的結論是,至少有兩種解決方案

  • 你可以寫擴展水銀,其中新增和實施checksuming模板的關鍵詞,計算外部文件的校驗和,獲取文件(hg log FILENAME --template "{md5(FILENAME)}\n")的所有版本的校驗,並會盡量找打
  • 您添加別名水銀爲校驗,log FILENAME會給你的所有修訂文件,MD5 -r REV FILENAME生產基於MD5哈希值再次:

hg log FILENAME --template "{rev}\n" | xargs $(...)

+0

謝謝,這有助於固定以前版本的未修改副本。任何可能適用於已修改副本的想法?也許我不清楚,但這是我試圖描述的場景。例如,有人給我發了MODS,但我不知道...... – alexis

相關問題