2013-12-22 83 views
1

我使用mercurial來跟蹤包含PDF文件(由其他人生成,我需要跟蹤)的存儲庫和乳膠文件,由我。Mercurial - 基於其他文件的存在忽略某些文件

例如,假設這樣的目錄結構:

root 
- Requirements.pdf 
- MyReport.tex 
- MyReport.pdf 

在這種情況下,MyReport.pdf的每一次變化MyReport.tex那樣,並且可以通過TEX文件的內容被整體確定,所以它不應該受版本控制。

我正在尋找一種方法來告訴mercurial忽略這樣的文件。很顯然,我可以添加一條規則.hgignore像這樣(http://www.selenic.com/mercurial/hgignore.5.html

syntax: glob 
*.pdf 

但是,這會忽略我需要保持版本控制的PDF文件。

還有這個鏈接:https://www.mercurial-scm.org/wiki/TipsAndTricks#Avoid_merging_autogenerated_.28binary.29_files_.28PDF.29但這並不能真正解決我的問題,因爲雖然它處理構建PDF,但它不處理告訴hg哪些文件很重要。

或者我可以手動執行此操作,但我想要一種腳本方式來使其更加通用,因爲這些存儲庫可能包含幾十個tex和pdf文件,並且手動管理這些文件變得非常麻煩。

這似乎是一個非常簡單的規則:如果有一個名爲「blah.pdf」的文件,請檢查是否還有文件名「blah.tex」,如果是,忽略它,否則,注意它。但我無法找到任何有關這方面的信息。

回答

1

Mercurial和Git中都沒有這樣的功能,也不會有這樣的功能,因爲它非常適合小生境。但是,您可能會考慮將您的「生成」文件放入單獨的輸出子目錄,然後忽略所有這些目錄。例如,如果您有像foo/bar.tex這樣的輸入,則輸出可能爲foo/gen/bar.tex,並且您可以忽略。

1

很顯然,我可以添加一條規則.hgignore這樣 (http://www.selenic.com/mercurial/hgignore.5.html)......但是,這 忽略我需要保持版本控制的PDF文件。

.hgignore忽略所有新加入的或現有的不受版本文件,匹配模式,但加粗的文字給你至少有兩個可用的解決方案:

  • 寫正則表達式,這意味着「所有PDF ,除了一些文件名(S)」(與手動添加文件名,最有可能)
  • 使用廣泛的模式,但添加所需的文件到存儲庫中明確(hg add FILENAME
+0

是的,的確如此。我的意思是,它會默認忽略所有PDF,但我可以手動添加我關心的那些。這是我迄今爲止使用的方法。看起來我可能不得不寫一個擴展名來完成我想要做的事情。 –