Как мигрировать от Подрывной деятельности до Подвижного, когда структура ствола/отделения/признака - беспорядок?

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

Без дальнейшей суматохи текущая структура похожа так:

svn://svn.example.com/Example
    + trunk
        + BigProject
        + BinaryDepedencies
    + branches
        + BigProject
            + branch1
            + feature1
            + maintenance1
            + ...
    + tags
        + BigProject
            + tag1
            + tag2
            + ...
    + projects
        + small_project1
        + small_project2
        + small_project3
        + ...

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

Кроме того, по различным причинам я не буду в состоянии мерзавец использования, если не будет пуленепробиваемая стратегия преобразовать этот определенный repo от Подрывной деятельности до мерзавца к hg/bzr.

7
задан user255063 20 January 2010 в 16:57
поделиться

2 ответа

Одной стратегии может быть преобразование багажника. Возможно, вам придется играть в несколько игр, если ваш багажник переместился, но это не должно быть слишком сложно.

Другой инструмент в вашем арсенале может быть HG-> Hg Convision и расширение ребазы. Вы можете использовать их, чтобы скриться со своим деревом после того, как у вас есть вещи в репозитории и трансплантации HG на ветвях после того, как вы их преобразовали. Или трансплантат на новых кусках вашей истории багажника после его перемещения.

Вот приятная связь с документацией на расширении Mercurial Rebase .

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

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

cd second
hg log -r 0
# Note the revision hash
cd ../first
hg tip
# Again, note the revision hash
hg pull -f ../second
hg rebase --source <revision hash from hg log -r 0> --dest <revision hash from hg tip>

Это приведет к одному участку сундука на другую часть багажника.

Если у вас есть филиал в отдельном репозитории, процедура слегка сложнее:

cd branch
hg log -r 0
# Note the revision hash
cd ../trunk
# Find the revision that the branch branches off from and note its hash.
# We will call this revision the 'branch base'.
hg pull -f ../branch
hg rebase --source <revision hash from hg log -r 0> --dest <revision hash of branch base>

, которая привидет к ветви на главное дерево.

7
ответ дан 7 December 2019 в 01:21
поделиться

Согласно Преобразовать Документы расширения , что-то вроде следующее должно работать.

$ cat > ~/.hgrc <<EOF
[extensions]
hgext.convert=
EOF
$ hg convert --config convert.svn.trunk trunk/BigProject --config convert.svn.branches branches/BigProject --config convert.svn.tags tags/BigProject svn://svn.example.com/Example newhgrepo
3
ответ дан 7 December 2019 в 01:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: