Является ли «тянуть» синонимом слова «клон» в репозитории системы управления версиями Mercurial?

Я вижу команду «тянуть» и задаюсь вопросом, чем она отличается от «клона». Оба термина, похоже, подразумевают получение кода из некоторого удаленного репозитория. Есть ли здесь какое-то тонкое различие?


person tent    schedule 09.09.2009    source источник
comment
Поскольку вы, кажется, только начинаете работать с Mercurial, вам, вероятно, следует прочитать этот вопрос о переполнении стека: stackoverflow.com/questions/1170338/ Вам также следует прочитать и / или проработать несколько первых глав Mercurial: The Definitive Guide: hgbook.red-bean.com/read Наконец, вы можете создать игрушечный проект на bitbucket.org, чтобы получить некоторую практику работы с Mercurial.   -  person las3rjock    schedule 09.09.2009
comment
Отличные ссылки. Очень полезно. Спасибо.   -  person tent    schedule 09.09.2009
comment
hginit.com также предоставляет отличное руководство. Все мои новые сотрудники и стажеры проходят через это, когда присоединяются к моей команде.   -  person JSmitty    schedule 22.07.2013


Ответы (3)


hg clone - это способ создания локальной копии удаленного репозитория. Эквивалент Subversion - svn checkout.

hg pull извлекает изменения из другого репозитория. hg update применяет эти изменения к локальному репозиторию. hg pull -u эквивалентно hg pull; hg update. В Subversion, эквивалентном hg pull -u, является svn update.

person las3rjock    schedule 09.09.2009

Используйте clone, когда вам нужно создать новый репозиторий на основе другого. Позже используйте pull, чтобы перенести новые наборы изменений в клон. Вы не можете использовать clone для получения только новейших ревизий - для этого и нужен pull. Команда pull сравнит два репозитория, найдет недостающие ревизии в вашем репозитории и, наконец, перенесет их.

Однако вы правы в том, что между clone и pull есть общие черты: они оба передают историю между репозиториями. Если вы сначала клонируете

hg clone https://www.mercurial-scm.org/repo/hg/

тогда это имеет тот же эффект, что и выполнение

hg init hg
cd hg
hg pull https://www.mercurial-scm.org/repo/hg/
hg update

В обоих случаях вы получите одинаковую историю. Однако команда clone более удобна, поскольку она также редактирует файл .hg/hgrc, чтобы вы могли установить путь по умолчанию:

[paths]
default = https://www.mercurial-scm.org/repo/hg/

Это то, что позволяет вам делать hg pull в репозитории без указания URL. Еще одно преимущество использования клона заключается в том, что вы работаете с репозиториями на одном диске: hg clone a b будет очень быстрым и дешевым с точки зрения дискового пространства, поскольку b будет делиться историей с a. Это делается с использованием жестких ссылок и работает на всех платформах (Windows, Linux, Mac).

person Martin Geisler    schedule 09.09.2009

clone создает новый репозиторий как копию существующего репозитория.

pull импортирует все наборы изменений (еще не существующие) из другого репозитория в существующий репозиторий.

person wierob    schedule 09.09.2009