Mercurial игнорирует часть каталога - PullRequest
0 голосов
/ 06 октября 2010

Некоторое время боролся с Mercurial .hgignore под Windows.

У меня есть папка с именем Upload, которая в настоящее время пуста.Я хочу, чтобы он отслеживался, поэтому я добавил в него файл .empty, который работает нормально.Я хочу, чтобы новые разработчики, выполняющие клон hg, получали документ для загрузки, необходимый для приложения.

Дело в том, что я никогда не хочу, чтобы папка была заполнена чем-либо непосредственно в исходном элементе управления (тестовая загрузка с компьютера разработчика).

Пример: если я добавлю Public / image.jpg, он не будет отслеживаться.

Кроме того, я бы хотел, чтобы отслеживался подкаталог.Поэтому, если разработчик добавляет

Upload / users / .empty, я бы хотел, чтобы это отслеживалось.

Возможно ли это с помощью regex voodoo?

Ответы [ 3 ]

4 голосов
/ 06 октября 2010

В mercurial (и в отличие от svn и cvs) добавление файла переопределяет файл .hgignore, поэтому вы можете поместить его в свой .hgignore:

^Uploads/.*

и ваш Upload/.empty, который вы добавили, все равно будет создан при обновлении и, таким образом, он получит каталог.

Чтобы игнорировать файлы при загрузке, но не игнорировать файлы в подкаталогах при загрузке, можно выполнить с помощью:

^Uploads/[^/]*$

, который гласит: игнорируйте все, что начинается с загрузок и не имеет дальнейших косых черт.

На самом деле, вы должны создавать загрузки с вашим сценарием сборки / установки / настройки, когда это возможно, а не с клоном / обновлением.

1 голос
/ 06 октября 2010

Попробуйте поместить

Uploads/(?!.empty)

в .hgignore в корень хранилища

0 голосов
/ 06 октября 2010

Попробуйте

^Uploads\b.*/(?!\.empty)[^/]+$

Это должно соответствовать любому пути, начинающемуся с Uploads, где текст после последней косой черты (= имя файла) отличается от .empty.

...