2010-01-29 8 views
9

Ich würde gerne wissen, wie man die automatische Lösung bei der Integration beschleunigt (füge deine und ihre zusammen, wenn keine Konflikte existieren).Wie beschleunigt man die automatische Auflösung?

Derzeit dauert Stunden für ~ 5000 Dateien, wenn es mit einem Proxy-Server ausgeführt wird, auch wenn der Proxy-Server die Dateien im Cache zwischengespeichert hat.

Auch p4v-Schnittstelle gibt Ihnen keinen Hinweis auf den Fortschritt der Aufgabe, Sie wissen nicht, ob es in einem zweiten oder nächsten Jahr fertig sein wird.

+0

"Automatische Auflösung (keine Verschmelzung)" - der einfachste mögliche Algorithmus, also warum ist es so langsam ?! Ich denke, das Problem ist, Perforce macht alles über das Netzwerk, also macht es 5000 Anfragen in Folge oder etwas Dummes. –

Antwort

1

Ich denke, Sie könnten die Auflösung von der Kommandozeile aus tun, die Ihnen eine Idee geben könnte, dass es noch Fortschritte macht, und Sie nicht von anderen Arbeiten in P4V blockieren würde.

0

Wenn Sie im Voraus wissen, dass es für sicher eine Einweglösung sein wird, könnten Sie vielleicht versuchen, die Annahme von "ihres" oder "Ihrer" Version zu erzwingen. Siehe "p4 help auflösen" in der Befehlszeile, insbesondere die Optionen "-at" und "-ay".

Ich weiß nicht genau, ob es tatsächlich irgendwelche Leistungsvorteile bringt oder nicht, aber es ist einfach genug, es auszuprobieren (und ein Benchmarking durchzuführen).

2

5000 Dateien ist nicht sehr viele zu lösen, für einen mäßig leistungsfähigen Server.

Sind Ihre Dateien binär von signifikanter Größe? Wenn Ihre 5000 Dateien Binärdateien sind, wird autoresolve sie auf Ihrer lokalen Festplatte prüfen, um sie mit der Prüfsumme auf dem Server zu vergleichen (nicht mit dem Proxy, der nur die Informationen oder Dateien an Sie weiterleitet), und dies kann Sie verlangsamen.

Wenn Sie im Voraus wissen, dass Sie versuchen, eine Einweg-Lösung (essen Sie auf Ihrer Festplatte oder essen sie vom Server), können Sie use the 'accept yours' or 'accept theirs' options to autoresolve und überspringen die Prüfsumme Operation. Von der Kommandozeile aus wäre das "p4 resolve" entweder mit der Option "-ay" oder "-at".

Sie können sich auch an Ihren perforce db-Administrator wenden und die Server-Aktionen protokollieren lassen. Vielleicht gibt es Aktionen, die ausgeführt werden, wenn Sie Ihre Integration durchführen und auflösen, die Dateisperren halten, wodurch Sie sich drehen und warten, bis die Sperren freigegeben werden. Siehe die Referenz für 'p4 monitor show -a'.

Zum Beispiel in unserem Büro, es ist an einem Montagmorgen für jeden im Büro üblich, bis zu ihren privaten Filialen zu integrieren und zu lösen.

+0

Zur Prüfsumme sind wenige Gigabytes Daten jedes Mal sowieso nicht schnell. Gibt es irgendeine Möglichkeit, die Änderungszeit der Dateien zu benutzen? In 99,999% der Fälle werden Dateien nicht geändert, ohne dass Datum und Uhrzeit geändert werden. – sorin

+0

Perforce hat dazu keinen einfachen Weg. Wenn Sie keine Änderungen erkennen und nur Dateimodifizierungen verwenden möchten, um festzustellen, ob sie automatisch aufgelöst werden sollen, müssen Sie Skripts erstellen oder programmieren, um die Datenbank zu verstehen, wenn eine Datei eingereicht wurde die Datei auf Ihrer Festplatte. Der Modtime-Wert Ihres Client-Arbeitsbereichs kann auch die Modzeit von synchronisierten Dateien ändern. Seien Sie also vorsichtig, wenn Sie diese Route gehen. – Epu

2

Ich habe auch ein ähnliches Problem mit einem Proxy auf der anderen Seite des Globus arbeiten. Ich habe einige Experimente durchgeführt und das Problem scheint nicht von der Größe der Datei oder der Resolve-Methode (akzeptieren-ihre, etc.) zumindest für kleinere Dateien betroffen sein.

Ich vermute, dass es einige Hin- und Rückfahrkosten pro Datei gibt, da die Gesamtauflösungszeit ziemlich konstant ist, unabhängig davon, ob ich den Befehl in einzelne Auflösungsbefehle pro Datei zerlege, sie pro Dateigruppe stapelweise oder auflösend gesamte Änderungsliste In meinem Fall beträgt der Aufwand für Dateien mit mehr als 10k Dateien ungefähr 1 Sekunde pro Datei.

Ich arbeite derzeit um das Problem herum, indem ich mich bei einer VM anmelde, die sich mit dem Remote-Server befindet und die Auflösung von dort aus ausführt. Sie können dann von der VM aus senden und dann normal synchronisieren. Da ich zuerst Tests lokal ausführen muss, bevor ich sie abschicke, lege ich die Dateien auf der VM ab und lege sie dann auf meinem lokalen Rechner ab. Das ist auch nicht besonders schnell, scheint aber besser.

Also, keine Lösung für das Problem, aber eine praktikable Workaround in meinem Fall, die Stunden spart.