Шаблоны имен файлов и наборы файлов конфликтуют с .hgignore в Mercurial - PullRequest
2 голосов
/ 15 декабря 2011

У меня есть следующее на .hgignore:

syntax: glob
*

и следующее на myfiles.txt:

.zshrc                                                                                                                                     
.zprofile                                                                                                                                  
glob:.less*                                                                                                                                
glob:.emacs*/**                                                                                                                            
glob:src*/**                                                                                                                               
glob:.bash*                                                                                                                                
.inputrc                                                                                                                                   
.ssh  

Если я пытаюсь добавить файлы в myfiles.txt вMercurial репозиторий, использующий шаблоны имен файлов :

hg add listfile:myfiles.txt

или наборы файлов :

hg add "set: 'listfile:myfiles.txt' "

не работает;Mercurial ничего не печатает и не добавляет никаких файлов.

Однако два приведенных выше утверждения работают, как только я удаляю * из .hgignore, что странно, поскольку я думал, что явный hg add должен переопределить что-либо в .hgignore.

Цель:

Помимо ожидаемого вышеизложенного поведения Mercurial, моя цель - заставить Mercurial игнорировать все файлы, кроме тех, которые я явно добавляю из контрольного файла, такого как myfiles.txtгде я могу использовать шаблоны шара.Есть ли способ сделать это в Mercurial?

Обновление:

Я не уверен, почему некоторые из шаблонов файлов работают для регги @smooth.Как сказал @Martin ниже, он смог воспроизвести описанное выше поведение, когда шаблоны файлов, похоже, «конфликтуют» .hgignore, как и для меня (т. Е. Mercurial уважает .hgignore независимо от команды explit hg add).

Чтобы уточнить, у меня установлена ​​версия Mercurial 2.0.1 в Linux, и я пробовал это в Red Hat и Ubuntu.

1 Ответ

2 голосов
/ 15 декабря 2011

@ intrpc, я использую TortoiseHg 2.1.3 / Mercurial 1.9.2, и мне удалось получить аналогичный образец для работы: у меня был файл с именем .sample и другой файл глубиной два уровня foo/bar/Foo.txtpatterns.txt находился на уровне выше.С тем же .hgignore, что и у вас, я набрал hg init, а затем hg add listfile:..\patterns-for-hg.txt для двух случаев:

  1. с patterns.txt, содержащим

    .sample
    glob:foo/**
    

    в этом случае hg status сказал мне, что Mercurial добавил .sample в хранилище, но пропустил foo/bar/Foo.txt

  2. с patterns.txt, содержащим

    .sample
    path:foo/bar/Foo.txt
    

    в этом случае hg status сказал мне, что Mercurial добавил и .sample и foo/bar/Foo.txt в хранилище

Поведение в (2) выше, кажется, имеет смысл для меняпотому что Mercurial будет игнорировать .hgignore, если вы вызовете hg add с полным путем к файлу (это «явное добавление», на которое вы ссылаетесь).

Единственное объяснение, которое я могу придумать дляповедение в (1) состоит в том, что глобус в patterns.txt обрабатывается как подстановочный знак, а не как точный шаблон;следовательно, hg add уважает .hgignore и точные пути (.sample) и ничего больше.

Это, конечно, догадки;поэтому любой ответ от кого-то более квалифицированного приветствуется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...