Пакетный файл Windows выходит при выполнении команд Mercurial - PullRequest
5 голосов
/ 07 марта 2011

Для ежедневного резервного копирования моих ртутных репозиториев в Windows XP я использовал простой пакетный файл hg_backup.bat, который только что сделал некоторые изменения в каталоге и ртутные вызовы с помощью команды pause в конце, например:1005 * Это работало нормально с Mercurial до 1.7 (установлен с TortoiseHg).Однако, начиная с mercurial 1.8, он запускает самую первую команду mercurial, а затем внезапно завершает работу, не выполняя следующие команды или даже конец сценария.Окно команд просто исчезает.

У меня была такая же проблема некоторое время назад, когда я пытался сделать то же самое с git, но больше не занимался расследованием, потому что я использую git только для одного репозитория.Мне кажется, есть некоторый код возврата задействованного вызова командной строки hg, который приводит к завершению сценария вместо выполнения другой команды, но я пока не могу проверить это.

Кто-нибудь знает, почему это происходит?а может даже как это исправить?

Ответы [ 2 ]

8 голосов
/ 07 марта 2011

Если ваш hg является hg.bat или hg.cmd, используйте call hg и посмотрите, начнет ли он работать.

Оболочка command.com выполняет пакетные файлы , заменяя старый сценарий (для экономии памяти), и требует использования call для запуска пакетного сценария и продолжения выполнения позже. Такое поведение сохраняется в Windows cmd.exe для совместимости.

0 голосов
/ 08 марта 2011

У меня была точно такая же проблема, но решение, предоставленное @grawity, не сработало для меня (и я понятия не имею, почему).

Решение в моем случае состояло в том, чтобы заменить call на cmd /C, вот так:

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