C’è un bug in Git che causa un incremento smisurato dello spazio occupato dai repository particolarmente popolosi
Se siete maintainer di repository Git particolarmente popolosi, con molti path ricorrenti nelle sotto cartelle, a cui contribuiscono parecchi sviluppatori, potreste trovare questa notizia piuttosto interessante.
Se infatti avete riscontato anomalie nell’occupazione dello spazio di repository che dovrebbero contenere solo codice, potreste stare sperimentando il problema scoperto da Derrick Stolee e raccontato da Dev Class.
In estrema sintesi il problema riguarda repository in cui ci sono parecchie sotto cartelle nelle quali i path si ripetono. In questi casi, l’algoritmo di comparazione delle differenze utilizzato da Git va in crisi, poiché si affida unicamente agli ultimi 16 caratteri del path, pertanto in circostanze simili a quelle descritte nell’articolo problemi di comparazioni errate sono molto probabili.
Ad accorgersi di tutto è stato inizialmente Jonathan Creamer, senior engineer di Microsoft, che dovendo gestire un repository contenente codice JavaScript dai numeri importanti (più di 1000 utenti attivi mensili e circa 20 milioni di linee di codice) si è accorto di come l’operazione di clone (copia) del repository occupasse ben 178GB di spazio, decisamente più spazio di quanto atteso (stiamo comunque parlando di file di testo).
Il repository di Creamer presentava moltissimi file CHANGELOG.md
che riferendosi allo stesso path (per via degli ultimi 16 caratteri utilizzati) venivano considerati lo stesso file e quindi “registrati” dal repository come cambiamenti di cui tenere traccia.
Stolee ha quindi proposto una patch risolutiva che, unita alla funzione git-repack
consente di risolvere la problematica. Nel caso specifico i 178GB di spazio sono diventati 5, a dimostrazione di quanto impatto la problematica abbia nella realtà, e ci sono numerose altre segnalazioni di repository la cui occupazione si è decimata dopo l’applicazione della patch creata da Stolee.
Per una volta quindi non è di sicurezza che si parla, bensì di una problematica operativa che però potrebbe avere, su determinati repository, impatti non solo inerenti lo spazio, ma anche all’efficienza. Tutti i repository che hanno fatto emergere la problematica infatti, dopo la cura, sono tornati ad essere molto più veloci.
Cosa buona da ricordare, per quanto scontata è come questa patch (correzione), che lo ricordiamo nasce da una issue pubblicata sul repository git-for-windows, quando verrà inclusa aggiungerà la nuova PATH-WALK API, di cui beneficeranno tutti gli utilizzatori di Git.
Raoul Scarazzini
Da sempre appassionato del mondo open-source e di Linux nel 2009 ho fondato il portale Mia Mamma Usa Linux! per condividere articoli, notizie ed in generale tutto quello che riguarda il mondo del pinguino, con particolare attenzione alle tematiche di interoperabilità, HA e cloud.
E, sì, mia mamma usa Linux dal 2009.
Se vuoi sostenerci, puoi farlo acquistando qualsiasi cosa dai diversi link di affiliazione che abbiamo nel nostro sito o partendo da qui oppure alcune di queste distribuzioni GNU/Linux che sono disponibili sul nostro negozio online, quelle mancanti possono essere comunque richieste, e su cui trovi anche PC, NAS e il ns ServerOne. Se ti senti generoso, puoi anche donarmi solo 1€ o più se vuoi con PayPal e aiutarmi a continuare a pubblicare più contenuti come questo. Grazie!
Hai dubbi o problemi? Ti aiutiamo noi!
Se vuoi rimanere sempre aggiornato, iscriviti al nostro canale Telegram.Se vuoi ricevere supporto per qualsiasi dubbio o problema, iscriviti alla nostra community Facebook o gruppo Telegram.
Cosa ne pensi? Fateci sapere i vostri pensieri nei commenti qui sotto.
Ti piace quello che leggi? Per favore condividilo con gli altri.