Ответ 1
У меня нет полного ответа, но эта ошибка генерируется git-svn.perl. (Соответствующий путь кода, по-видимому, является do_fetch → make_log_entry → find_extra_svn_parents → lookup_svn_merge.) Этот код пытается найти свойство svn merge commit svn: mergeinfo, чтобы выяснить все его родительские коммиты/ветки, в надежде превратив это в приятное многопользовательское слияние, выполненное внутри клона git. Если это родительское разрешение выходит из строя, ваша фиксация по-прежнему будет получена в git; он просто не будет иметь такую же родительскую информацию, как в противном случае.
До сих пор я лично не обнаружил серьезных проблем, связанных с этой ошибкой для моего текущего основного варианта использования, который преобразует svn repo в git; git -svn удалось разрешить большие слияния, которые на самом деле имеют значение для меня, и эти ошибки до сих пор кажутся ограниченными только отдельными слияниями вишни или старыми ветвями, которые мне больше не нужны.
На самом деле, на первый взгляд, похоже, что в моем случае большинство этих ошибок проистекают из коммитов, где svn: mergeinfo записано на то, что Я интерпретирую неправильный уровень в svn. В svn repo мы обычно пытаемся записать svn: mergeinfo у корня ветки, например. в svn/trunk, тогда как случаи git жалуются на то, что, похоже, относятся к mergeinfo, которые привязаны к конкретным подкаталогам отрасли, например. на svn/trunk/dir1. Я не эксперт svn, но моя нынешняя эвристика заключается в том, что если у вас много svn: mergeinfos, которые не находятся в корневой ветке, может быть что-то неладное с вашим svn-репо или процессом слияния. Если это правильно, понятно, что git будет жаловаться. В моем собственном случае я думаю, что большинство этих "странных" коммитов модифицируют svn: mergeinfo как у корня ветки (например, svn/trunk), так и на уровне субдира (например, svn/trunk/dir1); git выделяет все, что требуется от корневого уровня, и бросает очевидную безвредную ошибку об уровне субдира.
Тем не менее, некоторые люди, по-видимому, сообщают о проблемах в некоторых случаях, возможно, особенно при перезагрузке в реестре git -svn, где не все ветки были проверены.