Рекомендуемый подход для преобразования структуры репозитория SVN в Mercurial - PullRequest
1 голос
/ 04 ноября 2011

В настоящее время я выясняю, как лучше всего перейти с SVN на Mercurial.

Я провел некоторые исследования рекомендуемых структур репозитория Mercurial - см. Переобразование Subversion , Рекомендованная структура репозитория / папки Mercurial для пользователя SVN и (еще одно ) Как лучше всего преобразовать SVN-репозиторий в HG-репозиторий (и)? .

Я думаю, что сейчас у меня есть структура, но я хотел бы дать несколько советов о том, как лучше всего подойти к фактическому преобразованию.

Просто для справки, вот наша текущая структура SVN:

Project-repository
    Trunk
        ProductA
            Trunk
            Branches
            Tags
        ProductB
            Trunk
            Branches
            Tags
    Branches
        ClientA
            ProductA
                Trunk
                Branches
                Tags
            ProductB
                Trunk
                Branches
                Tags
        ClientB
            ProductA
                Trunk
                Branches
                Tags
            ProductB
                Trunk
                Branches
                Tags
    Tags

и вот предложенная структура ртути:

Stable-ProductA-repository

Stable-ProductB-repository

ClientA-ProductA-repository (branched from Stable-ProductA-repository)

ClientA-ProductB-repository (branched from Stable-ProductB-repository)

Теперь, чтобы преобразовать нашу текущую структуру SVN в Hg, я думаю сделать это следующим образом, используя расширение Convert

  1. Преобразовать «Проект-хранилище / Магистраль / ПродуктA» в Стабильный-ПродуктА-хранилище
  2. Преобразовать "Проект-хранилище / Магистраль / ПродуктB" в Стабильный-ПродуктB-хранилище
  3. Преобразовать «Проект-репозиторий / Филиалы / ClientA / ProductA» в ClientA-ProductA-репозиторий
  4. Преобразовать «Проект-репозиторий / Филиалы / ClientA / ProductB» в ClientA-ProductB-репозиторий
  5. Etc. для клиентаB

Из того, что я прочитал, похоже, что это правильный способ структурировать ваш репозиторий Mercurial и выполнить преобразование из SVN в Mercurial, но я немного не уверен, что что-то упустил. В частности, я не уверен, если изменения были внесены, например, в. хранилище ClientA-ProductA-репозиторий можно извлечь из хранилища Stable-ProductA-репозиторий. Мы проводим большую часть времени в разработке клиентских репозиториев, поэтому нам нужно иметь возможность объединять изменения обратно в стабильный репозиторий.

Мне известно, что Mercurial поддерживает суб-репозитории, но я бы хотел отойти от структуры вложенных репозиториев и, если можно так выразиться, иметь четкую структуру.

Так что просто для ясности в том, что я спрашиваю: можно ли будет тянуть / толкать между репозиториями после преобразования из одного SVN-репозитория в несколько Hg-репозиториев, и звучит ли мое предложение о новой структуре Hg?

1 Ответ

2 голосов
/ 04 ноября 2011

В частности, я не уверен, что изменения, внесенные, например, в ClientA-ProductA-репозиторий, можно извлечь из Stable-ProductA-репозитория.Мы проводим большую часть времени в разработке клиентских репозиториев, поэтому нам нужно иметь возможность объединить изменения обратно в стабильный репозиторий.

Изначально нет, я не верю, что вы сможете вытащитьот них.Тем не менее, не составит труда выполнить начальное слияние вручную.На самом деле, я полагаю, что это будет так же просто, как запустить:

clientA$ hg checkout $CLIENTA_HEAD
clientA$ hg pull ../stable
clientA$ HGMERGE=true hg merge $STABLE_HEAD
clientA$ hg revert --all -r $CLIENTA_HEAD
clientA$ hg ci -m "Merge stable into clientA, throwing away changes from stable"

Теперь, с этого момента (ну, после перевода этих изменений в стабильный и, возможно, немного более сложного), два хранилища будутиметь общего предка, так что вы сможете объединяться между ними.

Я знаю, что Mercurial поддерживает суб-репозитории, но я бы хотел отойти от структуры вложенных репозиториев и иметь чистую обрезкутак сказать.

В общем, это хорошая идея, просто будьте осторожны, если у вас есть, например, библиотека утилит, от которой все зависит - менее болезненно хранить ее в подпункте, чтобы убедиться, чточто для любой версии вашего «основного» репо вы можете узнать, для какой версии репозитория утилит оно было построено.

Так что просто чтобы понять, о чем я спрашиваю:можно будет тянуть / толкать между репозиториями после преобразования из одного SVN-репозитория в несколько Hg-репозиториев, и мое предложение о новой структуре Hg звучит?

Звучит разумно для меня.

Единственное, что я бы изменил, это то, что я бы использовал ProductA-ClientA вместо ClientA-ProductA, потому что я предпочел бы видеть репо, сгруппированные по продуктам вместоклиентом ... Но, вероятно, есть веские причины сделать это по-своему.

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