GNU/Linux >> Znalost Linux >  >> Linux

git gc:na zařízení nezbývá místo, i když jsou k dispozici 3 GB a tmp_pack pouze 16 MB

Takže tady je to, co jsem zatím zjistil:nemohl jsem najít žádnou dokumentaci o těchto skrytých '.tmp-XXXX-pack' v .git/objects/pack složku. Všechna ostatní vlákna, která jsem našel, se týkají neskrytých soubory s tmp_ prefix ve stejné složce. Skryté jsou také jasně vytvořeny během akce přebalení a je možné, že se také zaseknou. Nemohu potvrdit, zda je to stále možné v git 2.3.0 (na který jsem od té doby aktualizoval), ale alespoň se zdá, že požadavky na místo na disku se v této novější verzi nezměnily - stále nemůže dokončit gc /přebalit. Smazáním těchto .tmp-souborů se mi podařilo obnovit mé poslední 4GB a zdá se, že git se poté stále chová dobře – vaše výsledky se však mohou lišit, takže před tím se prosím ujistěte, že máte zálohu . Nakonec ani 4 GB nestačily na přebalení pomocí gc --agressive . Můj .git složka je po vyčištění 1,1 GB, celé mé úložiště má 1,7 GB. Takže 2x velikost vašeho úložiště možná nestačí pro git gc , a to i s agresivní možností (což by mělo šetřit místo). Takže jsem musel nejprve získat více místa odjinud.

Nakonec zde je to, co mám nyní ve svém čistícím skriptu (což by podle mě mohl být dobrý nápad zavolat z úlohy cron):

#!/bin/bash
set -e

#git gc or remove tmp if that fails (because out of disk space)
git gc --aggressive --prune=now || rm -f .git/objects/*/tmp_* && rm -f .git/objects/*/.tmp-*

Podobný scénář (k dispozici přibližně 2,3G), kromě git gc sám by také selhal s fatal: Unable to create '/home/ubuntu/my-app-here/.git/gc.pid.lock': No space left on device

To, co fungovalo, bylo git prune nejprve a poté spusťte gc.


Linux
  1. Zakázat a znovu povolit randomizaci rozložení adresního prostoru pouze pro mě

  2. V zařízení nezbývá místo

  3. Nelze zkompilovat pomocí make | fatální chyba Na zařízení nezbývá místo

  1. Uveďte pouze názvy zařízení všech dostupných síťových rozhraní

  2. Na zařízení nezbývá místo, ale oddíl je zaplněn pouze z poloviny a jsou k dispozici inody

  3. Šifrovat složku v systému Linux, kterou lze dešifrovat pouze na konkrétním operačním systému a zařízení

  1. AWS EC2 – Na zařízení nezbývá místo

  2. Při připojení není k dispozici vyrovnávací paměť

  3. Na zařízení nezbývá místo ani po přidání Persistence Storage na gcloud