В mercurial есть опция игнорирования при фиксации? - PullRequest
38 голосов
/ 19 мая 2009

Есть ли способ игнорировать изменения некоторых файлов при фиксации с помощью Mercurial?

У меня есть особая ситуация, когда у нас есть файл oracle tnsnames.ora по умолчанию, который указывает на 127.0.0.1, но некоторые разработчики изменят его так, чтобы он указывал на другие системы, но мы не хотим изменять файл по умолчанию .

В subversion я просто добавил это в список изменений ignore-on-commit. Есть ли способ сделать это в Mercurial?

Ответы [ 4 ]

49 голосов
/ 22 мая 2009

Если файлы, которые вы хотите опустить в команде "hg commit", уже "отслежены", вам следует использовать опцию -X. Шаблон, переданный в -X, довольно гибкий, что позволяет запускать, например:

% hg stat
A etc/foo.conf
M src/bar.c
M lib/libbar/loader.c
% hg commit -X '**.conf'

, чтобы избежать фиксации любого файла с расширением ".conf", независимо от того, как глубоко в исходном дереве он живет. В рабочей области, показанной выше, это будет зафиксировать «src / bar.c» и «lib / libbar / loader.c», но не «etc / foo.conf».

Чтобы исключить несколько шаблонов имен файлов, используйте несколько опций -X, т. Е .:

% hg commit -X '**.conf' -X '**.sh'
22 голосов
/ 21 мая 2009

Традиционно это решается не версией самого файла, а версией его копии в качестве шаблона для использования другими.

Таким образом, вы должны hg mv tnsnames.ora tnsnames.ora-template, затем зафиксировать, затем сделать прямую копию файловой системы tnsnames.ora-template для tnsnames.ora и добавить tnsnames.ora в файл .hgignore.

Последующие изменения в шаблоне по-прежнему будут вытеснены, но они фактически не изменят рабочую среду, если кто-то не скопирует шаблон в фактический файл.

1 голос
/ 19 мая 2009

Вы можете использовать псевдоним что-то вроде 'hg commit -X exclude_file.ext'. Я никогда не использовал mercurial, поэтому я просто перехожу к странице справочника здесь.

0 голосов
/ 19 мая 2009

Найдите файл .hgignore в документации Mercurial.

Вот пример файла игнорирования.

       # use glob syntax.
       syntax: glob

       *.elc
       *.pyc
       *~

       # switch to regexp syntax.
       syntax: regexp
       ^\.pc/
...