Mercurial (hg) фиксирует только определенные файлы



Я пытаюсь зафиксировать только определенные файлы с Mercurial.
Из-за того, что hg имеет автоматическое добавление всякий раз, когда я пытаюсь совершить изменение, он хочет зафиксировать все файлы. Но я не хочу этого, потому что некоторые файлы еще не "готовы".



здесь



hg commit -I thefile.foo


но это только для одного файла. Лучший способ для меня будет, если я могу отключить автоматическое добавление как в Git. Это возможно?

687   4  

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 на самом деле) , поэтому интерфейс немного изменился (но основы те же). crecord screenshot

Примечание Для получения этого интерфейса вам нужно включить интерфейс curses. Вы можете сделать это для одного запуска с hg commit --config ui.interface=curses --interactive или вообще, добавив следующий код .hgrc:

[ui]
interface = curses

Как полагают в этот вопрос переполнения стека, самый простой способ сделать это с hg shelve.

Comments

    Ничего не найдено.