Подтвердить что ты не робот

.hgignore для игнорирования только файлов, а не каталогов?

У меня есть проблема, которую я не могу понять. Я использую TortoiseHg (версия 0.7.5) в Windows, но в Linux у меня такая же проблема. Вот он:

Мой .hgignore файл:

syntax: regexp
^[^\\/]+$

Я пытаюсь добавить в список игнорирования файлы, которые находятся в корне репозитория hg.

Например, если мне это нравится:

.hg
+mydir1
+mydir2
-myfile1
-myfile2
-anotherfile1
-anotherfile2 
.hgignore

Я хочу, чтобы myfile1 (2) и anotherfile1 (2) игнорировались (имена предназначены только для этого примера - они не имеют простого правила, которое может быть легко помещено в файл hgignore)

Есть ли что-то, что мне не хватает, потому что я уверен, что regexp хорош (я даже тестировал его)? Идеи?

Есть ли более простой способ достичь этого? [добавить в файлы списка игнорирования, которые находятся в корневом каталоге меркурийного репозитория]

4b9b3361

Ответ 1

Я передал этот вопрос в #mercurial на irc.freenode.net, и ответ заключался в том, что вы не можете различать файлы и каталоги - каталог сопоставляется без косой черты, которую вы ищете в вашем регулярном выражении.

Однако, если вы можете предположить, что ваши каталоги никогда не будут содержать полный стоп ., но ваши файлы будут, то что-то вроде этого работает:

^[^/]*\..*$

Я тестировал его в репозитории следующим образом:

% hg status -ui
? a.txt
? bbb
? foo/x.txt
? foo/yyy

Добавление файла .hgignore дает:

% hg status -ui
? bbb
? foo/x.txt
? foo/yyy
I .hgignore
I a.txt

который указывает, что файл a.txt правильно проигнорирован в корневом каталоге, но x.txt в подкаталоге foo нет. Вы также можете увидеть, что файл с именем just bbb в корневом каталоге не игнорируется. Но, возможно, вы можете добавить такие файлы самостоятельно в файл .hgignore.

Если в вашем корневом каталоге есть каталог типа bar.baz, то этот каталог и все файлы внутри будут игнорироваться. Надеюсь, это немного поможет.

Ответ 2

Вот трюк:

Создайте пустой файл ".hidden" в вашем каталоге, чем добавьте в .hgignore:

^mydir/(?!\.hidden).+$

Это игнорирует все файлы в каталоге, кроме ".hidden".