проблема с git svn rebase на windows - PullRequest
4 голосов
/ 13 января 2010

У меня проблема с git.

По сути, вот что у меня есть. Я получаю доступ к хранилищу SVN через Git. До сих пор на файлах python все работало нормально.

Но в последнее время я также добавил некоторые файлы pyd, dll и lib в хранилище. Первое обновление прошло хорошо. Но затем эти файлы были изменены, и с тех пор я не могу обновить. Эти файлы были добавлены с компьютера Windows с TortoiseSvn в хранилище SVN.

Если я делаю git svn rebase на Linux, все работает нормально.

Если я выполняю git svn rebase на windows с msysgit (и также tortoisegit), у меня появляется следующая ошибка: fatal: write error: Неверный аргумент

Если я выполняю git svn rebase в windows с помощью cygwin, у меня появляется следующая ошибка: не нашел новую строку после blob в /usr/lib/perl5/vendor_perl/5.10/Git.pm line 916

Я попробовал несколько вещей (autocrlf true / false, safecrlf true / false), добавив файл .gitattributes со следующей строкой *. * -Crlf -diff -merge и ничего не получилось.

Я немного застрял здесь, поэтому любые предложения приветствуются.

Заранее спасибо.

Ответы [ 2 ]

3 голосов
/ 30 сентября 2010

У меня была идентичная проблема с Msysgit v1.7.2.3, последней версией по состоянию на 29 сентября 10, и он хотел поделиться своими выводами здесь (Google обнаружил несколько случаев, но решений не найдено).

Попытка выполнить «git svn rebase» в репозитории (которая уже много раз работала в прошлом) неизменно заканчивалась «фатальной ошибкой записи: недопустимый аргумент» после определенного количества коммитов. После этого синхронизация снова вернется к началу.

Я считаю, что это ошибка в Msysgit, связанная с большими (ish) двоичными файлами и доступной памятью (в системе Win XP SP3 с 4 ГБ ОЗУ и большим количеством свободного места на жестком диске). Удаленная система представляла собой репозиторий DotNetNuke SVN на CodePlex (https://dotnetnuke.svn.codeplex.com/svn).

Первоначально он подавлялся файлом "CHM" 330 КБ (~ 212-й коммит, r52261). Он последовательно делал это, даже после отключения Avast AV, Google Desktop и т. Д. И проверки отсутствия других процессов с блокировками в папке репо. После перезагрузки (но при открытии Outlook, Dreamweaver и т. Д.) Он последовательно и постоянно приводил к сбою DLL ~ 15,3 МБ (~ 416-й коммит, та же ревизия).

Наконец, после очередной перезагрузки, отключив Avast, Carbonite и Google Desktop и не запустив другие программы, синхронизация сработала в первый раз.

Похоже, это твердо указывает на мой вывод о том, что это была проблема с доступной памятью, вероятно, связанная с наличием большого двоичного файла и большого количества коммитов в ревизии. Обратите внимание, что я также попробовал "git fsck", "git svn reset xx" и настройки параметров конфигурации "packSizeLimit" / "usedeltabaseoffset", но безуспешно.

1 голос
/ 20 февраля 2010

Я обнаружил, что лучшая политика для использования Git в Windows - указывать, что он ничего не должен делать с окончаниями строк.

Не знаю, поможет ли это вам восстановить текущее git-репо, но оно того стоит.

Я установил:

[core]
    autocrlf = false
...