GitLab SSH push сбой из памяти malloc ошибка сбоя - PullRequest
0 голосов
/ 22 февраля 2019

Я пытаюсь отправить большой файл .sql размером 1,4 ГБ в проект gitlab через ssh.Но push не выполняется со следующей ошибкой: Enumerating objects: 3, done. Counting objects: 100% (3/3), done. remote: fatal: Out of memory, malloc failed (tried to allocate 1452837977 bytes) fatal: sha1 file '<stdout>' write error: Broken pipe error: remote unpack failed: unpack-objects abnormal exit

Вот содержимое моего файла gitconfig

[core]
repositoryformatversion = 0
filemode = false
bare = false
logallrefupdates = true
symlinks = false
ignorecase = true
[remote "origin"]
url = my ssh url 
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master

1 Ответ

0 голосов
/ 22 февраля 2019

Во-первых, Git не разрешает файлу больше 100 МБ.Так что у Гигабайтов шансов нет (ИЛИ увеличивать максимальный размер плохо)!

Git не позволяет этого по причине.Допустим, у вас есть файл 1 ГБ.Каждый коммит в git не сохраняет diff, вместо этого он берет весь снимок этого файла.Итак, в конечном итоге после 3 коммитов ваш репо будет иметь размер 3 ГБ, и он просто убивает ваше пространство и вызывает замедление в клонировании, извлечении и прочем.

Если вы используете git-lfs, указатель в настоящий LFS отслеживаемый файл фактически сохраняется в вашем хранилище.Данные 3 ГБ все еще присутствуют в вашем удаленном репозитории (как BLOB), но не все данные 3 ГБ сохраняются в вашем локальном репозитории. В зависимости от вашего хэша коммитов, git-lfs лениво загружает только ту версию, на которой вы сейчас находитесь, вместо того, чтобы иметьвсе три версии, поэтому у вас будет только 1 ГБ файл независимо от коммита, над которым вы работаете.

...