Mercurial - 根据其他文件的存在忽略某些文件

时间:2013-12-22 05:53:10

标签: mercurial

我使用mercurial来跟踪包含PDF文件(由其他人生成,我需要跟踪)的存储库,以及由我编写的乳胶文件。

例如,假设一个像这样的目录结构:

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

在这种情况下,MyReport.pdf每次都会更改MyReport.tex,并且可以完全由tex文件的内容决定,因此它不应该受版本控制。

我正在寻找一种方法来告诉mercurial忽略这些文件。显然,我可以像http://www.selenic.com/mercurial/hgignore.5.html

一样向.hgignore添加规则
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”,若然,请忽略它,否则,注意它。但我找不到任何相关的东西。

2 个答案:

答案 0 :(得分:1)

Mercurial和Git都没有这样的功能,也不会有这样的功能,因为它非常适合。但是,您可以考虑将“生成的”文件放入单独的输出子目录中,然后忽略所有此类目录。例如,如果您有foo/bar.tex之类的输入,则输出可能为foo/gen/bar.tex,您可以忽略gen/

答案 1 :(得分:1)

  

显然我可以像这样向.hgignore添加规则   (http://www.selenic.com/mercurial/hgignore.5.html)......但那会   忽略我需要保持版本控制的PDF。

.hgignore会忽略所有新添加或现有的非版本化文件,匹配模式,但粗体文本会为您提供至少两个可用的解决方案:

  • 写regexp,意思是“所有pdf,除了一些文件名”(手动添加文件名,最有可能)
  • 使用宽模式,但明确地将所需文件添加到存储库(hg add FILENAME