git: возможно ли сохранить упакованные объекты в пробном прогоне и протолкнуть их позже? - PullRequest
1 голос
/ 11 июня 2010

Я пытаюсь выдать кучу коммитов, которые содержат много кода и несколько тысяч файлов MP3 и PDF, кроме того (в диапазоне от 5-40 МБ каждый).

Git успешно упаковывает объекты:

C:\MyProject> git push
Counting objects: 7582, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (7510/7510), done.

Но не удается отправить push-сообщение по какой-то пока неизвестной причине.

Проблема в том, что для перепаковки файлов требуется очень много времени (я нахожусь наноутбук с батарейным питанием, и его упаковка заняла около 20 минут).

Так что я думаю, что мой вопрос можно сформулировать следующим образом:

  1. Можно ли сохранить упакованные объекты, созданные впробный запуск?
  2. После сохранения можно ли сдвинуть эти упакованные объекты и избежать перепаковки?

Я посмотрел его в руководстве по git и в других местах и ​​не смог найти ничего убедительного.

Любая помощь или указатели приветствуются.


РЕДАКТИРОВАТЬ - Добавлены сообщения об ошибках:

При первом запуске этого изкомандная строка (`git push ') Я получил эту ошибку:

fatal: sha1 file '<stdout>' write error: Invalid argument
error: pack-objects died with strange error
error: failed to push some refs to 'account@server:project.git'

Второй раз (git push origin master -v) Я получил эту ошибку:

Pushing to account@server:project.git
Counting objects: 7582, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (7510/7510), done.
fatal: sha1 file '<stdout>' write error: Invalid argument
error: pack-objects died with strange error
error: failed to push some refs to 'account@server:project.git'

Обратите внимание, что в обоих случаях после завершения сжатия я получил следующее диалоговое окно:

---------------------------
PuTTY Fatal Error
---------------------------
Network error: Software caused connection abort
---------------------------
OK   
---------------------------

Когда диалоговое окно было открыто,консоль читалась следующим образом (строка «Написание объектов» была стерта после нажатия ОК):

Pushing to account@server:project.git
Counting objects: 7582, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (7510/7510), done.
Writing objects:   0% (1/7525)

РЕДАКТИРОВАТЬ 2 - После запуска git gc по предложению Чарльза Бейли, япримерно через 1,5 часа получил следующий вывод:

C:\Projects\MyProject>git gc
Counting objects: 10926, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (10125/10125), done.
warning: failed utime() on c:/Projects/MyProject/.git/objects/.tmp-10596-pack-a3a5ef775308593167a669b19aa752d2f484f768.pack: Permission denied
warning: failed utime() on c:/Projects/MyProject/.git/objects/.tmp-10596-pack-380270a0b5f3c7d30731c8e19f9271a59ea05e3d.pack: Permission denied
Writing objects: 100% (10926/10926), done.
Total 10926 (delta 719), reused 10858 (delta 719)
mv: cannot move `/c/Projects/MyProject/.git/objects/pack/pack-5dc233ff7aa1c33fc4845251186d5bafcefe3a11.pack' to `/c/Projects/MyProject/.git/objects/pack/old-pack-5dc233ff7aa1c33fc4845251186d5bafcefe3a11.pack'
error: failed to run repack

1 Ответ

0 голосов
/ 11 июня 2010

Если вы запустите git gc, то git упакует все доступные объекты в вашем хранилище.Когда вы впоследствии наберете push, появится возможность перепаковать объекты, которые нужно отправить в удаленный репозиторий, но он сможет повторно использовать упакованные файлы, которые находятся в вашем локальном файле пакета, и он должен работать намного быстрее.

...