Delphi-PRAXiS
Seite 1 von 13  1 2311     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Werkzeuge (https://www.delphipraxis.net/63-sonstige-werkzeuge/)
-   -   Subversion und VisualSVN für Ein-Mann-Entwicklung (https://www.delphipraxis.net/190770-subversion-und-visualsvn-fuer-ein-mann-entwicklung.html)

Harry Stahl 5. Nov 2016 13:59

Subversion und VisualSVN für Ein-Mann-Entwicklung
 
Ich habe mich bislang nicht mit dem Thema Subversionsverwaltung beschäftigt, frage mich aber, ob ich nicht auch als Einzelperson von der Subversionsverwaltung profitieren kann.

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.

Habe mir dazu auf meinem Strato-Webserver (Windows 2012 Server) das Programm VisualSVN eingerichtet und mir dort Repositories angelegt. Als SVN unter Delphi nutze ich Subversion.

1. Dazu schon mal direkt eine Frage zu den Benutzern:

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?

2. Dann eine Frage zu den globalen / geteilten Units, die in unterschiedlichen Projekten verwaltet werden. Wie bindet man die richtigerweise ein?

Das Subversionssystem übernimmt offensichtlich nur alle Dateien aus dem Projektverzeichnis und aus den Unterverzeichnissen.

Ich habe es jetzt erst mal so gelöst, dass ich ein Dummy-Projekt mit den geteilten Units angelegt habe. Das binde ich dann immer in die Projektgruppe ein und poste Änderungen dann über das Dummy-Projekt. So komme ich auch an anderen PC's an die Shared units. Scheint mir aber ein wenig umständlich zu sein. Gibt es dafür keine bessere Lösung?

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?

4. Nutzt das auch jemand von Euch als Einzelperson, welche Erfahrungen habt ihr damit gemacht?

Namenloser 5. Nov 2016 15:06

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

Zitat von Harry Stahl (Beitrag 1352689)
ob ich nicht auch als Einzelperson von der Subversionsverwaltung profitieren kann.

Auf jeden Fall! Wie hast du es denn bisher ohne ausgehalten? :shock:

Aber tu dir bitte einen Gefallen: Nimm gleich Git, nicht Subversion. Ist mittlerweile eigentlich der Industriestandard und hat Subversion abgelöst, und das nicht ohne Grund. Es lässt sich deutlich besser damit arbeiten, vor allem wenn man mehrere Branches hat oder an mehreren Rechnern gleichzeitig arbeitet, aber auch sonst ganz allgemein. Es hat zwar am Anfang eine recht steile Lernkurve, aber es ist besser, gleich damit anzufangen, als erst noch Subversion zu lernen. Wahrscheinlich sind die Konzepte von Git am Anfang auch weniger verwirrend, wenn man nicht durch andere Versionskontrollsysteme wie Subversion, die etwas anders funktionieren, bereits vorbelastet ist. Wenn du Git erst mal beherrscht, willst du nie wieder zurück.

Ich werde deine Fragen mal für Git beantworten:

Zitat:

Zitat von Harry Stahl (Beitrag 1352689)
1. Dazu schon mal direkt eine Frage zu den Benutzern:

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?

Ich würde immer die gleiche Identität nehmen. Du bist ja schließlich auch immer die gleiche Person, egal an welchem Rechner du gerade arbeitest.

Zitat:

Zitat von Harry Stahl (Beitrag 1352689)
2. Dann eine Frage zu den globalen / geteilten Units, die in unterschiedlichen Projekten verwaltet werden. Wie bindet man die richtigerweise ein?

Git Sub-Modules wären eine Möglichkeit. (Nur der Vollständigkeit halber: Unter Subversion gibt es sowas ähnliches, nennt sich svn:externals.)

Zitat:

Zitat von Harry Stahl (Beitrag 1352689)
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?

Unter Git, indem du einfach auf den (neuen) Branch wechselst und dann deine Änderungen dort committest.
Code:
git checkout -b neuer-branch
git add -u
git commit
(Du bist dann dauerhaft auf diesem Branch, also wenn du danach wieder zurück zum Haupt-Branch willst, dann musst du anschließend noch mal
Delphi-Quellcode:
git checkout master
ausführen)

Interessant ist auch
Delphi-Quellcode:
git add --patch
, wenn man nur einen Teil der Änderungen committen will. Ich weiß nicht ob es nur mir so geht, aber ich arbeite oft an mehreren Baustellen gleichzeitig. Habe z.B., während ich ein neues Feature implementiert habe, gleichzeitig noch an einer anderen Stelle einen Bug gefunden und gefixt. Mit
Delphi-Quellcode:
git add --patch
kann ich beides sauber trennen.

Auch interessant ist
Delphi-Quellcode:
git rebase
, um Commits nachträglich umzusortieren oder in andere Branches zu übernehmen. Aber das ist eher was für Fortgeschrittene. Als Anfänger würde ich die Finger davon lassen, auch weil man sonst versehentlich Commits ins Nirwana schicken kann (lassen sich zwar in der Regel wiederherstellen, aber die Panik ist nicht so schön. Ich weiß wovon ich rede).

Lies auf jeden Fall ein Git-Tutorial.

Zitat:

Zitat von Harry Stahl (Beitrag 1352689)
4. Nutzt das auch jemand von Euch als Einzelperson, welche Erfahrungen habt ihr damit gemacht?

Siehe oben. Ja! Ich kann es mir ohne gar nicht mehr vorstellen. Dabei verwende ich meistens nicht mal mehrere Rechner. Der größte Vorteil ist, dass es einem Sicherheit für Experimente gibt, wenn man weiß, dass man jederzeit zu einem vorherigen Stand zurückgehen kann. Auch habe ich festgestellt, dass es oft hilfreich ist, wenn man länger an einer Sache nicht arbeiten konnte und nicht mehr weiß, was man zuletzt gemacht hat. Man kann sich dann einfach mal die letzten Änderungen anschauen, die man gemacht hat, und findet so schneller wieder rein.

haentschman 5. Nov 2016 15:06

AW: Subversion und VisualSVN für Ein-Mann-Entwicklung
 
Moin Harry...:P

Mir ist es einfach nur schleierhaft wie du bisher ohne Versionskontrolsytem auskommen konntest... :P

Deine Fragen vereinfacht:
1. Normalerweise nur ein Benutzer. Wenn du wissen willst von welchem Computer (Identität) du eingecheckt hast, kann kannst du verschiedene Identitäten anlegen.
2. Du bindest die Units wie gewohnt ein. Hilfreich ist eine Ordnerstruktur z.B. Global / Projekt1 / Projekt2 usw.
3. Branches: Ich mache nur einen Branch für fertige Versionen. Das jeder halten wie er will... :P
4. Ausschließlich als Einzelversion. Ich möchte es nicht mehr missen.

:P

Jim Carrey 5. Nov 2016 15:09

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

Mir ist es einfach nur schleierhaft wie du bisher ohne Verionskontrolsytem auskommen konntest...
Mir ist schleierhaft, wie man ein solches System zur Pflicht erklären kann :lol:

Ich mache täglich ein paar dutzend ZIP Backups meines Projektes. Natürlich alles automatisiert.
Wenn ich zu einer alten Version zurück möchte, weiß ich immer ganz genau wo die sind - auf der Festplatte in einem ZIP-Archiv.
Zum Vergleichen der Sourcen benutze ich BeyondCopare. ist ja schließlich bei der IDE dabei.

Phoenix 5. Nov 2016 15:10

AW: Subversion und VisualSVN für Ein-Mann-Entwicklung
 
Also ich bin da voll bei Namenloser.

Der Gag ist vor allem, dass man Git auch komplett ohne Server rein lokal nutzen kann. Subversion war zwar damals (so vor 10 Jahren oder so ;-) ) ganz nett, aber heutzutage will man sich den Overhead nicht mehr antun.

haentschman 5. Nov 2016 15:36

AW: Subversion und VisualSVN für Ein-Mann-Entwicklung
 
Moin...:P
Zitat:

Also ich bin da voll bei Namenloser.
...ich nicht. :P

Ich liebe es das ganze über eine altbekannte Struktur benutzen zu können...ohne irgendwelche Konsolenbefehle. 8-) Auch wenn der Server "nicht online" ist kann ich kann ich weiterarbeiten. Beim nächsten "online" wird halt eingecheckt. Das Argument greift bei mir nicht. :P
PS: Ich habe mich noch nicht wirklich damit beschäftigt...z.b. ich weiß nicht wo die Daten (QT) liegen. Ein eigener Server im lokalen Netz (von außen erreichbar) ist mir lieber. :P

vagtler 5. Nov 2016 15:38

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

Git over Subversion: +1

:mrgreen:

Harry Stahl 5. Nov 2016 15:59

AW: Subversion und VisualSVN für Ein-Mann-Entwicklung
 
Hey, vielen Dank erst mal an Euch für die Antworten!!:-D:-D:-D

Scheine ich ja wirklich bislang was verpasst zu haben...

Ich habe jetzt erst mal mit Subversion angefangen, weil das ohne zusätzlich irgendwas einrichten zu müssen, funktioniert hat.
Bin aber erst im Testmodus, ist also noch keine endgültige Entscheidung, Git werde ich mir dann auch ansehen.

Wobei ich gestehen muss, dass ich nach wie vor kein großer Freund der Konsole bin (obwohl mein Haupt-Entwicklungssystem ja inzwischen mit Ubuntu bootet und ich inzwischen so einiges mit Linux mache), aber wenn der Mehrwert es rechtfertigt, wäre ich dazu natürlich bereit...

Wo gibt es denn ein gutes GIT-Tutorial? (Gerne auch ein Youtube-Video oder so).
Das kann ich aber auch auf dem Webserver laufen lassen (wo kriegt man das GIT-Server-Programm)? Denn nur so kann ich ja den Plan realisieren, unterwegs (stundenlang im Zug oder abends im Hotelzimmer) auf meine Repository zugreifen zu können und mir den letzten Arbeitsstand auf das Notebook zu holen und dann wieder in der Repository zu aktualisieren.

Wie ich schon feststellte, muss man dann allerdings auch peinlich darauf achten, dass alle Delphi-Installationen mit den gleichen Paketen und dem gleichen Versions-Stand der Komponenten ausgestattet sind...

Gibt es noch Fürsprecher für Subversion?
Gibt es Fans von Mercurial, was ja auch in Delphi 10.1 integriert ist?

stahli 5. Nov 2016 16:06

AW: Subversion und VisualSVN für Ein-Mann-Entwicklung
 
Ich habe beides mal versucht, aber bin damit nicht klar gekommen - und lieber bei Sicherungen in Zips (auch eigene Lösung) geblieben.

Nachdem hier diese Thread gestartet wurde habe ich mir vorgenommen, nochmal Tutorials bei Video2Brain anzuschauen.
Da hatte ich aber auch schon mal welche abgebrochen, weil mir das zu theoretisch vorkam.

Harry, gib mal bescheid, für was Du Dich dann entscheidest...

Harry Stahl 5. Nov 2016 16:07

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

Zitat von haentschman (Beitrag 1352700)
Ein eigener Server im lokalen Netz (von außen erreichbar) ist mir lieber. :P

Hast Du dafür einen EXTRA-PC als Server eingerichtet, wo dann auch der SVN-Server läuft (welchen nutzt Du?) oder ist es Dein Entwicklungs-PC, den Du dann von außen erreichen kannst (per Port-Weiterleitung)?

Ist das dann noch performant genug? Gerade auch, wenn es um Upload geht, sind die Webserver doch i.d.R. um einiges schneller.

Mein "Super-Duper" Telekom-Internet verabschiedet sich hin und wieder auch mal (alle 1-3 Wochen), so dass der Router neu gestartet werden muss, wäre doof, wenn ich da gerade unterwegs bin.


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:35 Uhr.
Seite 1 von 13  1 2311     Letzte »    

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz