Mercurial (hg) фиксирует только определенные файлы
Я пытаюсь зафиксировать только определенные файлы с Mercurial.
Из-за того, что hg имеет автоматическое добавление всякий раз, когда я пытаюсь совершить изменение, он хочет зафиксировать все файлы. Но я не хочу этого, потому что некоторые файлы еще не "готовы".
здесь
hg commit -I thefile.foo
но это только для одного файла. Лучший способ для меня будет, если я могу отключить автоматическое добавление как в Git. Это возможно?
4 ответов:
вы можете указать файлы в командной строке, так как tonfa пишет:
$ hg commit foo.c foo.h dir/что просто работает и это то, что я делаю все время. Вы также можете использовать
--includeфлаг, который вы нашли, и вы можете использовать его несколько раз, как это:$ hg commit -I foo.c -I "**/*.h"вы даже можете использовать файлы выберите файлы, которые вы хотите совершить:
$ hg commit "set:size(1k - 1MB) and not binary()"нет настройки, которая отключит поведение автоматического добавления и заставит Mercurial работать, как Git. Однако, элемент расширение mq может быть интересно. Это расширенное расширение, но оно позволяет вам делать
$ hg qnew feature-x # create new patch $ hg qrefresh -s foo.c # add a file to the current patch $ hg qrefresh -s bar.c # add another file to the patch $ hg qfinish -a # convert applied patches to normal changesetsЯ действительно не использую MQ для этой цели, хотя, так как я думаю, что достаточно просто указать имена файлов в командной строке.
Если вы хотите зафиксировать несколько файлов и исключить многие другие, явно перечислите файлы, которые вы хотите зафиксировать.
-Iнужен только если вы хотите использовать шаблоны вместо файлов.Если вы хотите совершить много файлов, и исключить только несколько файлов, используя
-Xболее удобный.например, учитывая репозиторий, содержащий "file_1", "file_2" и "file_3", следующие эквивалентны, но последний легче / быстрее вводить:
hg commit file_1 file_2 hg commit -X file_3
С 3.8 вы также можете использовать
hg commit --interactiveдля выбора файлов (перед 3.8 вы можете использовать расширение crecord аналогичным функционалом). Элемент--interactive(или просто-i) флаг заставит hg запрашивать файлы, которые вы хотите включить в фиксацию. В качестве дополнительного бонуса, вы даже можете включить/исключить чанков в файлах.вот пример того, как выглядит интерфейс. Обратите внимание, что это старый скриншот (crecord на самом деле) , поэтому интерфейс немного изменился (но основы те же).
Примечание Для получения этого интерфейса вам нужно включить интерфейс curses. Вы можете сделать это для одного запуска с
hg commit --config ui.interface=curses --interactiveили вообще, добавив следующий код.hgrc:[ui] interface = curses
Как полагают в этот вопрос переполнения стека, самый простой способ сделать это с
hg shelve.

Comments