Git consente operazioni simultanee utilizzando un Pessimistic Concurrency Control.
Se necessario, git crea alcuni file speciali che fungono da blocchi.
In particolare, ogni volta che l'indice viene modificato da un'operazione, git crea un file denominato index.lock
nella directory .git
per bloccare la risorsa condivisa. Git crea a necessità altri file di blocco: ad esempio, un file .keep
viene creato durante le operazioni git index-pack.
In generale, non ci si deve preoccupare delle operazioni simultanee con git: è progettato con cura per supportarle.
Qualcuno potrebbe dire che non dovresti preoccuparti di eseguire gc
con un cron job, dato che git stesso attiva di tanto in tanto gc
. Anche se questo è vero, la stessa man page raccomanda:
Users are encouraged to run this task on a regular basis
within each repository to maintain good disk space utilization
and good operating performance.
Quindi, penso che non è una cattiva idea quella di pianificare un'attività di lavoro per eseguire la raccolta dei rifiuti di git. Mi chiedo solo se si tratta di un'ottica prematura o se stai cercando di risolvere un problema reale e misurato. Personalmente non ho mai avuto problemi che mi richiedessero di eseguire manualmente lo gc
, ma non sarei sorpreso se il tuo caso fosse abbastanza diverso.
fonte
2015-04-26 08:13:08
Per il numero 1, presumo che tu stia parlando di spinte simultanee a diversi rami? Spinte simultanee allo stesso ramo viene risposto altrove su SO. – cmbuckley
puoi fornire un link? – dromodel
[q8424232] (http: // stackoverflow.com/domande/8424232/sono-concurrent-git-spinge-sempre-safe-se-il-secondo-push-solo-ha-fast-forward); [q6028141] (http://stackoverflow.com/questions/6028141/concurrent-git-pull-and-push-on-same-remote-repo-from-different-locations) potrebbe essere anche interessante. – cmbuckley