Mercurial: конвертируйте клоны в ветки - PullRequest
3 голосов
/ 27 июля 2010

Я пытаюсь очистить некоторые свои клонированные репозитории, в основном конвертируя клоны в именованные ветви.

Какой самый простой способ сделать это?

Ответы [ 2 ]

5 голосов
/ 27 июля 2010

Единственный способ сделать их именованными ветвями - переписать их историю, потому что имя ветви является частью истории.Однако, если вы можете выжить, не называя ветки в прошлом (будущее хорошо), тогда вы можете просто вставить все репо в основное (без слияния!) И затем пометить свои ветви, как только они появятся.

Например, если у вас есть MainRepo, Feature1Repo и Feature2Repo, вы должны сделать следующее:

$ cd MainRepo
$ hg pull ../Feature1Repo
$ hg pull ../Feature2Repo

Теперь, если вы посмотрите на DAG в чем-то вроде TortoiseHg, вы увидитепара разных голов.Отсюда вы просто hg up и hg branch:

$ hg up feature1headrev
$ hg branch Feature1
$ hg up feature2headrev
$ hg branch Feature2

С этого момента у вас будут ваши именованные ветви.

Примечание. Если hg pull жалуется нарепозитории не связаны, вы можете сделать hg pull -f, который создаст несколько хвостов в репозитории.Обычно это не так, как настоящие ветви, но иногда это полезно.

3 голосов
/ 27 июля 2010

Вы можете использовать hg export для создания пакета изменений, а затем hg import внести их в ваши новые ветви.

Допустим, у вас есть общая база, revA, а затем два клона, каждый из которых расходится с revA на revB и revC.

В первом клоне: hg export -r revA -r revB > revB.patch
Во втором клоне: hg export -r revA -r revC > revC.patch

Теперь у вас есть два патча, содержащие все изменения, сделанные в клонах.

В исходном хранилище:

hg up revA
hg branch branchB
hg commit
hg import revB.patch
hg up revA
hg branch branchC
hg commit
hg import revC.patch

И теперь у вас есть две названные ветви, расходящиеся от revA. Если у вас есть слияния в областях между revA-> revB или revA-> revC, я не уверен, что это сохранит их идеально.

Другой альтернативой является использование удлинителя для пересадки. Или вы можете просто перенести изменения ваших клонов в один репо, а затем переместить головы, которые создают, в новые ветви.

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