Я новичок в Mercurial HG. Мои друзья создали репо, и я собираюсь использовать его. Я установил TortoiseHG и попытался получить последний код. Я обнаружил, что при использовании операции клонирования он будет вытаскивать весь код в мой локальный, включая истории (я прав?). Это не нужно для меня. Я просто хочу получить последний код. Есть ли операция для этого?
При использовании Mercurial HG, как получить последний код?
Ответ 1
Короче говоря, нет.
Еще немного: Mercurial еще не поддерживает "мелкие" клоны, в которых вы только получаете часть истории. Таким образом, каждый раз, когда вы клонируете, вы втягиваете весь репозиторий со всеми наборами изменений.
Кроме того, в отличие от Subversion, невозможно создать "узкий" клон, где вы проверяете только часть репозитория. Например, если в репозитории есть каталоги foo/
и bar/
, нет способа получить только каталог bar/
. Другими словами, Mercurial всегда работает с моментальными снимками проекта.
Ответ 2
Самый простой способ добиться того, чего вы хотите:
hg archive [destination folder]
Ответ 3
Как только вы клонировали репозиторий, чтобы получить код "tip" (последняя версия текущей ветки - по умолчанию, если не уточнена), вам просто нужно update
.
У вас есть действие обновления в TortoiseHG. После этого вы можете посмотреть файлы в папке.
Если вам требуется другое состояние репозитория (старая версия или старое тегированное состояние), то он по-прежнему выполняет команду update
с другими параметрами (см. документы или интерфейс TortoiseHG).
Ответ 4
Если вам нужен только последний код, и вы не собираетесь делать с ним что-либо, связанное с репозиторией, например, commit или diff для более старых версий или что-то еще, тогда вы зависите от того, где вы получили код из и как.
Если он использует одну из услуг хостинга, например bitbucket, обычно используется ссылка для загрузки, которая дает вам только исходный код.
Например, если вы идете здесь, там есть ссылка "Получить источник" и направо, что дает вам несколько вариантов в формат файла (zip или whatnot.)
Если вы получили файлы в другом месте, вам нужно изучить интерфейс, из которого вы их получили. Попробуйте просто вставить ссылку, которую вы клонировали в свой браузер, и посмотреть, что вы получаете.
Ответ 5
Конечно. Выполните клонирование репозитория, затем удалите подкаталог .hg.
Ответ 6
Возможно, я немного опоздал, но на самом деле можно забыть историю с Mercurial. Вам просто нужно включить преобразование расширения из файла mercurial.ini или .hgrc.
[extensions]
hgext.convert=
Теперь вы можете использовать расширение конвертации для "клонирования" только наборов изменений, начиная с указанной ревизии.
hg convert --config convert.hg.startrev=[wheretostart] path_to_full_history_repo path_to_new_repo
Просто обратите внимание, что это не такая же операция с hg-клоном. Поэтому исходный репозиторий должен быть локальным репозиторием. Например, если у нас есть репозиторий в папке MyProject, и мы хотим забыть все изменения, сделанные до версии 100. Мы можем использовать следующую команду:
hg convert --config convert.hg.startrev=[100] MyProject MyShrinkedProject
Если вы собираетесь использовать этот суровый репозиторий на "центральном сервере", помните, чтобы заботиться о том, чтобы все клонировали его, прежде чем они продолжали работать. Хранилища несовместимы друг с другом.
Ответ 7
Чтобы вытащить только подмножество наборов изменений, укажите одну или несколько ревизий идентификаторы с -r/- rev или ветки с ветвью -b/-. Результирующий clone будет содержать только указанные изменения и их предки.
например. hg clone -b NeededBranch http://example.com/myRepo