2009-08-27 2 views
8

Я начал проект и добавил его в Mercurial. Но я хочу взять файл *.cs только в режиме управления версиями. Поэтому я должен добавить bin, obj, sln, suo, _resharper папку и т. Д., Чтобы игнорировать шаблон.Как разрешить Mercurial игнорировать все, кроме файла * .cs?

Как разрешить Hg контролировать только определенный файл, например, белый список? Как это сделать в Subversion?

+0

Mercurial или Subversion или both? – inerte

+0

Только Mercurial в порядке, оба, если знаете – prime23

ответ

8

Просто добавьте расширения в файл .hgignore, как вы столкнетесь с ними:.

syntax: glob 
*.bin 
*.obj 

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

вы даже можете настроить глобальный игнорировать файл, пожалуйста, см ignore entry in the [ui] section.

Попытка превратить .hgignore перевернутый с использованием негативных регулярных выражений и других вуду - это, на мой взгляд, не очень хорошая идея. Это почти наверняка не сработает и приведет лишь к путанице. Это связано с тем, что hg соответствует всем префиксам имени пути передачи от rules in .hgignore. Таким образом, файл, как

a/b/c.cs 

будет игнорироваться, если какой-либо из

a/b/c.cs 
a/b 
a 

подобран правило в файле .hgignore. В частности, это означает, что вы не можете использовать отрицательное выражение для выражения, чтобы a/b/c.cs не игнорировалось - правило будет соответствовать a/b или a.

+0

Значит, вы говорите, что нет оператора отрицания? –

+0

Майк: Да, к сожалению. Пожалуйста, посмотрите эту проблему http://mercurial.selenic.com/bts/issue712, где вы можете оставить комментарий, если вы очень заинтересованы. –

-2

Добавьте в ваш репозиторий файл с именем .hgignore.

syntax: regexp 

^\.cs 

Subversion не позволяет использовать регулярные выражения, чтобы игнорировать файлы, только подмножество glob syntax для сопоставления имен файлов/каталогов. Я понятия не имел, как сделать игнорировать файлы не заканчиваясь в .cs, так что я искал в Интернете и this webpage говорит:

svn propset svn:ignore "*[!c][!s] 
*.cs?*" . 

Используйте его с осторожностью :)

Edit: Martin Geisler является правильным, и я ошиблась , синтаксис regexp неверен. Я извиняюсь. Правильная концепция есть, но не метасимволы ... :(

+0

'^ \. Cs' regexp заставит' hg' игнорировать файл с именем '.cs' в корневом каталоге репозитория. Это не делает 'hg' игнорировать все файлы * не * соответствует' * .cs' (шаблон glob). –

+0

Да, я пробовал, он не работает. – prime23

1

Что касается ссылки на Mercurial выпуск поставляемого Martin Гейслер (https://www.mercurial-scm.org/bts/issue712) Пожалуйста, обратите внимание, что этот вопрос не является одним из технических трудностей, но поддержка:

Это запрос древнего и повторяющаяся особенности, который я отклонил хорошо , прежде чем эта ошибка была создана. Я написал и поддержал пару включить/исключить синтаксисы файлов и решил, что я скорее скажу «нет, вы, , не можете сделать это» один раз до 1% пользователей, чем «нет, вы читаете документы неправильно», повторно до 20% пользователей. — Matt Mackall (разработчик Mercurial)

Смежные вопросы