Пакетный файл Mercurial Windows для извлечения изменений в нескольких хранилищах - PullRequest
1 голос
/ 26 мая 2009

Я - пользователь Mercurial в Windows, и я пытаюсь написать командный файл для проверки входящих изменений в количестве хранилищ, хранящихся в общей папке (т. Е. В основной папке может быть около 10 небольших хранилищ Mercurial). , У меня есть следующий пакетный файл, который успешно проходит через несколько репозиториев и запускает входящий hg. Однако я не могу заставить его выполнить hg -pull -u, когда обнаружен репозиторий с удаленными изменениями.

   FOR /D /r %%G in (".hg*") DO (
    @echo Processing: %%G
    cd /d %%G\.. 
    hg incoming
    IF NOT ERRORLEVEL 0 (
        echo Pulling changes from the server
        hg pull -u
    )
    cd..
    )

Я почти уверен, что проблема в утверждении If. Кажется, что hg входящий не имеет возвращаемого значения, которое может быть интерпретировано ошибкой. Это правильный подход, или я должен использовать вместо Python?

1 Ответ

3 голосов
/ 26 мая 2009

Код выхода для hg incoming и hg outgoing равен 1, если не было входящих / исходящих наборов изменений, и 0 в противном случае, и это означает, что ваш тест задом наперед. (Коды выхода были задокументированы с тех пор, как был задан этот вопрос, и теперь их можно найти в hg help incoming и hg help outgoing.)

Кроме того, выполнение hg incoming и hg pull делает работу дважды: вам просто нужно использовать hg pull. Справка для hg incoming гласит:

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

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

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