2010-07-01 3 views
37

У меня проблема, когда я пытаюсь выполнить git svn rebase в моем репозитории. Он отображает:Git svn rebase: контрольная сумма несоответствия

Checksum mismatch: code/app/meta_appli/app_info.py 
expected: d9cefed5d1a630273aa3742f7f414c83 
    got: 4eb5f3506698bdcb64347b5237ada19f 

Я много искал, но не нашел способа решить эту проблему.

Если кто-нибудь знает, пожалуйста, поделитесь своими знаниями. Спасибо заранее.

+1

Это похоже на вашу проблему: http://kerneltrap.org/mailarchive/git/2010/2/18/23715 – NorthGuard

+2

да, спасибо за ссылку. Для записи мне удалось снова запустить ее, удалив файл с сервера svn, выполнив проверку до последней версии, а затем снова добавив файл на svn. Это довольно жестко, но я не нашел другого пути. – darkpotpot

ответ

53

This solution был единственным, который работал на меня:

Посмотрите, что был номер версии последнего изменения в файле:

git svn log chrome/test/functional/search_engines.py

Reset СВН быть ближе родитель, прежде чем что ревизия:

git svn reset -r62248 -p

Сделайте git svn fetch!

Танец при вашем успехе.

+3

Отличная находка. Это определенно способ сделать это, из того, что я видел. Шаг журнала git svn был очень важен, хотя мне нужно было его использовать следующим образом: git svn log - chrome/test/functional/search_engines.py. Обратите внимание, что в этом случае указывается путь к файлу. –

+1

Особый случай, требующий дополнительной работы: репозиторий subversion имел атрибут 'svn: special = *' (символическая ссылка), который случайно был заменен целевым файлом. Это вызвало ошибки «имя файла слишком долго» с помощью 'git-svn', а затем, после исправления файла в подрывной системе, мы получили ошибки' checksum mismatch' с 'git-svn'. Полное решение здесь было: 1) 'git svn rebase --ignore-paths = <проблемный файл>'; 2) установите 'core.symlinks = false' в' .git/config'; 3) выполните описанный выше 'git svn reset'; 4) делать 'git svn rebase'; 5) удалите 'core.symlinks = false' из' .git/config'. Ой! – ntc2

+4

Кроме того, стоит упомянуть, что это пришло в один или два других раза, и после выполнения сброса git svn git gc гарантирует, что «мельная» история очищается и не перерабатывается. (что может привести к тому, что проблема повторится). Возможно, вам не придется это делать, но это помогло в моем случае. –

1

Только что случилось со мной, я выбежал из космоса посреди «git svn dcommit», и после этого я получил то же сообщение «Несоответствие контрольной суммы».

Я только что отредактировал .git/refs/remotes/git-svn и заменил идентификатор проблемной фиксации предыдущей. Следующая ошибка исправляет проблему.

0

Я только что сделал git gc, а затем git svn rebase снова работал.

1

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

-1

В нашей практике ошибка «Несоответствие контрольной суммы:» в .shtml-файлах в команде git svn clone ... была вызвана установкой интерфейсного сервера Apache для интерпретации файлов .shtml (из SVN) в качестве Server-Side Includes (SSI) и, таким образом, создавать живое содержимое, а не просто предоставлять сохраненное содержимое файла. Отключение SSI в файле /etc/httpd.conf Apache на период миграции по закомментировав

AddType text/html .shtml 
AddOutputFilter INCLUDES .shtml 

директив решить эту проблему.
Во всяком случае, миграция хранилища может исключить некоторые пути и файлы происходит с:

git svn clone <URL> --ignore-paths=<regex> 

пункта. Имеет смысл проверить среду процесса SVN-сервера, если эти файлы имеют специальную интерпретацию, такую ​​как SSI (и файлы .php и .py), и отключить ее.

Смежные вопросы