Учебник - Обмен изменениями с другим репозиторием
(Это 5-я из 9-ти частей Учебника. Предыдущая - Создание первого изменения, Следующая - Обмен изменениями с другими пользователями)
В статье Создание первого изменения мы создали набор изменений в хранилище my-hello-new-output. Теперь мы хотим опубликовать наши замечательные изменения где-нибудь ещё.
Следуя хорошему стилю работы с Mercurial, сначала клонируем оригинальное хранилище.
$ cd .. $ hg clone my-hello my-hello-share updating working directory 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
Мы можем использовать команду tip, чтобы найти tip в каждом хранилище. (Tip - это самый последний набор изменений). Мы укажем опцию -q ("be quiet" - "быть молчаливым" ), чтобы Mercurial не выводил полное описание tip'а.
$ cd my-hello-share $ hg -q tip 1:82e55d328c8c $ cd ../my-hello-new-output $ hg -q tip 2:86794f718fb1
Как можно увидеть, id tip'ов отличаются. Возвращаемся в my-hello-share и копируем в него changeset'ы. Чтобы сделать это, мы используем команду pull, которая подтягивает (pull) все наборы изменений из другого хранилища в текущий. Заметьте, именно из другого хранилища.
$ cd ../my-hello-share $ hg pull ../my-hello-new-output pulling from ../my-hello-new-output searching for changes adding changesets adding manifests adding file changes added 1 changesets with 1 changes to 1 files (run 'hg update' to get a working copy)
В отличие от других команд Mercurial'а, pull очень болтлива. В данном случае подтягивание было успешным.
Последняя строка вывода важна. По умолчанию Mercurial не обновляет рабочий каталог после pull'а. Это означает, что хотя теперь в хранилище содержится подтянутый набор изменений, содержимое файла hello.c в рабочем каталоге осталось таким же, как и до pull'а.
Мы можем обновить этот файл (как и все другие) командой update (либо используя сокращение up):
$ hg up 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
На этой стадии мы можем посмотреть и убедиться в том, что у репозитариев my-hello-share и my-hello-new-output одинаковый контент и истории ревизий.
Совместное использование изменений с другими разработчиками рассмотрено в главе "Обмен изменениями с другими пользователями".