Как получить новые данные в существующем хранилище git и зафиксировать в svn? - PullRequest
0 голосов
/ 19 апреля 2011

Я использую git-svn для получения данных в репозитории svn из git. Я успешно импортировал данные из git в svn с подмодулями (я преобразовал подмодули как поддерево git), используя некоторую работу, и это работало нормально.

Но теперь я застреваю. Если я хочу получить git pull данные об обновлении существующих репозиториев git, он выдает мне все обновленные данные в моей локальной ветке, но я не могу dcommit для svn с помощью команды git svn dcommit, которая выдает мне сообщение об ошибке следующим образом:

Unable to determine upstream SVN information from HEAD history 
Perhaps the repository is empty. at /usr/libexec/git-core/git-svn line 521. 

Буду очень признателен за любые инструкции о том, как это сделать!

1 Ответ

0 голосов
/ 19 апреля 2011

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

Я полностью использовал свой git, пытаясь сделать то, что вы пытаетесь сделать, потянувиз удаленного репозитория git затем нажмите на subversion.

Теперь я использую git для выполнения SCC, и я копирую файлы в локальное дерево, контролируемое только Subversion, а затем проверяю это в Subversion.

Я написал скрипт ruby, который выполняет синхронизацию между локальным рабочим деревом git и локальным подрывным.Он копирует только измененные файлы и только те файлы, которые мне нужны.Затем я делаю обычное svn ci из рабочего дерева Subversion.

Хорошо, я нашел источник моего понимания здесь ... http://git -scm.com / docs / git-svn под заголовком CAVEATS ...

Для простоты и взаимодействия с менее способной системой (SVN) рекомендуется, чтобы все пользователи git svn клонировали, выбирали и dcommit непосредственно изSVN-сервер и избегайте всех операций git clone / pull / merge / push между git-репозиториями и ветками.Рекомендуемый метод обмена кодом между ветками git и пользователями - это git format-patch и git am, или просто 'dcommit' для репозитория SVN.

Запуск git merge или git pull НЕ рекомендуется в ветке, которую вы используете.планировать отSubversion не представляет слияния каким-либо разумным или полезным способом;таким образом, пользователи, использующие Subversion, не могут видеть сделанные вами слияния.Более того, если вы объединяете или извлекаете ветку git, которая является зеркалом ветки SVN, dcommit может зафиксировать неправильную ветвь.

...