git svn частичное подрывное дерево - PullRequest
1 голос
/ 18 сентября 2011

Я использую git для разработки текущего проекта на моей локальной машине.Существует сервер Subversion, который я должен время от времени обновлять, основываясь на моей текущей главной ветке.

Допустим, мой каталог в svn:

project/module/

В этом каталогеэто один общий каталог и моя структура svn

project/module/aDirectory
project/module/myGitDirectory/trunk
project/module/myGitDirectory/branches
project/module/myGitDirectory/tags

Следуя git-svn, я настроил свой git на использование каталога в качестве апстрима:

[svn-remote "svn"]
        url = https://mygit.test.com/project
        fetch = module/myGitDirectory/trunk:refs/remotes/trunk
        branches = module/myGitDirectory/branches/*:refs/remotes/*
        tags = module/myGitDirectory/tags/*:refs/remotes/tags/*

Я нормально работал в git и зафиксировал мойизменяется только с

git svn dcommit

на частичное дерево SVN

Это работало довольно хорошо, пока кто-то еще не совершил в

project/module/aDirectory

, которого нет в моем локальном репозитории git.

Ошибка для git svn dcommit была:

Unable to determine upstream SVN information from HEAD history.

Я нашел эту проблему в Google и нашел здесь несколько решений, но решения не помогли мне.Либо это не сработало вообще, либо мне пришлось объединить десятки файлов, которые мне не нужны.Мой текущий обходной путь - извлечение полного svn, копирование изменений из git в svn repo и просто их фиксация.

Так что мой вопрос, возможно ли использовать такое частичное дерево svn в git-svn, как яделать?Я сделал какую-то ошибку, указав неправильные каталоги для git-svn?Или git-svn не является подходящим решением для моего сценария.

И если я могу сделать это так, как я начал, что произойдет с svn, фиксирующим файлы, которые не отслеживаются в моем локальном git?

Я использую комбинацию svn и git в некоторых других проектах и ​​никогда не сталкивался с какими-либо проблемами, но там все дерево svn также управляется в git.Таким образом, каждый коммит в svn имеет подходящее место в моем git-репо:)

1 Ответ

0 голосов
/ 21 сентября 2011

Это странно.Но вы также можете клонировать aDirectory для git.Просто добавьте это в конфиг

[svn-remote "svn-extra"]
        url = https://mygit.test.com/project
        fetch = aGitDirectory:refs/remotes/aDirectory

После этого клона aDirectory из SVN

git svn fetch svn-extra

И попробуйте получить предыдущий с новым уже в вашем репо

git svn fetch --fetch-all

Возможно, это поможет git-svn понять этот нетипичный коммит.

...