Я пытаюсь выполнить скрипт hg diff
и хочу принять аргумент, который будет передан в параметр -r
, и если аргумент не указан, по умолчанию рабочий каталог. Тем не менее, представляется, что нет никакого значения, которые могут быть переданы в -r
указать «рабочий каталог», а вместо этого параметр должен быть полностью опущен, что приводит к следующей логике в моем сценарии:Есть ли Mercurial revset для «рабочего каталога»?
if [ -z "${to_rev}" ]; then
to_rev_args=""
else
to_rev_args="-r ${to_rev}"
fi
hg diff ... ${to_rev_args}
Я правильно полагая, что это единственный путь? Мы можем предположить, что принятие сценария принимает аргумент -r
и передача всего этого в Mercurial не является вариантом; аргументы должны соответствовать стилю, используемому набором инструментов.
Ну, 'hg diff' без параметров эквивалентно' hg diff -r .', а '.' обозначает * parent * рабочего каталога. С одним аргументом в редакции Mercurial будет сравнивать рабочий каталог с тем, что указано в указанной версии (и, если опущено, - '.'). Можете ли вы быть более конкретным, т. Е. Что вы пытаетесь отличить рабочий каталог (или любую другую ревизию) от? –
Я хочу найти различия между двумя состояниями. По умолчанию состояние «before» является последним публичным предком текущего родителя, а «after» - рабочим каталогом, но сценарий может принимать аргументы для любого состояния и передавать их на hg diff. Легче безоговорочно передать аргументы hg diff, чем условно передать их на основе значений аргументов скрипта, поэтому я хотел бы знать значение для аргумента по умолчанию «после», которое эквивалентно «рабочему каталогу» при его передаче до hg diff. –