我正在使用Mercurial管理$ HOME,以保持我的dotfiles好看和跟踪,或至少对我来说很重要。
但是,〜中的文件和目录数量很多,不需要跟踪,而且这一组不断变化且不断增长。
从历史上看,我已经通过这个.hgignore处理了这个问题:
syntax: glob
*
这样可以保持我的状态干净,只会使之前跟踪的文件可见。但是,我有一些目录(在我的情况下,scripts
,.emacs.d
),我希望看到未跟踪的文件;我几乎总是想跟踪这些目录的新增内容。
我知道我可以运行hg st -u scripts
来识别未跟踪的文件,但我想要一种方法,我可以使用普通的ole hg状态实现相同的功能。
有办法做到这一点吗?
答案 0 :(得分:17)
请在.hgignore
中尝试此操作:
syntax: regexp
^(?!(scripts|foo|bar)/)[^/]+/
^
匹配路径的开头(?!(scripts|foo|bar)
使用否定前瞻功能忽略目录scripts
,foo
或bar
/)
确保忽略具有跟踪目录作为前缀的目录[^/]+/
然后实际匹配任何目录(不包括前瞻规定的目录),以便~
中的文件不被忽略这个解决方案中的中心思想(负面预测)归功于Michael La Voie对this question
的回答答案 1 :(得分:10)
这个问题已经在这里问过很多次了,你会得到很多复杂的答案,使用零宽度负向前看断言,一个经常被滥用的正则表达式技巧,但更好的解决方案是(a) )只需在该目录中单独创建repo,或者(b)只添加该目录中的文件。对于选项(b),您只需将.*
放入.hgignore
文件中即可忽略所有内容,然后手动hg add
要跟踪的文件。在mercurial中,与svn和cvs不同,您可以使用add覆盖ignore。