Использовать другой раздел для временных операций git (git gc)
Допустим, у меня есть git
репо на ограниченном дисковом разделе (скажем, на флешке).
Допустим, мой последний толчок к этому репо не удался, потому что текущий раздел полностью заполнен.
Допустим, я пытаюсь восстановить пространство с git gc
; затем git gc
тоже потерпит неудачу с:
$ git gc --prune=now
fatal: failed to write ref-pack file: No space left on device
error: failed to run pack-refs
Теперь на той же машине у меня есть другой раздел, который имеет много места; Я знаю, что я мог бы клонировать этот репо там и запустить gc
там, а затем скопировать обратно / запись поверх репо из другого раздела в первый раздел.
Но мне было интересно: вместо этого есть способ, я мог бы проинструктировать git
использовать "другой раздел" для любых временных файлов, которые нужно записать, пока я звоню git gc
в репо на исходном разделе - в результате после завершения операции git
удалил бы временные файлы в "другом разделе"; и он бы изменил / удалил / добавил все необходимые файлы в репо "Исходный раздел" (производя восстановление пространства, если это возможно)?
1 ответ
Единственным вариантом будет переместить .git
каталог где-нибудь еще, а затем используйте --git-dir
возможность использовать это место вместо автоматического определения его из текущего рабочего каталога. Кроме того, нет, Git не сможет временно использовать другой диск.
И если подумать, риск повреждения данных слишком велик, чтобы Git сначала сжимал объекты из базы данных на другом диске, а затем удалял исходные объекты, прежде чем, наконец, переместить сжатые данные обратно.
Так что я бы сказал, что это тот случай использования, с которым обычно никто не сталкивается. А современные флеш-накопители достаточно велики, и это тоже не составит труда.