Sto usando git per il controllo del codice sorgente su un repository. Recentemente ha iniziato avvertendomi di quanto tempo ci vuole per enumerare i file non monitorate quando si utilizza git status
:Git enumera lentamente file non tracciati inesistenti
$ git status
On branch my_branch
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: My_Project/my_source.c
It took 3.24 seconds to enumerate untracked files. 'status -uno'
may speed it up, but you have to be careful not to forget to add
new files yourself (see 'git help status').
no changes added to commit (use "git add" and/or "git commit -a")
Tuttavia, non ci sono file non monitorate in questo repository - ho controllato con git status -uall
. Altre informazioni eventualmente rilevanti:
- Ho notato che questo avviso appare solo quando il numero
git status
richiede effettivamente alcuni secondi per essere eseguito. - Il mio deposito è 130,6 MB al momento.
- I miei prodotti di costruzione sono tutti out-of-tree.
Perché git impiega così tanto tempo a enumerare file non tracciati che non esistono?
Ecco alcuni rilevanti altre domande:
"File non tracciati" include file ignorati da '.gitignore' e amici. La dimensione del tuo repository non ha molta importanza, dal momento che 'git status' solo' lstat() 's i tuoi file. Ciò che conta è quanti file ci sono, quanto profondamente annidato l'albero delle directory e quanto velocemente il tuo filesystem è. –
Se nella tua struttura ci sono molti artefatti di costruzione, potresti prendere in considerazione l'utilizzo di build fuori dall'architettura per accelerare le cose. –
@SvenMarnach Interessante. Le mie build sono già fuori dal campo - ho modificato la mia domanda per riflettere questo. Il mio progetto è grande, ma non pazzesco - la maggior parte delle fonti ha un livello profondo e ci sono 334 di questi file all'ultimo conteggio. – ravron