Autor Beitrag
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 18431
Erhaltene Danke: 1549

W10 x64 (Chrome, IE11)
Delphi 10.1 Ent, Oxygene, C# (VS 2015), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 02.02.14 00:43 
Hallo,

nachdem gerade erst wieder jemand meinte er brauche keine Versionsverwaltung, da er ja nur hobbymäßig entwickele und so etwas auch gar nicht kenne, möchte ich hier einmal kurz an Bildern zeigen was so eine Versionsverwaltung eigentlich macht und vor allem wie man sie sich auch selbst neu einrichtet.
Die Bilder hoste ich extern, da hier nur drei Anhänge pro Post möglich sind.

Benötigt werden:
  • Der Server, in dem die Dateiversionen verwaltet werden:
    Hier benutze ich den VisualSVN Server, da er unter Windows am einfachsten zu installieren und zu nutzen ist und zudem in einer kostenlosen Version bereitsteht.
  • Ein Tool, mit dem man auf diesen Server zugreifen kann:
    Das ist hier TortoiseSVN, das direkt in den Windows Explorer integriert wird. Neuere Delphiversionen haben dafür bereits eine integrierte Unterstützung.

Überblick über die Themen:
  1. Installation des Servers
  2. Installation des Clients
  3. Benutzung (Einchecken, Auschecken, ...)
  4. Ein besseres Vergleichstool

Ich hoffe dieser kurze Überblick hilft dabei zu verstehen warum eine Versionsverwaltung jedem hilft, ob man beruflich entwickelt oder das als Hobby betreibt.

// EDIT:
Ihr findet hier nun noch eine Anleitung zur Aktualisierung der SVN Version und zum Einbau der Blame Bar in Delphi XE5 selbst:
www.entwickler-ecke....ewtopic.php?p=683834


Zuletzt bearbeitet von jaenicke am So 02.02.14 14:36, insgesamt 1-mal bearbeitet

Für diesen Beitrag haben gedankt: glotzer, Jann1k, Marc.
jaenicke Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 18431
Erhaltene Danke: 1549

W10 x64 (Chrome, IE11)
Delphi 10.1 Ent, Oxygene, C# (VS 2015), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 02.02.14 00:44 
1. Installation des Servers

Der Server kann auf www.visualsvn.com/server/download/ heruntergeladen werden:

user defined image

Bei der Installation genügt die kostenlose Standard Edition:

user defined image

Nach der Installation und dem Start des Servers kann dort ein neues Repository für die Projekte angelegt werden. Für kleine Projekte genügt der Einfachheit halber auch ein einzelnes gemeinsames Repository. Das hat den Vorteil, dass man gemeinsame Units aller Projekte direkt mit im selben Repository halten kann:

user defined image

Nach der Eingabe eines Namens für das Repository (z.B. projects) und dem Abnicken der zu erstellenden Struktur wird der Erfolg gemeldet. Das Repository kann nun benutzt werden. Die Adresse wird der Einfachheit halber auch gleich angezeigt und kann direkt kopiert werden:

user defined image

Aber halt. Wer darf denn überhaupt drauf zugreifen? Ja, es wäre sinnvoll auch noch einen User anzulegen:

user defined image

Und auch ein Passwort macht Sinn:

user defined image

Das war es auch schon auf Serverseite.

Für diesen Beitrag haben gedankt: Jann1k
jaenicke Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 18431
Erhaltene Danke: 1549

W10 x64 (Chrome, IE11)
Delphi 10.1 Ent, Oxygene, C# (VS 2015), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 02.02.14 00:44 
2. Installation des Clients

Die Installation des Clients ist noch einfacher. Einfach auf der Downloadseite unter tortoisesvn.net/downloads.de.html die 32-Bit oder 64-Bit Version herunterladen, je nachdem was für ein Betriebssystem lokal genutzt wird:

user defined image

Und installieren, wobei es durchaus Sinn macht die Kommandozeilentools mit zu installieren:

user defined image

Das war es auch schon. Ein Neustart macht Sinn, damit die Erweiterung im Windows Explorer auch die Statusicons korrekt anzeigt. Funktionieren tut es aber auch ohne.

Für diesen Beitrag haben gedankt: Jann1k
jaenicke Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 18431
Erhaltene Danke: 1549

W10 x64 (Chrome, IE11)
Delphi 10.1 Ent, Oxygene, C# (VS 2015), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 02.02.14 00:45 
3. Benutzung

Nun zum wichtigsten Teil, der Benutzung eines solchen Repositories. Die prinzipielle Funktionsweise sieht so aus, dass man die Dateien auf den Server hochlädt (das nennt sich einchecken) und bei jeder Änderung dort aktualisiert, wobei man normalerweise als Kommentar angibt was man überhaupt geändert hat. Diese Informationen werden auf dem Server gespeichert, so dass man jederzeit im Log nachschauen kann was sich bei jeder Version jeder Datei geändert hat und was man dazu geschrieben hatte. Jede Version kann auch jederzeit vom Server heruntergeladen werden (das nennt sich auschecken).

Zuerst müssen wir das Repository auschecken:

user defined image

Dafür geben wir die Adresse des Servers und das Ziel auf der Festplatte an. Das sollte an der Stelle liegen, an der ihr sonst auch eure Quelltexte habt. Ob in den eigenen Dokumenten oder gleich auf einer eigenen Partition (wie ich es mache) spielt dabei natürlich keine Rolle. Es sollte nur nicht in dem Verzeichnis sein, das ihr im Server als Repository-Pfad angegeben habt:

user defined image

Das Passwort eingeben:

user defined image

Und fertig:

user defined image

Dann fangen wir einmal an zu programmieren. Zunächst habe ich eine leere VCL-Formularanwendung erstellt. Nun füge ich diese erste Version dem Repository hinzu:

user defined image

Und checke sie ein indem ich den Commit starte:

user defined image

Dort sehe ich nun zur Bestätigung was an den Server übertragen werden wird und kann das bestätigen.

user defined image

Nun habe ich einen Button hinzugefügt, der ein ShowMessage aufruft. Also starte ich den Commit erneut und sehe die Änderungen:

user defined image

Wenn ich auf die Dateien doppelklicke, sehe ich genau die Änderungen:

user defined image
user defined image

Die Änderungen sehen korrekt aus, also gebe ich einen passenden Kommentar ein und checke ein:

user defined image

Nun möchte ich gern sehen was eigentlich passiert war. Also lasse ich mir das Log anzeigen:

user defined image

Und kann dort alle Details zu den bisherigen Vorgängen sehen:

user defined image

Wenn ich dort einen Vorgang markiere, kann ich dazu die modifizierten Dateien sehen und per Doppelklick wieder anzeigen lassen was sich in genau dieser Version geändert hat.

Für diesen Beitrag haben gedankt: Jann1k
jaenicke Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 18431
Erhaltene Danke: 1549

W10 x64 (Chrome, IE11)
Delphi 10.1 Ent, Oxygene, C# (VS 2015), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 02.02.14 00:45 
Noch ein Wort zu dem Vergleichstool:
Ich selbst und auch wir in der Firma nutzen natürlich nicht das abgebildete Tool, da es einfach zu unübersichtlich ist. Viel besser ist dafür Beyond Compare. Das kostet 30 Dollar, aber die lohnen sich absolut, wenn man viel damit arbeitet, und im Vergleich zu anderen Entwicklungstools ist das ja auch wirklich günstig:
www.scootersoftware.com/

So sieht z.B. eine sinnlose Änderung am allseits bekannten Nemp aus:

user defined image

Für diesen Beitrag haben gedankt: Jann1k
Jann1k
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 847
Erhaltene Danke: 19

Win 7
TurboDelphi, Visual Studio 2010
BeitragVerfasst: So 02.02.14 10:45 
Vielen Dank für diese Einführung in SVN. Ich hatte SVN bisher nur als Eclipse Plugin genutzt, vllt. wäre es mal wirklich an der Zeit das auch für meine Delphi Projekte zu machen.
Marc.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1876
Erhaltene Danke: 129

Win 8.1, Xubuntu 15.10

BeitragVerfasst: So 02.02.14 13:01 
Vielen Dank für die Einführung. Allerdings gibt es noch eine weitere Versionsverwaltung die meiner Meinung nach fürs Programmieren wesentliche Vorteile gegenüber SVN bietet und zumindest zu nennen wäre: Git.

Einige Aspekte, die git mehr qualifizieren als SVN, nannte auch letztes Jahr das Cern (LHC), das von SVN zu Git wechselte. Dazu das PDF aus der Präsentation, die eine kurze Einführung zu Git und eine Begründung für den Wechsel aus deren Sicht beinhaltet.

Für den schnellen Einstieg lassen sich Open-Source Projekte z.B. auf github kostenlos hosten. Private Repositories gibt es dort allerdings erst ab 5€ aufwärts.

Lokal mit XAMPP oder sofern allgemein einen Linux-Webserver sein Eigen nennt, kann man sich dort natürlich auch selbst mit - um einmal nur zwei zu nennen, es gibt wirklich viele - Gitweb einen Repository-Browser oder mit GitLab einen github Nachbau einrichten. Auch gibt es Git selbstverständlich auch als Eclipse Plugin etc.


Zuletzt bearbeitet von Marc. am So 02.02.14 13:34, insgesamt 1-mal bearbeitet
jaenicke Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 18431
Erhaltene Danke: 1549

W10 x64 (Chrome, IE11)
Delphi 10.1 Ent, Oxygene, C# (VS 2015), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 02.02.14 13:07 
Wenn es einen einfachen Windows Installer oder zumindest eine gute Anleitung und einen stabilen Windows Dienst dafür geben würde, wäre ich Git auch gar nicht abgeneigt...

Weder beruflich noch privat kommt für mich bzw. uns ein fremder Hoster oder ein Linux-Server dafür in Frage.
Martok
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Moderator
Beiträge: 3650
Erhaltene Danke: 593

Win XP x86, Win 8.1 x64
Lazarus Snapshot; Delphi 7,2007,XE; PHP (PHPEdit,PhpStorm); JS; Java(Eclipse)
BeitragVerfasst: So 02.02.14 21:26 
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Wenn es einen einfachen Windows Installer oder zumindest eine gute Anleitung und einen stabilen Windows Dienst dafür geben würde, wäre ich Git auch gar nicht abgeneigt...
Braucht ihr das Web-GUI-Zeugs dafür? Git braucht keinen Server (also nicht nur "funktioniert auch ohne" wie SVN-FSFS, sondern Server sind eh nur extra) funktioniert auch wunderbar auf simplen Verzeichnissen oder über WebDAV. Ich hab zum Beispiel einige Remotes von Uni-Zeugs auf einem USB-Stick.

Ich weiß allerdings nicht, obs die im anderen Tutorial erwähnte IDE-Integration so schön auch für Git gibt, das wäre vermutlich der einzige Grund der mich dazu bewegen könnte SVN überhaupt noch einzusetzen. Es ist immerhin 2014, nicht 2004 :lol:
Aber hey, SmartGit kostet jetzt auch nicht die Welt.

_________________
"The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
Ich code EdgeMonkey -~==~- #ee-lounge in Freenode
vagtler
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 96
Erhaltene Danke: 24


Delphi 2010, C# (VS 2012), Objective-C, Java
BeitragVerfasst: Mo 03.02.14 09:10 
user profile iconMartok hat folgendes geschrieben Zum zitierten Posting springen:
[...] Aber hey, SmartGit kostet jetzt auch nicht die Welt.

Und www.sourcetreeapp.com/ nix. ;)
jaenicke Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 18431
Erhaltene Danke: 1549

W10 x64 (Chrome, IE11)
Delphi 10.1 Ent, Oxygene, C# (VS 2015), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 03.02.14 10:01 
Die Clients sind ja gar kein Problem. Das macht Tortoise für CVS, SVN, Git und Hg sehr gut. ;-)
vagtler
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 96
Erhaltene Danke: 24


Delphi 2010, C# (VS 2012), Objective-C, Java
BeitragVerfasst: Mo 03.02.14 11:54 
TortoiseGit mit den genannten Clients vergleich zu wollen ist aber sehr vermessen.

Und der "Server" ist ja erst recht kein Problem - es gibt ja keinen... ;)
OlafSt
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 403
Erhaltene Danke: 69

Win7, Win81
XE4, VS2012
BeitragVerfasst: Mo 03.02.14 12:44 
Ich vermisse in dem Tutorial zwei Kleinigkeiten.

Keinigkeit 1: Was ist mit bestehenden Projekten ?

So habe ich mich am Jahresanfang auf eigene Füße gestellt und trage mich schon länger mit dem Gedanken, meine Projekte auf einem kleinen Serverchen in ein SVN zu stecken. Allerdings sind dies fast ausschließlich schon laufende Dinge, stellenweise über Jahre... Wie behandelt man also schon bestehende Projekte ?

Kleinigkeit 2: Wie läuft das ganze mit Delphi ?

Fände ich wesentlich interessanter als ein Glaubenskrieg Git vs. SVN. Ich halte es da wie user profile iconjaenicke - gibts nix für Windows oder gehen die Sourcen "nach draußen", kommts nicht ins Haus.


Just gesehen, gibts ein Extra-Tutorial für. Danke dafür !

_________________
Lies, was da steht. Denk dann drüber nach. Dann erst fragen.
jaenicke Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 18431
Erhaltene Danke: 1549

W10 x64 (Chrome, IE11)
Delphi 10.1 Ent, Oxygene, C# (VS 2015), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 03.02.14 14:51 
user profile iconOlafSt hat folgendes geschrieben Zum zitierten Posting springen:
Keinigkeit 1: Was ist mit bestehenden Projekten ?

So habe ich mich am Jahresanfang auf eigene Füße gestellt und trage mich schon länger mit dem Gedanken, meine Projekte auf einem kleinen Serverchen in ein SVN zu stecken. Allerdings sind dies fast ausschließlich schon laufende Dinge, stellenweise über Jahre... Wie behandelt man also schon bestehende Projekte ?
Da gibt es eigentlich nichts Besonderes. Wenn du bisher ganz ohne Versionsverwaltung arbeitest, checkst du die Projekte einfach in seinem jetzigen Stand in ein Repository ein und arbeitest von da an damit.

Oder gibt es noch konkrete andere Fragen dazu?

Denn wenn du bisher keine Versionsinformationen zu bestimmten Änderungen des Quelltextes hast, kannst du die ja auch nicht nachträglich generieren. Insofern kannst du nur einen Stand "aktuell" einchecken und von da die einzelnen Änderungen protokollieren.
OlafSt
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 403
Erhaltene Danke: 69

Win7, Win81
XE4, VS2012
BeitragVerfasst: Mo 03.02.14 20:06 
Oh, ich dachte es gäbe da noch spezielle Vorbereitungen, wenn man laufende Projekte neu in ein VCS überführen will. Aber dem ist offenbar nicht so, ergo alles prima.

_________________
Lies, was da steht. Denk dann drüber nach. Dann erst fragen.
jaenicke Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 18431
Erhaltene Danke: 1549

W10 x64 (Chrome, IE11)
Delphi 10.1 Ent, Oxygene, C# (VS 2015), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 05.02.14 11:54 
user profile iconMartok hat folgendes geschrieben Zum zitierten Posting springen:
Braucht ihr das Web-GUI-Zeugs dafür? Git braucht keinen Server (also nicht nur "funktioniert auch ohne" wie SVN-FSFS, sondern Server sind eh nur extra) funktioniert auch wunderbar auf simplen Verzeichnissen oder über WebDAV.
Im SVN hängt bei uns am Server ja noch viel mehr dran. Ein Commit-Hook analysiert z.B. die Kommentare um diese wiederum automatisiert und in Echtzeit aufbereitet zur Verfügung zu stellen. Der Commit-Dialog in Delphi wiederum ist eine angepasste Maske, in die die Informationen eingegeben werden können und in einem speziellen Format als Kommentar gespeichert werden.

Wie sich das sinnvoll mit Git oder Mercurial auf einem Windows-Server machen lässt, habe ich bisher noch nicht herausfinden können. Der Server an sich funktioniert zwar, wenn auch mit Aussetzern was die Erreichbarkeit angeht, aber so etwas konnte ich da bisher nicht finden. Und als simples Verzeichnis dürfte es unmöglich sein.
OlafSt
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 403
Erhaltene Danke: 69

Win7, Win81
XE4, VS2012
BeitragVerfasst: Mi 05.02.14 12:55 
Wie sieht es mit dem Betriebssystem aus. Reicht eine ungenutzt herumliegende Win81-Lizenz aus - oder denkt man doch lieber über einen Windows Home Server oder gar 2008R2 nach ?

Ich hab von Server-Systemen wenig Plan, verzeiht also meine blöden Fragen ;)

_________________
Lies, was da steht. Denk dann drüber nach. Dann erst fragen.
jaenicke Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 18431
Erhaltene Danke: 1549

W10 x64 (Chrome, IE11)
Delphi 10.1 Ent, Oxygene, C# (VS 2015), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 05.02.14 14:26 
Da reicht eine normale Windows-Lizenz aus solange du nicht mit vielen Clients drauf zugreifst.

Wenn du nur selbst auf einem PC damit arbeitest, kannst du den Server (eine ordentliche Datensicherung vorausgesetzt) auch auf deinem eigenen Rechner installieren. Das ist eher nicht die ideale Konfiguration, aber abgesehen von der notwendigen Datensicherung gibt es auch keine direkten Nachteile.
OlafSt
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 403
Erhaltene Danke: 69

Win7, Win81
XE4, VS2012
BeitragVerfasst: Di 11.02.14 15:25 
So, ich habs getan ;) Kleiner Rechner aufgesetzt, ins Netz geklemmt, Windows81 *brech* draufgemacht, Visual SVN Server draufgespielt und schon mal einen Benutzer und drei Repositories angelegt.

Auf der Entwicklermaschine XE4 gestartet, Projekt geöffnet, Rechtsklick in den Projektmanager "Der Versionskontrolle hinzufügen". Ich gebe die Adresse ein (Hier: https://bla/svn/Project) und klicke "Importieren". Es dauert eine Weile, dann meldet Windows, das Embarcadero RAD Studio nicht mehr funktioniert und Online nach einer Lösung gesucht wird - oder kurz: Delphi ist böse gecrasht.

Ehrlich gesagt kann man da echt nicht viel falsch machen und ich bin einigermaßen ratlos. Habe ich irgendein Update oder ein Tool vergessen ? Noch ist alles frisch auf dem Server und kann jederzeit vernichtet/neu aufgebaut werden.

_________________
Lies, was da steht. Denk dann drüber nach. Dann erst fragen.
Nersgatt
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1556
Erhaltene Danke: 265


Delphi 10 Seattle Prof.
BeitragVerfasst: Di 11.02.14 15:34 
Nimm einfach Tortoise SVN. Das klinkt sich in den Windows-Explorer ein. Da reicht dann der Rechtsklick auf den Ordner -> Commit. Und fertig. Das funktioniert sehr gut.

_________________
Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)