В Mercurial найдите все наборы изменений, которые являются исходящими и имеют родителя, который не является исходящим - PullRequest
4 голосов
/ 07 декабря 2011

У меня есть большое количество отдельных списков наборов изменений, которые я извлек от коллеги.Я хочу удалить их.

Я могу идентифицировать все наборы изменений, используя:

hg log -r "outgoing() and not author('Brandon Leiran')"

Я мог бы использовать шаблон для печати только имен узлов, а затем использовать это для моего списка полос, но я бы очень хотел найти только «базу» каждой исходящей строки наборов изменений.Могу ли я сделать это с помощью запроса revset?Или что-то подобное?

Ответы [ 2 ]

4 голосов
/ 07 декабря 2011

Начиная с версии 1.7, команда чередования позволяет вам указать несколько наборов изменений для чередования и позволяет использовать revsets. Так

$ hg strip "outgoing() and not author('Brandon Leiran')"

удалит все наборы изменений в одной команде. Другими словами, вам не нужно самим находить базу (базы), стриптиз сделает это за вас.

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

$ hg log -r "roots(outgoing() and not author('Brandon Leiran'))"
0 голосов
/ 07 декабря 2011

Я предполагаю, что у вас нет "важных" (то есть ваших) наборов изменений поверх любой из веток, которые вы потянули.

Теперь, если это так, и количество отдельных ветвей (или списков, как вы называлиих), возможно, вы захотите удалить результат этого селектора несколько раз, пока он не даст никаких наборов изменений:

min(outgoing() and not author('Brandon Leiran'))

Поскольку min возвращает набор изменений с наименьшим номером ревизии в наборе, он будетоснование одной ветви, которую вы разденете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...