开发者

Mercurial/.hgignore - How do I ignore everything but the contents of a folder?

I have a NetBeans project and the Mercurial repository is in the project root. I would like it to ignore everything except the contents of the "src" and "test" folders, and .hgignore itself.

开发者_开发问答

I'm not familiar with regular expressions and can't come up with one that will do that.

The ones I tried:

(?!src/.*)

(?!test/.*)

(?!^.hgignore)

(?!src/.|test/.|.hgignore)

These seem to ignore everything, I can't figure out why.

Any advice would be great.


This seems to work:

syntax: regexp

^(?!src|test|\.hgignore)

This is basically your last attempt, but:

  • It's rooted at the beginning of the string with ^, and
  • It doesn't require a trailing slash for the directory names.

The second point is important since, as the manual says:

For example, say we have an untracked file, file.c, at a/b/file.c inside our repository. Mercurial will ignore file.c if any pattern in .hgignore matches a/b/file.c, a/b or a.

So your pattern must not match src.


^(?!src\b|test\b|\.hgignore$).*$

should work. It matches any string that does not start with the word src or test, or consists entirely of .hgignore.

It uses a word boundary anchor \b to ensure that files like testtube.txt or srcontrol.txt aren't accidentally matched. However, it will "misfire" on files like src.txt where there is a word boundary other than before the slash.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜