Як поєднати два проекти в Mercurial?


84

У мене є два окремі ртутні сховища. На даний момент має сенс, що вони "стають єдиним", тому що я хочу працювати над двома проектами одночасно.

Я б дуже хотів, щоб два проекти були підкаталогом у новому сховищі.

  1. Як об’єднати два проекти?
  2. Це гарна ідея, чи я повинен тримати їх окремо?

Здається, я повинен мати можливість переходити з одного сховища на інше ... Може, це справді прямо?

Відповіді:


69

Я зміг поєднати свої два сховища таким чином:

  1. Використовуйте hg clone first_repositoryдля клонування одного зі сховищ.
  2. Використовуйте hg pull -f other_repositoryдля витягування коду з іншого сховища.

-f(Сила) прапор на тягнути є ключовим - це говорить ігнорувати той факт , що два сховища, а не з того ж джерела.

Ось документи для цієї функції.


1
Чи зберігає це також хеш-ключі комітів з другого репозиторію? (Я думаю, ні, але це може бути нормально, поки ви не зробите злиття.)
Маке

6
Це працює, але вам також доведеться бігти, hg mergeщоб нарешті все запрацювати
Factor Mystic

7
@Marcus Lindblom: витягування набору змін ніколи, ніколи не змінить його хеш. Якщо ви подивитесь на hg glogце, ви побачите, що у вас є два не пов’язані між собою рядки наборів змін. Перший набір змін у кожному рядку не має батьків, але це не проблема для Mercurial. Після того, як ви витягнете, ви захочете зробити по одному новому набору змін для кожного рядка, де ви hg mvвмістите все у відповідну підпапку, тоді ви об’єднаєте рядки і все готово.
Стів Лош,

1
що якщо два сховища мають спільний для обох код. Чи буде це автоматично оброблятися злиттям? а що стосується злиття, то можна сказати $ hg merge?
kamal

2
для довідкових цілей, ось документи для цього процесу mercurial.selenic.com/wiki/MergingUnrelatedRepositories
Gent

7

hg почав використовувати субрепо з 1.3 ( 01.07.2009 ). Ранні версії були неповними та хиткими, але зараз вони досить корисні.


2
Я виявив, що субрепо є проблемою для роботи. Вони працюють, але вам доведеться перестрибнути кілька обручів, щоб змусити їх поводитися, і якщо ви не будете обережні, це може стати причиною багатьох головних болів.
Піт Данкансон,

4
Можливо, варто зазначити, що офіційно підрепозиторії є особливістю: mercurial.selenic.com/wiki/Subrepository (станом на 12.11.2013)
jtpereyda

3

Якщо ви не використовуєте однаковий код у проектах, тримайте їх окремо. Ви можете встановити своє особисте сховище кожного з цих проектів просто як каталог. Навіщо змішувати всі гілки, об’єднувати та робити коментарі, коли цього не потрібно.

Про ваше редагування: перехід від одного сховища до іншого. Ви завжди можете скористатися transplantкомандою. Хоча все це насправді побічно перешкоджає вашому бажанню поєднати ці два, тож ви можете почуватись незручно, використовуючи мої пропозиції. Тоді ви можете скористатися лісовою прибудовою або щось інше.

hg transplant -s REPOSITORY lower_rev:high_rev
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.