В частности, я не уверен, что изменения, внесенные, например, в 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
, потому что я предпочел бы видеть репо, сгруппированные по продуктам вместоклиентом ... Но, вероятно, есть веские причины сделать это по-своему.