• Keine Ergebnisse gefunden

SVN – Server/Client-Modell

N/A
N/A
Protected

Academic year: 2022

Aktie "SVN – Server/Client-Modell"

Copied!
11
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Subversion

(2)

Sourcecodeverwaltung

zentrale Verwaltung des Sourcecodes unabl¨assig bei Gruppenarbeit offensichtlich schlecht:

Code per Email herumschicken: Aktualit¨at, Vollst¨andigkeit

Code in Verzeichnis mit Zugriff f¨ur alle: ¨Uberschreiben von Anderungen anderer¨

stattdessen professionelle Verwaltung des Sourcecodes mit Versionskontrolle: SVN

(3)

SVN – Server/Client-Modell

SVN-Server h¨alt Daten: Repository

SVN-Clients k¨onnen sich lokale Kopie davon machen, editieren und ins Repository einspielen

Transfer erfolgt ¨uber HTTP

hier: Repositories werden auf Server des Lehrstuhls TCS bereitgestellt; Zugriff ¨uber

http://svn.tcs.ifi.lmu.de/hName des Repositoriesi

(4)

Repository

ist mehr als nur Ansammlung von Dateien, sondern auch Meta-Information

Geschichte der Daten wird protokolliert: Revisionen 1,2,. . .

Wer hat welche ¨Anderungen gemacht?

Nachrichten zu ¨Anderungen

Revision = aktueller Zustand der Dateien zu gewissem Zeitpunkt Operationen auf/mit Repository:

checkout, lokale Kopie mit letzter Revision erzeugen

update, lokale Kopie auf aktuellen Stand bringen

commit, ¨Anderungen an lokaler Kopie ins Repository einspielen

(5)

Checkout

lokale Kopie wird so erzeugt

mlange@pozzuoli:~/tmp> svn checkout --username lange http://svn.tcs.ifi.lmu.de/SEP Authentication realm: <http://svn.tcs.ifi.lmu.de:80> Repository SEP Project Password for ’lange’:

A SEP/MeineKlasse.java ...

Checked out revision 117.

erzeugt lokale Kopie, die editiert werden kann

Usernamen und Passw¨orter werden von uns vergeben und per Email verschickt

Ausgabe vonsvn checkout ist Liste von Dateien mit Flag f¨ur Aktionen

(6)

Update

lokale Kopie auf aktuellen Stand bringen

mlange@pozzuoli:~/tmp/SEP> svn update A MeineKlasse.java

...

Updated to revision 118.

lokale ¨Anderungen gehen dabei nicht verloren Statusmeldungen:

A Datei.java Datei wurde neu angelegt

D Datei.java Datei wurde gel¨oscht

U Datei.java Datei wurde auf aktuellen Stand gebracht

M Datei.java . . . und dabei wurden ¨Anderungen im Repository mit lokalen ¨Anderungen vereint

C Datei.java . . . und dies f¨uhrte zu einem Konflikt

(7)

Commit

lokale ¨Anderungen ins Repository einspielen, um sie den anderen zug¨anglich zu machen

mlange@pozzuoli:~/tmp/SEP> svn commit

¨

offnet Editor, um Nachricht einzutragen; diese sollte ¨Anderungen f¨ur die Teammitglieder beschreiben

Commit nicht immer m¨oglich, z.B. falls sich Repository

mittlerweile ebenfalls ge¨andert hat; dann zuerst nochmal Update

(8)

Merging und Konflikte

betrachte folgenden Ablauf,Datei.javaist im Repository

1 User A¨andertDatei.java bei sich

2 User B ¨andertDatei.javabei sich

3 User Af¨uhrt svn commit aus

UserB kann dann kein Commit durchf¨uhren, aber Update von UserB kann zu Problemen f¨uhren

SVN versucht, ¨Anderungen im Repository und lokale zu vereinen;

mehr oder weniger zeilenweise

Vereinigung nicht m¨oglich: Konflikt; wird in Datei markiert

<<<<<<< .mine

lokale Aenderung von User B

=======

Aenderung im Repository

>>>>>>> .r118

L¨osung: ¨Anderungen per Hand vereinen, dann

mlange@pozzuoli:~/tmp/SEP> svn resolved Datei.java

(9)

Sonstiges

Update kann Datei aus bestimmter Revision wiederherstellen (Option-r); keine Backups in lokaler Kopie n¨otig

svn moveverschiebt Dateien lokal und bei n¨achstem Commit auch im Repository

svn deletegenauso f¨ur L¨oschen

(10)

Verhaltensregeln

was SVN nicht erzwingt, wir aber trotzdem verlangen

aussagekr¨aftige Nachrichten bei Commit angeben

keine Bin¨ardateien (z.B..class) im Repository (Ausnahme:

unver¨anderliche und nicht erzeugbare wie z.B. Bilder, Sounds)

keine Backup-Dateien im Repository

nur syntaktisch korrekte Java-Dateien einchecken

regelm¨aßige Updates durchf¨uhren

(11)

Hilfe

mlange@pozzuoli:~/tmp/SEP> svn help

mlange@pozzuoli:~/tmp/SEP> svn helphKommandoi http://svnbook.red-bean.com/

Referenzen

ÄHNLICHE DOKUMENTE

public static void main(String args[]) throws Exception {.

public static void main(String[] argv) { Socket socket;..

public static void main(String[] argv) { Socket socket;.

 A typical transaction server consists of multiple processes accessing data in shared memory.. 

• zustandsinvariante Server liefern Informationen, die sich zwar ¨ andern k¨ onnen, die aber unabh¨ angig von Client- Anfragen sind. Beispiele: Web-, FTP-, Name- und

matrix(’vector’, nrow=1) converts to matrix of 1 × n as.data.frame(’matrix’) converts to data frame as.matrix(’data frame’) converts to matrix. as.vector(’matrix’)

ddistrib density function pdistrib distribution function qdistrib quantile function. rdistrib

Wenn Nobby nun versucht seine Änderungen in das Repository einzupflegen, wird er beim commit eine Fehlermeldung bekommen, dass seine Version der Datei nicht mehr aktuell