2010-05-20 1 views
22

Ich habe ein großes Repository in einem freigegebenen Ordner. Ich benutze git aus einer VM in diesem Ordner. Alles funktioniert gut, aber das Repository ist groß und git sucht durch alle Verzeichnisse und Dateien , wenn das Commit langsam ist. Ich kann dieses Repository nicht aus dem freigegebenen Ordner verschieben.Git kann ich das Commit beschleunigen?

Ich habe versucht, git add bestimmte Dateien und Verzeichnisse, aber wenn ich git commit -m "something" tun es geht noch weg auf seinen Oddyssey durch den Verzeichnisbaum.

Kann ich Commits machen, die den Rest des Baumes ignorieren?

Antwort

35

können Sie versuchen, die preloadindex Option aktivieren, in der beschrieben git-config man page:

core.preloadindex

für Operationen wie git diff parallel Index Vorbelastung aktivieren

Dies kann Operationen beschleunigen wie git diff und git status besonders auf Dateisystemen wie NFS, die eine schwache Caching-Semantik und damit relativ hohe IO-Latenzen haben. Wenn diese Option auf "true" gesetzt ist, führt git den Indexvergleich mit den Dateisystemdaten parallel durch, sodass überlappende IOs möglich sind.

dies bei der Verwendung einzuschalten:

git config core.preloadindex true 
+0

Interessante Option. +1 – VonC

+0

Cool! Ich werde es definitiv versuchen! – AndreasT

+0

Das änderte meine ~ 15 Sekunden 'git st' auf ~ 4s in Windows und <1s in Linux ... Das ist großartig. Vielen Dank. – blockloop

6

Als Alternative zur Änderung Ihres natürlichen Arbeitsablaufs könnten Sie an einem Klon arbeiten, der in einem für die VM privaten Verzeichnis gespeichert ist. Dann werden Sie nur dann zum Repository im freigegebenen Ordner (der wahrscheinlich ein leeres Repository sein kann) wechseln, wenn Sie Ihre Arbeit in der externen Umgebung veröffentlichen möchten.

0
git commit <specific-files-and-directories> 

vielleicht? Aber ich mag die Idee nicht, Repository auf dem Dateisystem zu teilen. Git ist das Werkzeug für die gemeinsame Nutzung von Repository Inhalt bereits.

+1

haupt ein Cross-Plattform-App mit codiertem, sagen sie, Eclipse CDT unter Linux und debuggt es mit Visual Studio unter win7 mit einem Schalter eines Fensters und der Drücken einer Taste? Glauben Sie mir, das Arbeiten über Systemgrenzen hinweg hat mir einen Kosmos neuer Möglichkeiten gegeben und ich bin nicht bereit, das aufzugeben. – AndreasT