используя hg revert, чтобы вернуть группу файлов в Mercurial - PullRequest
4 голосов
/ 27 марта 2012

Я использую Mercurial для чтения и отладки сложного проекта, и моя модификация проекта может быть четко разделена на разные группы файлов.Например, если я изменил четыре файла

src1.cc src1.hh src2.cc src2.hh

Очевидно, что я могу разделить их на две группы файлов, например, группа src1 включает в себя 'src1.cc src1.hh', а группа src2 включает в себя 'src2.cc src2.hh.

Мне интересно, могу ли я вернуть группу файлов с помощью простой команды, например, 'hg revert group-name-alias', вместо того, чтобы перечислить все имена файлов группы, что является ужасной идеей, если я изменилмного файлов.

Любая помощь очень ценится!

Ответы [ 3 ]

5 голосов
/ 28 марта 2012

Из того, что я могу понять о вашем сценарии использования, вы можете:

  1. Использовать шаблоны в команде hg revert.Это означает, что вы можете запустить hg revert src1*, чтобы восстановить всю первую группу.

    Скорее всего, ваши данные находятся в подпапках, и, к счастью, вы можете указать родительскую папку для команды revert.

    Итак, ваши файлы действительно похожи на: foo/src1.cc, foo/src1.hh, bar/src2.cc, bar/src2.hh.В этом случае вы можете вернуть всю вторую группу с помощью hg revert bar, предполагая, что вы находитесь в верхней папке.Если вы уже находитесь в папке bar, вы можете запустить hg revert ..

    . Можно указать несколько шаблонов.

  2. Использовать Mercurial queues , если каждая из ваших «групп файлов» - это также отдельная единица работы (другое исправление ошибки или функция).Это не очень желательно, если все файлы принадлежат одной и той же единице работы.

4 голосов
/ 27 марта 2012

Нет. Насколько мне известно, в Mercurial нет механизма группировки файлов.

Вы можете сделать несколько хитростей с псевдонимами ([alias] revert-group-name = revert src2.cc src2.hh в ~/.hgrc), но псевдонимы могут быть только префиксами и не могут выполнять расширения переменных.

Если ваши файлы достаточно просты, вы можете использовать глобирование оболочки (hg revert src2*) или переменную оболочки (GROUP_NAME="src2.cc src2.hh", тогда hg revert $GROUP_NAME).

Вы также можете написать небольшое расширение Mercurial. Если вы знаете Python, они не занимают много времени (мой первый занял у меня около 30 минут).

1 голос
/ 07 декабря 2016

Если имена файлов соответствуют шаблонам, вы можете использовать этот шаблон:

hg revert src1* 

или

hg revert src1*.*

Если эти файлы находятся в определенном каталоге, вы можете сделать это:

hg revert dir\*

Если каталог имеет глубину более одного уровня и вы хотите получить этот каталог и все его подкаталоги, вы можете использовать эту версию этой рекомендации:

hg revert dir\**\*
...