Mercurial: как я могу импортировать только некоторые наборы изменений из репозитория? - PullRequest
3 голосов
/ 27 апреля 2011

У меня есть хранилище под названием «мой проект», основанное на фреймворке, называемом «фреймворк». У каждого из них есть свой репозиторий, не связанный между собой, с каждой ветвью и тегами. Я хочу получать обновления "framework" в моем репозитории, но только из ветки "default", а не из других. И, конечно же, я не хочу, чтобы в моем репозитории были теги "framework", поскольку это совершенно другой проект.

У меня есть Mercurial HG, и я хотел бы иметь возможность извлекать изменения из репозитория «framework» непосредственно со страницы «Управление репозиторием».

Кроме того, я хочу загружать только последние наборы изменений, так как я начал свой проект не так давно. И было бы идеально, если бы я мог переименовать ветку по умолчанию «framework» на другое имя в моем репо, например. "Framework Changesets".

Примечание: У меня нет прав на запись в репозиторий "framework".

Я пытался сделать то, что сказал Mercurial Wiki:

hg pull -f -r default "framework"

Это было нормально, пока я не понял, что я загрузил все теги из репозитория «framework», и я загрузил все наборы изменений из удаленного репозитория. Более того, когда в TortoiseHG-> Configuration-> Synchronization я помещал репозиторий «framework» в качестве удаленного репозитория для этого проекта и извлекал данные из удаленного репозитория, я получил все ветви из этого репозитория.

Конечно, я не смог изменить имя ветви по умолчанию и обновил свою ветку по умолчанию, хотя я пытался использовать hg convert --branchmap (но я не знал, как его использовать).

Есть ли решение моей проблемы? или даже частичное решение?

Ответы [ 2 ]

6 голосов
/ 27 апреля 2011

Я думаю, что вы можете решить эту проблему с помощью комбинации этих вещей:

Вытягивание определенных веток

Использование командной строки: hg pull -r <branch name>

Использование TortoiseHg v1.1.X:

  1. Проверьте наличие входящих наборов изменений с помощью кнопки с пометкой Загрузка и просмотр входящих наборов изменений
  2. Щелкните правой кнопкой мыши кончик ветки, которую вы хотите вытянуть, и выберите Потяните сюда
  3. Отклонить остальные наборы изменений с помощью кнопки Отклонить

Удаление существующих тегов

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

Изменение названия филиала

Используя расширение mq , вы можете изменить именованную ветвь, в которой живут ваши новые наборы изменений "framework". См. Ответ на вопрос « Apply patches in branch » для получения инструкций о том, как сделать это в TortoiseHg v1.1.X, а также в CLI. Основная идея здесь состоит в том, чтобы создать именованную ветвь с нужным именем, импортировать все «каркасные» наборы изменений, которые вы перетащили в очередь патчей, а затем применить их к новой именованной ветке. Они будут отбрасывать имя ветви из «фреймворка» и использовать имя ветви, к которой вы их применили.

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

0 голосов
/ 28 февраля 2017

Мы можем указать имя ветви, добавив имя ветви с символом # в URL-адресе клона.

, например

hg clone --verbose https://user@cloneurl/my_product#MY_BRANCH "C:\myCode"
...