2008-11-12 8 views
37

Ich habe meine Gruppe endlich von SourceSafe zu Subversion wechseln lassen. Leider möchte mein Manager immer noch exklusive Sperren für jede einzelne Datei verwenden. Also habe ich die Eigenschaft svn: needs-lock für jede Datei festgelegt und einen Vorab-Hook erstellt, um sicherzustellen, dass die Eigenschaft gesetzt bleibt.Was ist der beste Weg zu sehen, welche Dateien in Subversion gesperrt sind?

Wir betreiben Subversion auf einem Linux-Server. Die meisten von uns benutzen Windows-Maschinen und einige benutzen Macs. Wir verwenden verschiedene SVN-Clients (TortoiseSVN, SmartSVN, Subclipse usw.).

Was wir jetzt brauchen, ist eine gute/einfache Methode, um alle Dateien zu sehen, die derzeit im gesamten Repository gesperrt sind (und wer sie gesperrt hat). Ich habe ein wenig in Tortoise und Subclipse herumgestochert, aber habe nicht gefunden, wonach ich suche. Unsere Projekte haben viele Unterverzeichnisse, die mehrere Ebenen umfassen, so dass es zu zeitaufwändig wäre, jedes einzelne Verzeichnis zu betrachten.

Was ich möchte, ist ein einziger Bericht, den ich ausführen kann, der alles auflistet, was gerade gesperrt ist und wer es gesperrt hat. Was ist der beste Weg, um diese Art von Informationen zu erhalten?

+5

Ich weiß, Sie wissen das, aber diese Sperren werden ein Produktivitätskiller in gemeinsam genutzten Bereichen des Codes sein. Das Zusammenführen von Tools ist jetzt ziemlich gut und das Zusammenführen von Änderungen ist einfacher, als Ihr Chef zu denken scheint. –

+0

@TomLeys Sie haben möglicherweise Recht im Falle des Quellcodes oder in irgendeinem guten zusammenführbaren Dateityp. Aber es ist nicht immer so, zum Beispiel manchmal SVN wird für die Verwaltung von Dateien oder Office-Dokumente verwendet, keiner von ihnen hat leicht erreichbar, weit verbreitete Merge-Tools. – peterh

+0

* Die Bounty ist für eine neue Antwort, die erklärt, wie können wir die Liste der gesperrten Dateien 1) von einem Remote-Repository 2) mit dem Kommandozeilen-Client erhalten. * – peterh

Antwort

32

Was Sie suchen, ist der svnadmin lslocks Befehl.

Ich habe dies bei der Arbeit eingerichtet, weil wir einige Word-Dokumente in unserem Subversion-Repository (mit svn:needs-lock) halten. Ich habe jeden Tag einen Cron-Job eingerichtet, überprüfe die Liste der Sperren und schicke dem gesamten Team einen Bericht über alle Sperren, die älter als 7 Tage sind. Auf diese Weise können wir feststellen, wer auf einer gesperrten Kopie eines Dokuments lange nachgelassen hat.

+1

Office 2003 hat jetzt das Zusammenführen von Word-Dokumenten integriert. Ich weiß nicht, wann diese Funktion eingeführt wurde, aber es könnte bedeuten, dass Sie Ihre Word-Dokumente nicht mehr sperren müssen. –

+0

Danke Greg. Kannst du mir im Nachgang sagen, wie du die Liste nur mit Schlössern anzeigen lässt, die älter als x Tage sind? – Shane

+0

Ich habe gerade ein Skript geschrieben, das die Ausgabe von "svnadmin lslocks" analysiert, das Erstellungsdatum für jede Sperre ansieht und die Anzahl der Tage berechnet. Mein aktuelles Skript ist in Arbeit und ich habe momentan keinen Zugriff darauf, aber es sollte einfach genug sein, um es herauszufinden. –

21

Dies ist vielleicht nicht die Antwort, die Sie suchen, aber Sie sollten versuchen, den Manager davon zu überzeugen, dass Sperren tatsächlich nicht die beste Entwicklungspraxis sind. Es gibt viele da draußen, die zu diesem Thema geschrieben wurden, also werde ich hier nicht alles wiederholen.

Wenn Sie von einer Sperrumgebung zu einer ohne erzwungene Kassenschlösser wechseln, denken Sie zunächst, dass dies zu Chaos führen wird, aber das ist es wirklich nicht. SVN ist gut darin, Änderungen zusammenzuführen, wenn zwei Personen an derselben Datei arbeiten, und selbst wenn es zu Konflikten kommt, ist es nicht so schlimm, sie zu beheben.

Viel besser als warten auf den Kerl, der mit einer kritischen Datei zum Mittagessen gegangen ging, oder schlimmer noch, ging in den Urlaub.

+3

Ich versuche es einen Schritt nach dem anderen zu machen. Die Gruppe von SourceSafe zu befreien, war ein Kampf. Sobald sie mit SVN vertraut sind, dann habe ich vor, die exklusive Sperre aufzuheben. – Shane

+3

Sperren sind von unschätzbarem Wert, wenn Sie an binären Dateien arbeiten, die nicht wie andere Microsoft Office-Dokumente verschmolzen oder gemischt werden können. – DanB

21

Um zu sehen, was Sie und andere sperren, können Sie TortoiseSVN verwenden → Auf Änderungen überprüfen .... Lokal gehaltene Schlosstoken werden sofort angezeigt. Um nach Schlössern zu suchen, die von anderen gehalten werden (und um zu sehen, ob eines Ihrer Schlösser kaputt ist oder gestohlen wurde), müssen Sie auf Check Repository klicken.

+0

Es funktioniert nur mit TortoiseSVN. – peterh

19

Sie können Schlösser von einer lokalen Kasse mit svn status --show-updates entdecken, die eine O vor allen Dateien setzen, die auf dem Server gesperrt sind.

z.B.

$ svn status --show-updates 
    O  279532 LockedFile 
?     UncommittedFile 
M   279532 ModifiedFile 

siehe the svnbook für weitere Details

+0

Es funktioniert nur bei lokalen Repos. – peterh

Verwandte Themen