Подвижное .hgignore регулярное выражение

Используя Подвижный, я должен проигнорировать все файлы и каталоги кроме каталогов "тесты" и "языки" и файлы в тех каталогах. Это все должно быть сделано с regex и .hgignoere

Файлы:

  • tests\junk.txt
  • cms\tests\some_file.txt
  • cms\languages\users\lang.txt
  • languages\lang2.txt
  • tests.txt
  • proba/tests.txt

Я попробовал этим:

^(?!test|test/|test$|languages|languages/|languages$)

но это только соответствует файлам, который запускается с теста и языка:

  • tests\junk.txt
  • languages\lang2.txt

То, что я хочу, к соответствиям также

  • cms\tests\some_file.txt
  • cms\languages\users\lang.txt

Любой совет ценился бы.

6
задан Delimitry 24 May 2015 в 15:02
поделиться

3 ответа

Используйте глобы, они проще:

C:> dir
tests  languages pr0n espionage more_pr0n

C:> type .hgignore
syntax: glob
pr0n/*
espionage/*
more_pr0n/*

добавлено: Если вы беспокоитесь, что появятся новые каталоги, которые не будут игнорироваться, то вам следует:

hg add .hgignore
hg commit 
echo "new_directory/*" >> .hgignore
hg commit

Если у вас слишком много каталогов и файлов, выскакивающих в исходном каталоге, чтобы этот метод работал, сделайте каталог только для исходников.

1
ответ дан 17 December 2019 в 06:59
поделиться

Это не тот ответ, который вы ищете, но почти никто не использует синтаксис отрицательной ширины ?: в своих файлах .hgignore. В тех случаях, когда они хотят, чтобы только небольшое подмножество всех файлов было невыграженным, они обычно просто игнорируют все, а затем hg добавляют исключения - помните, что в mercurial (в отличие от cvs / svn) добавление файла переопределяет игнорировать.

Поэтому, если ваш .hgignore у вас будет:

.*

, а затем вы hg добавить файлы в ваших тестах и каталогах языков явно с помощью 'hg add'. Тогда вы делаете: Конечно, не забывайте добавлять любые новые файлы по мере того, как вы идете, так как все будет проигнорировано, но если большинство файлов должны быть проигнорированы, это все еще более простой путь.

2
ответ дан 17 December 2019 в 06:59
поделиться

Это невозможно.

См. справочную страницу .

Например, у нас есть неотслеживаемый файл, file.c, в a / b / file.c внутри нашего репозиторий. Mercurial проигнорирует file.c, если есть шаблон в .hgignore соответствует a / b / file.c, a / b или a.

Допустим, вы создали регулярное выражение, которое не будет соответствовать ни одному пути, содержащему test , а файл proba / tests.txt находится в вашем рабочем каталоге. Это регулярное выражение сначала будет применено к proba и будет соответствовать, что приведет к игнорированию файла.

0
ответ дан 17 December 2019 в 06:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: