Einzelnen Beitrag anzeigen

einbeliebigername

Registriert seit: 24. Aug 2004
140 Beiträge
 
Delphi XE8 Professional
 
#54

AW: Subversion und VisualSVN für Ein-Mann-Entwicklung

  Alt 7. Nov 2016, 07:41
Hallo,

4. Nutzt das auch jemand von Euch als Einzelperson, welche Erfahrungen habt ihr damit gemacht?
Ja, sowohl im Team als auch für eigene private Projekte. Benutze nur noch SVN. Mittlerweile auch für dinge die nichts mit Programmieren zu tun haben.

Und zwar unter dem Aspekt, dass ich im Netzwerk mal an unterschiedlichen PC's die gleichen Projekte (zu Testzwecken) verwalte, bzw. von Unterwegs (auf Reisen) mit einem Notebook vor Ort gerne mal ein Projekt weiter bearbeiten möchte, so dass ich dann nach Rückkehr an meinem Hauptentwicklungs-PC die Änderungen aus dem Repository übernehmen kann.
Ist bei mir auch so. Komisch, ist das noch nicht der Vorschlag kam, alles nur noch mit dem Notebook und einer Dockingstation zumachen, denn dann würde man ja ein Versionsverwaltungssystem nicht benötigen. Es soll ja noch Leute geben die einen richtigen Rechner zum Entwickeln benötigen. Sei es weil Hardware drinsteckt die einfach nicht in ein Notebook passt oder der Kunde genau das gleiche System einsetzt und er sich bestimmt nicht ein Notebook ins Rack stellt.

Habe mir dazu auf meinem Strato-Webserver (Windows 2012 Server) das Programm VisualSVN eingerichtet und mir dort Repositories angelegt.
Mir persönlich wäre das zu unsicher. Habe lieber alles zu Hause. Lieber wird mein Sourcecode durch Brand vernichtet, als das jemand anderes ihn in die Finger bekommt. Und dafür habe ich so ein selbstgebauten Windows Home Server.

Sollte ich (obwohl ich ja nur eine Person bin) mehrere Benutzer einrichten und diese Identitäten dann jeweils von den anderen PC's aus nutzen?
Oder nur einen Benutzer?
Wie du magst. Ich habe auf meinem SVN-Server nur eine Identität für mich (mir reichen schon die vielen im Kopf ).

2. Dann eine Frage zu den globalen / geteilten Units, die in unterschiedlichen Projekten verwaltet werden. Wie bindet man die richtigerweise ein?
Das ist ein Schweres Thema. Es gibt da mehrere Möglichkeiten.

A: So ein Repository ist je wie ein Verzeichnis. Man kann alle Projekte und die gemeinsam verwendeten Sachen in ein Einziges einchecken. Vorteil die Relativen Pfade zwischen den Projekten und dem Gemeinsamen sind immer gleich. Nachteil es gibt nur eine Revisionsnummer (jedenfalls bei SVN) und sollte es mal einen Fehler im Repository geben sind mitunter alle Projekte betroffen.

B: Jedes Projekt und somit auch das Gemeinsame bekommen ihr eigenes Repository. Nachteil man muss auf die Abhängigkeiten zwischen den Projekten und somit zwischen den Repositorys aufpassen. Dazu kann man bei SVN die Eigenschaft svn:externals benutzen. Entweder man macht sich ein Ober-Repository und hängt mittels svn:externals alle anderen dort rein. Dann würde man auf einem anderen Gerät nur das Ober-Repository auschecken und alle anderen würden mit der richtigen Struktur automatisch mit auf der Platte landen. Oder man hängt das Gemeinsame per svn:externals in jedem Projekt ein. Hat beides seine Vor- und Nachteile. Bei dem einen sind Änderungen am Gemeinsamen sofort bei allen Projekten verfügbar und beim anderen kann man das Gemeinsame bei verschiedenen Projekten in unterschiedlichen Versionen verwenden.

Das Subversionssystem übernimmt offensichtlich nur alle Dateien aus dem Projektverzeichnis und aus den
Ja. Die Versionsverwaltungssysteme, welche ich mir bis jetzt angesehen habe, arbeiten immer auf einem Verzeichnis. Was außerhalb dieses liegt, liegt außerhalb des Repositorys.

3. Prinzipiell würde mich auch das Thema "Branches" interessieren. Mir geht es hin und wieder schon mal so, dass ich ein Programm in eine bestimmte Richtung entwickle, dann aber einen großen Teil oder fast alles wieder verwerfe und dann ist es manchmal recht umständlich wieder auf die gewünschte Ausgangsversion zurückzukommen, bzw. vielleicht möchte man ja einen Teil der Arbeit in die alte Ausgangsversion übernehmen.

Wie macht man das? Wie sage ich Delphi, dass die aktuelle Arbeit jetzt Teil eines variablen Zweigs sein soll? Indem ich es erneut in den Braches-Ordner poste? Muss ich mir dort selber Unterordner anlegen?
Wie und ob das mit Delphi geht, habe ich noch nicht getestet. Ich kann dir da nur TortoiseSVN empfehlen. Aber die nötige Verzeichnisstruktur Trunk, Tags und Branches hast du in den Repositorys angelegt?

ob ich nicht auch als Einzelperson von der Subversionsverwaltung profitieren kann.
Auf jeden Fall! Wie hast du es denn bisher ohne ausgehalten?

Aber tu dir bitte einen Gefallen: Nimm gleich Git, nicht Subversion.
Nein nehmen auf gar keinen Fall Git. Es gibt zwar viele Leute die diese veralteten Konzepte aus der Linuxwelt toll finden, sie sind es aber nicht. Sie sind schrecklich. Git hat nur einen Vorteil, dass es ein verteiltes System ist. Aber bei genauer Betrachtung ist das dann auch wieder ein Nachteil, wie alles andere bei Git. Deshalb igittigitt.

Ich würde _immer_ über die Konsole arbeiten, damit ich die Kontrolle über die versionierten Dateien habe.
Konsole und Kontrolle schließen sich doch wegen mangelnder Übersichtlichkeit aus. Keine Bildchen, keine Kontextsensitivität, fängt schon damit an das die Konsole keine Informationen von sich aus herausgibt.

Zu den versionierten Dateien können ja auch Dateien gehören, die überhaupt keinen direkten Bezug zum Source-Code habe: Doku, Beispiel-Daten etc.
Da hilft aber auch keine Konsole. Da hilft nur Tortoise..., und das noch nicht mal vollständig.

Was mir noch nicht gelungen ist: Externals einzubinden, also Dateien, die nicht im Projektverzeichnis oder in einem Unterverzeichnis davon liegen.

Falls jemand Subversion nutzt, wäre ich für einen Tipp dankbar.
Auch Externals landen in dem Verzeichnis des Repositorys. Aber noch mal den Tipp, installier dir TortoiseSVN. Das ist wesentlich übersichtlicher. Und dann siehe oben.

Und ja, auch für eine einzelne Person ist das eine Hilfe.
Ja, auf jeden Fall.

PS: Ist die Mehrzahl von Repository in einem deutschen Text Repositories oder wie Google meint Repositorys?
Mit freundlichen Grüßen, einbeliebigername.

Geändert von einbeliebigername ( 7. Nov 2016 um 08:09 Uhr) Grund: Rechtschreibung von Repositorys korrigiert
  Mit Zitat antworten Zitat