git-svn объединяется, когда ветви не выстраиваются - PullRequest
0 голосов
/ 10 октября 2018

Я подозреваю, что это может быть просто несоответствие импеданса между git и svn, но я хотел бы спросить у сообщества SO совет.

Я работаю над проектом, который использует svn дляконтроль версий.Это не изменится, и я не могу это контролировать.Я с радостью выполняю свою работу в моей ветке, используя git-svn.Однако я столкнулся со странной проблемой, связанной со странным способом настройки проекта SVN.

В SVN проект выглядит так:

  • root проекта
    • ветви
      • MyBranch
        • Dir1
        • Dir2
        • и т. Д.
    • магистраль
      • Proj_Main
        • Dir1
        • Dir2
        • и т. Д.

.git / config:

[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
[svn-remote "svn"]
    url = http://svn-repo
    fetch = project/trunk:refs/remotes/trunk
    branches = project/branches/*:refs/remotes/*
    tags = project/tags/*:refs/remotes/tags/*

Когда ветви были созданы, они были созданы на один уровеньниже trunk.Я также не мог контролировать это.

Когда я пытаюсь слиться с MyBranch до trunk, мое дерево сливается на один уровень вверх.То есть MyBranch/Dir1 не имеет отношения к trunk/Proj_Main/Dir1svn изначально он понимает эту взаимосвязь, и я могу объединиться, используя svn инструменты, но git потеряно.

Есть ли способ сказать git, что master очковдо trunk/Proj_Main вместо trunk?

Ответы [ 2 ]

0 голосов
/ 11 октября 2018

@ eftshift0 имел правильный подход.Иногда нет спасения от плохой ситуации.Я убедился, что все синхронизировано с SVN, и начал все сначала.

git svn clone -r<start>:HEAD http://svn-repo/project \
    --prefix=mine/ \
    --trunk=trunk/Proj_Main --branches=branches --tags=tags \
    --no-minimize-url

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

--prefix основан на рекомендациях в git-svn docs .

Вместо -s или --stdlayout, я явно указал, как все было изложено в SVN.Обратите внимание, что ранние попытки применить этот подход натолкнулись на ошибку git-svn , возможно связанную с удаленной веткой SVN.Это еще одна причина ограничения объема выборки.

--no-minimize-url обусловлено тем, что на сервере существуют другие репозитории.Без этого переключателя git-svn поднимает уровень и считает все репозиториями в попытке разрешить ответвления, слияния и тому подобное.Это было не очень хорошо для меня.

0 голосов
/ 10 октября 2018

Отредактируйте строку выборки так:

fetch = project/trunk/Proj_Main:refs/remotes/trunk

Это должно сделать .... однако , я не знаю, придется ли вам снова выбирать из ревизии 1чтобы такое изменение работало корректно.

...