Подтвердить что ты не робот

Git svn rebase: несоответствие контрольной суммы

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

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

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

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

4b9b3361

Ответ 2

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

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

Ответ 3

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

Ответ 4

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

Ответ 5

Дополнительно к ответу Доменика (все еще в 2019 году…):

В конкретном случае удаленной, а затем воссозданной ветки (1) несоответствие происходит систематически, и после удаления ссылок на старую ветвь следует применить сброс к фиксации создания ветки:

> git svn fetch
…
r146970 = …
Checksum mismatch: bla.x # Uh oh, there we go!
> # Seems to have occurred while fetching r146971 (last passed rev + 1), so let try it:
> svn log -v -r 146971 $svn
M /branches/y/bla.x
> # OK, bla.x is a good indicator that this is indeed our failing commit.
> # What was the preceding commit on it, according to SVN?
> svn log -v -r 146971 $svn/branches/y/bla.x | less
------------------------------------------------------------------------
r146971
  M /branches/y/bla.x
Modified bla.x
------------------------------------------------------------------------
r145665
  A /branches/y (from /branches/z:145664)
Rebasing y on z
------------------------------------------------------------------------
> # Exactly what we were looking for: a branch creation. Let us clean branch y
> # so that git-svn is forced to find its recreation commit:
> rm -R .git/refs/remotes/origin/y .git/*/refs/remotes/origin/y
> vi .git/info/refs .git/packed-refs # remove references to y
> git svn reset -r145665 -p
> git svn fetch

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

(1) имитируя в SVN эквивалент git rebase z ветки y: svn mv y y.old & svn cp z y & SVN сливается, чтобы получить все коммиты y.old на новый y

Ответ 6

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

AddType text/html .shtml
AddOutputFilter INCLUDES .shtml
Директивы

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

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

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