git-svn dcommit error: невозможно определить информацию SVN восходящего направления - PullRequest
7 голосов
/ 22 июня 2010

Я пробую git-svn и получаю следующую ошибку. То, что я сделал до сих пор, это

 git svn init -T <my svn repo> 

тогда я добавляю в свой репозиторий

 git commit -a

тогда, как только я сделал несколько из тех, что я сделал

 git svn fetch

а потом я попробовал

 git svn dcommit

Однако, это не с

Невозможно определить восходящую информацию SVN из истории HEAD. Возможно, хранилище пусто

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

После этой первоначальной ошибки я попытался перебазировать без особого успеха (выдает другую ошибку).

Ответы [ 5 ]

3 голосов
/ 29 марта 2011

Я обнаружил, что, когда репозиторий SVN пуст, git-svn throws

Невозможно определить восходящую информацию SVN из истории HEAD

Таким образом, используя SVN, я проверил текстовый файл как первый коммит

svn add test.txt; svn commit -m "test file"

Тогда я смог сделать клон git svn, и это все исправило.

1 голос
/ 10 апреля 2016

Это общее ограничение git-svn?Или существует проблема между клавиатурой и стулом?

Это сообщение об ошибке было введено в git 1.5.1 (февраль 2007 г.) commit a8ae262

Поскольку вы делаете коммит из HEAD (или другого коммита, который является родителем HEAD), вы сможете найти коммит с информацией метаданных, содержащей URL-адрес SVN, с которого ваш HEAD был потомком извлечен.

Так что git должен найти коммит, включая URL-адрес SVN, чтобы dcommit одной из ваших веток работал правильно.

Или существует проблема между клавиатурой и стулом?

Это может произойти, если вы выберете одну из веток, созданных за до git svn clone.Вам нужно работать с ветками, созданными поверх тех, которые импортированы из SVN git svn clone.

1 голос
/ 01 ноября 2013

Этот сайт исправил проблему для меня: http://eikke.com/importing-a-git-tree-into-a-subversion-repository/. Прямая цитата:

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

$ git show-ref trunk 
> 741ab63aea786882eafd38dc74369e651f554c9c refs/remotes/trunk 
$ $ git log --pretty=oneline master | tail -n1
> 88464cfdf549a82b30ee7c52e53e2b310f0d9ec4 Initial version  
$ echo "88464cfdf549a82b30ee7c52e53e2b310f0d9ec4 741ab63aea786882eafd38dc74369e651f554c9c" >> .git/info/grafts`
1 голос
/ 22 июня 2010

Команды git svn аналогичны работе с обычным пультом (svn remote называется git-svn). fetch просто загружает коммиты с пульта, это никак не связывает их с вашим деревом. Это сработает, если вы получите сразу после инициализации, поскольку у вас еще нет дерева, но вы зафиксировали его первым. Вы хотите использовать git svn rebase, который переместит ваше дерево на голову SVN. Обычно вы git svn fetch сразу после git svn init или просто используете git svn clone, что делает оба. Как только начальный репозиторий настроен, вы можете просто использовать git svn rebase все время, который выбирает и перезагружает за одну операцию

0 голосов
/ 22 июня 2010

Просто предположите, попробуйте git svn clone , затем измените / зафиксируйте файлы, затем git svn dcommit .Я обычно так делаю, и это работает (в моем случае).

...