Ну, да и нет.
Я знаю, что ваш вопрос указывает на то, что вы используете удаленный репозиторий в качестве источника, но название вопроса немного шире, поэтому я отвечаю на более широкий вопрос.вопрос.
Кажущийся очевидным конечный результат тот же.Хотя файлы внутри двух репозиториев не являются двоичными идентичными (обратите внимание, я не говорю о файлах, которые вы отслеживаете, я говорю о «базе данных», которую Mercurial использует для отслеживания этих файлов), истории, наборах изменений и т.д.... все одинаковы.
Так что в этом отношении, да, эти двое, похоже, делают одно и то же.
Однако они делают это по-разному.
Есливы делаете это:
hg clone REMOTE_URL
hg init && hg pull REMOTE_URL
Тогда реальной разницы нет.
Однако, если вы сделаете это:
hg clone LOCAL_PATH
hg init && hg pull LOCAL_PATH
(обратите внимание, этот клон/ pull из другого репозитория уже на вашем диске)
Тогда может быть разница.Локальный клон, если возможно, будет использовать жесткие ссылки для хранилища.Другими словами, вы не создаете новую отдельную копию всех файлов в хранилище, вы создаете для них новые ссылки на диск, которые работают значительно быстрее и почти не требуют места.
Затем,когда вы начнете изменять историю, т.е.При внесении новых наборов изменений эти файлы становятся несвязанными и делаются полными копиями по требованию.
Обратите внимание, что точная эвристика для файлов, для которых он создает и не создает такие жесткие ссылки, мне неизвестна.Вы можете прочитать больше об этой функции в вики Mercurial, Жесткие клоны .
Вытягивание не сделает этого.Он будет читать из другого хранилища и создавать / обновлять новые файлы в целевом хранилище.Это занимает больше времени и больше дискового пространства.
Итак, подведем итог:
hg clone LOCAL_PATH
может использовать намного меньше дискового пространства и работать намного быстрее, чем hg init && hg pull LOCAL_PATH
- Если вы клонируете / извлекаете данные из удаленного хранилища, реальной разницы нет