Как игнорировать некоторые папки в HG?

Начиная здесь, я борюсь с этим прямо сейчас. У меня есть две папки: Source и SQL. Источник имеет несколько папок проекта. Папки проекта в Source и SQL имеют папки bin. Я хочу игнорировать все файлы в папках bin в Source, но не в SQL. Я подумал, что один из них может помочь:

glob:Source\*\bin\
glob:Source\*\bin
glob:Source\*\bin\*
glob:Source\*\bin*
glob:Source*\bin\
glob:Source\*bin\

Но нет кости на все вышеперечисленное.

Кажется, мне придется ввести строку для каждой папки в разделе «Источник», где я ожидаю иметь папку bin (а ​​затем обновлять мой файл .hgignore всякий раз, когда я добавляю новый проект).

glob:Source\Project1\bin\
glob:Source\Project2\bin\
#etc

Если это не так, буду признателен за любой совет.


person dstrube    schedule 27.09.2011    source источник


Ответы (2)


Вы пробовали регулярное выражение:

syntax: regex
^Source/.*/bin

Кроме того, помните, что все, что вы уже добавили, не зависит от правил игнорирования, поэтому вам нужно, чтобы файлы не отслеживались, чтобы проверить это.

Наконец, подумайте о том, чтобы сделать каждый проект отдельным репозиторием — это стандартный совет в мире DVCS, будь то Mercurial или git. В svn несколько проектов в одном и том же репо не такая уж плохая идея, потому что вы можете обновлять разные части рабочего каталога до разных ревизий, но с DVCS все файлы обновляются/извлекаются до одной и той же ревизии, что делает размещение нескольких проектов в том же репо хлопот в целом и действительно плохая идея в некоторых обстоятельствах.

person Ry4an Brase    schedule 28.09.2011
comment
Я бы сделал несколько настроек, первая из которых была просто личным предпочтением. Немного поработав с файлом hgignore, я обнаружил, что объявление синтаксиса в той же строке, что и шаблон, лучше всего подходит для внесения большого количества правок. Кроме того, в будущем может потребоваться сделать букву b в корзине нечувствительной к регистру. И, наконец, поставьте косую черту в конце, чтобы папки с именем binSomething не попались. Но мне нравится косая черта после источника и маркер начала строки. Я не могу проверить, будет ли это работать прямо сейчас, но это кажется оптимальным: re:^Source/.*/[Bb]in/ Спасибо! - person dstrube; 28.09.2011

Глядя на мой файл .hgignore, мои косые черты кажутся обратными (прямая косая черта вместо обратной косой черты). то есть:

glob:*/bin/*

Попробуй, может быть?

person mbx-mbx    schedule 27.09.2011
comment
Закройте, но это будет игнорировать папки bin в SQL, а также в Source. Есть ли команда glob, которая будет игнорировать папки bin в одних папках, но не в других? Это тоже не работает: glob:Source/*/bin/* - person dstrube; 27.09.2011
comment
Нет, ни один из них не работал, потому что у меня есть папки bin в папках проекта в Source: Source/Project1/bin, Source/Project2/bin, Source/some/path/that/is/произвольно/long/bin и т. д. - person dstrube; 27.09.2011
comment
Извините, я неправильно прочитал вопрос, я создал папку под названием «Тест», и в ней находится текстовый файл с именем «привет», а также еще одна папка с именем bin с текстовым файлом с именем «Игнорировать». У меня сработало следующее: glob:Test/*/bin/* (привет был виден в коммите, а игнор — нет). Я использую черепаху HG v2.05. Я вижу, что это то же самое, что вы написали в первом комментарии, поэтому не знаю, почему это не работает для вас. Вы используете черепаховый hg? - person mbx-mbx; 27.09.2011
comment
Хм, действительно странно, что это работает для вас, а не для меня. Я использую tortoiseHg 2.1.3 (на 64-битной Vista, если это имеет значение). Во всяком случае, я нашел регулярное выражение, которое помогает: re:Source.*/[Bb]in/ - person dstrube; 27.09.2011