Это, вероятно, означает, что вы получаете новую ревизию svn, которая изменяет файл, который (по какой-то причине) не существует в вашем git commit эквиваленте родительской ревизии svn. Один из очень простых способов вызвать это - быть несовместимым с --ignore-paths
(изначально не было никакого способа настроить их, и их нужно было вводить в каждой командной строке git-svn
, которая может быть получена). Другой способ заключается в том, чтобы кто-то на стороне сервера svn изменил разрешения репозитория таким образом, чтобы внезапно появилось целое поддерево файлов (с вашей точки зрения), для которого у вашего git-репозитория нет истории.
Самый простой способ обойти эту непосредственную проблему и продолжить git-svn fetch
- это использовать --ignore-paths
(или лучше запись конфигурации svn-remote.svn.ignore-paths
), чтобы игнорировать проблемную часть дерева. Вы можете сойти с аргумента командной строки, чтобы передать одну ревизию, и вы не столкнетесь с проблемой снова, пока кто-то не изменит ее на стороне svn.
Если вы хотите восстановить без --ignore-paths
, вам нужно будет исправить родительскую ревизию, чтобы она включала изменяемый файл. Я написал git-svn reset
специально для того, чтобы сделать «выборку», на которую вы ссылаетесь, с меньшими усилиями. Он может сбросить ваш SVN Remote обратно туда, где файл был действительно создан, чтобы вы могли интегрировать его в свою историю. Это не уничтожит ваши рабочие копии, но вам нужно будет переписать все рабочие ветви в этой новой истории.