Versionskontrolle mit Git und SVN

Weitere Funktionalitäten

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Weitere Befehle außerhalb der regulären Versionskontrolle dienen in Subversion dem Export sämtlicher Änderungen in eine Patchdatei, der Durchführung eines Backups des Repository sowie dem Anlegen von Metadaten in Dateien.

Transkript

Subversion bietet noch einige weitere interessante Vorgänge außerhalb der regulären Versionskontrolle. In diesem Video lernen Sie drei dieser kennen. Lassen Sie mich mit Patches beginnen. Ein Patch ist nichts weiter als die Sammlung von Änderungen, die Sie an Ihrem Arbeitsordner vornehmen, komprimiert in eine einzige Datei, die nun von einer anderen Person auf ihren eigenen Projektordner angewendet werden kann. Der Unterschied ist hier also nun, dass Sie den regulären Weg über das jeweilige Repository überspringen würden und speziell nur ein Paket von Änderungen für den jeweiligen Arbeitsordner an eine andere Person übergeben können. Dies funktioniert nun mit dem Befehl svn diff, der die jeweilige Patch-Datei erstellt, und dem Befehl svn patch, mit dem dieser Patch auf den Arbeitsordner angewendet werden kann. An der Stelle habe ich nun also in meinen beiden Ordnern Änderungen an der README.txt vorgenommen. Diese Änderungen haben noch keinen Commit zum Repository erfahren. Wenn ich nun regulär den svn diff Befehl ausführe, sehe ich die jeweiligen Änderungen zur letzten Revision. Um diese Änderungen nun in eine Patch-Datei zu verpacken, füge ich den Namen der Patch-Datei mit einem Verweis an den Befehl hinten an. Nun wurde in dem Ordner die Datei file.patch erstellt. Wenn ich also an der Stelle zur letzten Revision zurückkehre, kann ich nun den entsprechenden Patch einspielen mit Hilfe des svn patch Befehls. Nun wurde die Datei README.txt wieder angepasst und enthält die Änderungen, die in der Patch-Datei beinhaltet sind. Der gleiche Vorgang ist nun auch möglich mit der grafischen Oberfläche. Durch TortoiseSVN und den Befehl Create patch wird automatisch erkannt, die README.txt wurde angepasst. Ich bestätige mit OK und kann nun einen Namen vergeben. Hier wird mir nochmal angezeigt, was der Patch beinhaltet und um diesen Patch nun anzuwenden, kann mit Hilfe von TortoiseSVN und Apply patch der Patch angewendet werden. Vorher ist es an der Stelle noch notwendig, hier den Stand zurückzuführen. Ich bestätige mit OK. Nun ist die README.txt wieder auf Revision 7 zurückgeführt worden und mit Hilfe des Patchs, ist es nun möglich innerhalb des Dialogs File patches Patch all items zu klicken. An der Stelle kann ich die einzelnen Veränderungen nochmal nachvollziehen und dementsprechend mit Save übernehmen. Nun ist die README.txt wieder in ihrem alten Format. Die nächste interessante Funktionalität ist nun das Durchführen eines Backups. Eine interessante Möglichkeit ist es sich einen Backup des eigenen Repositorys zu erstellen, denn dies funktioniert ausschließlich mit der Kommandozeile. Mit dem Befehl svnadmin dump, dem jeweiligen Pfad und der Angabe einer Datei wird nun das gesamte Repository in einer Datei gesichert. Mit dem Befehl load kann dementsprechend das Backup wieder hergestellt werden. Wenn ich dieses Backup nun also beispielhaft für das Projekt beziehungsweise das Repository der Kommandozeile durchführe und mit Enter bestätige, wurden nun alle Revisionen in das entsprechende File gesichert. Mit dem load Befehl könnten sie nun an anderer Stelle wieder hergestellt werden. Ein weiterer interessanter Punkt von Subversion ist die Möglichkeit, auf versionierten Dateien Metadaten anzulegen. Metadaten sind Daten über Dateien. Diese bieten mir die Möglichkeit, verschiedene Informationen für diese Datei zusätzlich zu hinterlegen und zu versionieren. Wenn ich nun beispielsweise eine Kundenbestellung habe, kann ich zusätzlich auf dieser Datei ohne in die Datei selbst zu schreiben einen Eintrag wie Fälligkeit anlegen oder einen Eintrag wie Wichtigkeit. Mit jeder Revision, die nun von dieser Datei erstellt wird, wird nun auch der jeweilige Eintrag in den Metadaten mit seinem Wert versioniert. So könnte in diesem Fall beispielsweise die Veränderung der Wichtigkeit in den verschiedenen Revisionen nachvollzogen werden. Mit dem Befehl svn propset kann nun ein Wert gesetzt werden und mit propget und propdel can jeweils ein Wert abgerufen und gelöscht werden. Wenn ich mich nun also mit meiner Kommandozeile im Arbeitsordner befinde, kann mit dem Befehl svn propset der entsprechende Wert für die Metadaten auf der Datei, beispielsweise hier README.txt hinterlegt werden. Dementsprechend mit propget könnte nun der Wert abgefragt werden. Sobald nun der Commit stattfindet, wird der entsprechende Metadatenwert auch auf das Repository übertragen. Um den selben Vorgang nun mit TortoiseSVN durchzuführen, reicht es, auf die Datei rechts zu klicken, im Menü TortoiseSVN den Befehl Properties auszuwählen. An der Stelle öffnet sich ein Dialog, in dem es nun möglich ist, einen neuen Eintrag anzulegen, entweder als Keyword oder verschiedene andere Möglichkeiten, die hier standardmäßig definiert sind. An der Stelle kann ich den Namen vergeben und den entsprechenden Wert. Wenn ich das nun mit OK bestätige und auch hier mit OK bestätige, wurde die Datei nun verändert und würde dementsprechend bei Commit den Eintrag in das Repository schreiben. Der letzte interessante Aspekt ist nun, zu wissen, dass es möglich ist, in einem Arbeitsordner verschiedene Projekte aus verschiedenen Repositories zu benutzen. In diesem Beispiel hier besteht nun ein Projektordner, klassischerweise aus Trunk, Branches und Tags, und in dem Projektordner gibt es einen Ordner ThirdParty. ThirdParty steht hier für Komponenten, die von einem anderen Hersteller oder auch von einem anderen Repository stammen könnten. Der Name ist allerdings an dieser Stelle beliebig. In diesem Ordner wurde nichts anderes gemacht, als dementsprechend ein anderes Projekt aus einem anderen Repository mit svn checkout heruntergeladen und mit Hilfe des Befehls svn propget svn:externals ist es nun möglich, auch später noch festzustellen, welches Repository ursprünglich für welchen Ordner verantwortlich ist. Habe ich nun zum Beispiel mehrere Repositories in ThirdParty ausgecheckt, würde mir der Befehl svn propget svn externals für jeden der Unterordner das entsprechende Repository als Link anzeigen. In diesem Video haben Sie nun einige weitere interessante Aspekte der Versionskontrolle mit Subversion kennengelernt.

Derzeit sind keine Feedbacks vorhanden...
Software:
Exklusiv für Abo-Kunden
Erscheinungsdatum:18.09.2014

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!