Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Einstieg in Versionsverwaltung
pollito
myCSharp.de - Member

Avatar #avatar-3521.gif


Dabei seit:
Beiträge: 211

Themenstarter:

Einstieg in Versionsverwaltung

beantworten | zitieren | melden

Hallo!

Ich programmiere seit vielen Jahren, ohne mich jemals um eine Versionsverwaltung gekümmert zu haben. Allerdings haben sich in letzter Zeit einige Vorfälle ergeben, die mich sehr viel Zeit gekostet haben, bis ich gewisse alte Stände rekonstruieren konnte.

Darüber hinaus entwickle ich mittlerweile nicht mehr alleine, sondern mit einem Partner, der 80 km von mir sein Büro hat.

Diese zwei Punkte haben mich in Sachen Versionsverwaltung zum Nachdenken angeregt. Ich habe mich im Internet umgeschaut und habe sehr viel Infos über z. B. Team Foundation Server und GIT gefunden. Allerdings finde ich nicht den richtigen Draht zu diesen Systemen, so dass ich mich entschlossen habe, euch um Hilfe zu bitten.

Jeder von uns beiden verfügt über ein Microsoft-Action-Pack-Abonnement, bei dem ein MSDN-Abo enthalten ist. Darin enthalten ist u. a. Visual Studio Professional 2015, Visual Studio Team Foundation Server Express 2015, Visual Studio Team Foundation Server Extensions for Project Server 2015 usw. Auf der anderen Seite wird oft GIT empfohlen.

Wir programmieren einerseits unter Visual Studio und anderseits setzen wir eine völlig andere Entwicklungsumgebung ein: Gupta Team Developer

Wir suchen nicht die ultimative Versionsverwaltung, sondern ein System, dass uns hilft, schnell alte Entwicklungsstände wiederherzustellen, jeden Entwicklungsstand sauber zu dokumentieren und das gleichzeitige Arbeiten am selben Projekt in der Mini-Gruppe.

Welche wäre für uns die richtige Versionsverwaltung? Was würdet ihr für unsere Mini-Entwicklergruppe empfehlen, am besten ohne finanzielle Zusatzkosten?

Da wir in Sachen Versionsverwaltung absolute Neulinge sind, fällt es uns nicht leicht, auf Anhieb die Beschreibungen und Gegenüberstellungen der unterschiedlichen Systeme zu verstehen. Gibt es im Netz oder auch als Buch brauchbare Abhandlungen für "absolute beginners" über dieses Thema?

Für jede Hilfe bin ich euch im Voraus dankbar!
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von pollito am .
René
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 16214

beantworten | zitieren | melden

Welche die richtige Versionsverwaltung ist; das kann euch im Prinzip niemand verlässlich sagen.
Vieles ist auch mit Geschmack und Anforderungen verbunden.
Ich habe selbst mit git, TFS, Perforce, SVN und BitBucket gearbeitet und alle haben so ihre Vor- und Nachteile.

Git ist aber mit Sicherheit das am meisten verbreitete SCM-System; die Einstiegshürde ist aber relativ hoch. Dafür kommt git quasi mit jeder Entwicklungsumgebung klar, da die Bedienung meistens über Kommandozeilen-Befehle erfolgt (es gibt zwar GUI-Tools aber ich find die alle nicht so dolle, oder sie decken nicht vollständig die Features ab).
TFS ist hervorragend in Visual Studio integriert; kostet aber meist Geld (Visual Studio Online bis aktuell 5 Teammitglieder kostenlos).

Die Anforderung
Zitat
sondern ein System, dass uns hilft, schnell alte Entwicklungsstände wiederherzustellen, jeden Entwicklungsstand sauber zu dokumentieren und das gleichzeitige Arbeiten am selben Projekt in der Mini-Gruppe.
erfüllt jedes System.
Die Systeme unterscheiden sich eher in der Sache, wie zB Branches gepflegt werden, wie getaggt (bei Perforce heissen Tags aber Labels) wird, die die Integration in die Entwicklungssysteme ist, etc etc...

Wenn ihr alle Einsteiger seid, dann macht es die Sache schwieriger, da jedes Team eigentlich seine eigenen Regeln hat, wie das SCM bedient wird.
Manche machen ein Branch pro Feature, manche verwenden dafürs Tags. Wenn ihr niemand habt, der hier Erfahrung im Workflow hat, dann werdet ihr öfter mal aus eigenen Fehlern lernen ;-)

Ich persönlich mag gerne aufgrund der flüssigen Integration TFS, wobei TFS auch Git-Befehle versteht (übrigens versteht auch Perforce mit Hilfe eines Providers git-Befehle).
Aber eigentlich gibt es sowohl für Git wie auch für TFS sooo viele Einsteigertutorials, dass ich das ungern hier wiederholen mag.


PS: es ist auch abhängig von eurem Continuous Integration System (das ihr vermutlich noch nicht habt), welches SCM sich am besten in euer Ökosystem einbettet.

Ich weiß ich verwende hier Begriffe wie Branches und Tags, die Du evtl. nicht kennst, aber das musst Du dann einfach nachlesen.
- performance is a feature -

Microsoft MVP - @Website - @blog - @AzureStuttgart - github.com/BenjaminAbt
private Nachricht | Beiträge des Benutzers
pollito
myCSharp.de - Member

Avatar #avatar-3521.gif


Dabei seit:
Beiträge: 211

Themenstarter:

beantworten | zitieren | melden

Danke!

Ich möchte selbstverständlich so wenige Einstiegshürden wie nur möglich haben. Da wir nur zwei sind, wäre die Online-Version eine Überlegung Wert. Sollten wir eines Tages mehr als 5 Entwickler sein, dann dürfte das System auch Geld kosten.

Da wir absolute Neulinge sind, möchte ich mich nicht zusätzlich mit kryptischen Kommandos auf Zeilenebene herumschlagen.

Was ist der Unterschied zwischen "Visual Studio Team Foundation Server Express 2015" (im MSDN enthalten) und der Online-Version?

Nochmals herzlichen Dank!
René
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 16214

beantworten | zitieren | melden

Sei mir nicht bös, aber genau sowas kann man nachlesen :-)
TFS & Visual Studio ALM – by Neno Loje

Ohne, dass ihr euch mit den Systemen mit Hilfe von einfachem Try and Error vertraut macht, geht es sowieso nicht - egal welches. Man muss es einfach anfassen und mal ausprobieren.
Also wieso nicht einfach mal 1-2 YouTube Videos anschauen (oder Channel9, was für VSO eine eigene Kategorie anbietet) und mal mit einem einfachen Testprojekt ausprobieren?

Wenn ihr keine Kommandozeile wollt, dann ist TFS (ohne git) wohl der einfachste Einstieg.
Eine Hürde werdet ihr immer haben.. ich kann Dir aber versprechen, dass VSO für alles kleine alle Features bietet (und dabei noch mehr als ihr am Anfang braucht oder wollt).
- performance is a feature -

Microsoft MVP - @Website - @blog - @AzureStuttgart - github.com/BenjaminAbt
private Nachricht | Beiträge des Benutzers
pollito
myCSharp.de - Member

Avatar #avatar-3521.gif


Dabei seit:
Beiträge: 211

Themenstarter:

beantworten | zitieren | melden

Bin sicher nicht böse. Man kann heute ziemlich alles nachlesen und trotzdem braucht man etwas Orientierungshilfe.

Wie ich gerade sehe, ist auch die Version "Visual Studio Team Foundation Server Express 2015" auch bis 5 Anwender kostenlos.
René
private Nachricht | Beiträge des Benutzers
FZelle
myCSharp.de - Experte



Dabei seit:
Beiträge: 10084

beantworten | zitieren | melden

Ich persönlich fand die Lernkurve beim TFS immer als zu hoch, vorallem weil wir eine Zeitlang ständig wechselnde Entwickler mit im Team hatten ( freelancer ).

Wir haben uns dann für SVN entschieden.
Mit VisualSVN Server hast du einen sehr einfach zu installierenden und zu wartenden SVN server ( kann man auch selber machen aber so ist es viel einfacher ).
Als Client haben wir als erstes TortoiseSVN und dann zumindest in VisualStudio das Kostenpflichtige VisualSVN (€30 seinerzeit )benutzt.
Als wir angefangen haben, war das das einziege funktionierende Addin für VS.NET.
AnkhSvn war damals nicht wirklich zu gebrauchen.
private Nachricht | Beiträge des Benutzers
jogibear9988
myCSharp.de - Member



Dabei seit:
Beiträge: 589
Herkunft: Offenau

Offline

beantworten | zitieren | melden

Musst du den auch offline weiterarbeiten, oder hast du immer zugriff auf den Server? Da bietet sich GIT dann nämlich an, da du auch lokal einchecken und erst später auf den Server pushen kannst!

Auch das Backup erledigt sich mit mehreren Entwicklern am gleichen Repo fast, da jeder alle eingecheckten und gepushten commits hat (zumindest seit dem letzten fetch)
cSharp Projekte : https://github.com/jogibear9988
private Nachricht | Beiträge des Benutzers
pollito
myCSharp.de - Member

Avatar #avatar-3521.gif


Dabei seit:
Beiträge: 211

Themenstarter:

beantworten | zitieren | melden

Es kommt nicht vor, dass wir offline arbeiten. Wir haben immer eine Online-Verbindung und somit eine Verbindung zu einem Server im Internet oder über VPN (OpenVPN) zu einem Firmenserver.
René
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 16214

beantworten | zitieren | melden

Mit git kannste halt alles als Versionsverwaltung, auch ohne Server laufen lassen.
Ich mach damit zB gerne lokale Repositories, wenn ich an Dokumenten arbeite oder Bilder bearbeite.
- performance is a feature -

Microsoft MVP - @Website - @blog - @AzureStuttgart - github.com/BenjaminAbt
private Nachricht | Beiträge des Benutzers
chilic
myCSharp.de - Experte



Dabei seit:
Beiträge: 2143

beantworten | zitieren | melden

Zitat von pollito
Wir haben immer eine Online-Verbindung
... außer die funktioniert gerade nicht weil bei euch etwas defekt ist, die Internetverbindung extern nicht funktioniert, auf dem Server was nicht funktioniert oder eine der beteiligten Stellen Stromausfall hat.
Für diese Fälle würde ich mir einen Notfallplan überlegen damit ihr auch dann weiterarbeiten könnt.
private Nachricht | Beiträge des Benutzers
weismat
myCSharp.de - Member



Dabei seit:
Beiträge: 878
Herkunft: Frankfurt am Main

beantworten | zitieren | melden

Ich benutze als Einzelentwickler Mercurial via TortoiseHG und Visual HG.
Wichtig ist bei Euch neben dem Tool, dass Ihr Euren Entwicklungs-Prozess etwas mehr vereinheitlicht.
private Nachricht | Beiträge des Benutzers
zommi
myCSharp.de - Member

Avatar #avatar-2617.png


Dabei seit:
Beiträge: 1380
Herkunft: Berlin

beantworten | zitieren | melden

Ich kann Git eigentlich nur empfehlen. (wobei Mercurial auch gut funktioniert)

Beides kann man gratis, auch in Teams, für private Projekte auf Bitbucket hosten.

Als hilfreiches GUI-Tool hat sich bei mir SourceTree bewährt.

Wie bereits beschrieben, ist Git ein sehr mächtiges System, aber man muss ja nicht alles nutzen ;) Für manche Mini-Projekte nutze ich auch keinerlei Branches und arbeite nur allein daran.

Dennoch ist es hilfreicht, nicht einen Stand zippen zu müssen um ihn zu archivieren. Auch kann ich jederzeit von überall wo ich Interesse daran hab, kurz in meinen Repos browsen. Ich muss nicht über Sicherungskopien nachdenken. Ich kann in den Commit-Messages bestimmte wichtige Dinge für mich selbst hinterlegen. Auch hilfreich ist, dass klar ist, welche Dinge *wichtig* in einem Projekt sind (die sind nämlich im Versionsverwaltungssystem verfügbar) und was nur Test/Example/QuickHack/Temp-Files sind, die man auch einfacher und ohne Angst entfernen lassen kann.

So oder so, klare Empfehlung: Git. Falls es kompliziert aussieht, sieh es als Weiterbildung ;-)
Hilfreich: Git Book

Beste Grüße
Thomas
private Nachricht | Beiträge des Benutzers
Unfug
myCSharp.de - Member



Dabei seit:
Beiträge: 126

beantworten | zitieren | melden

+1 Git

Nutze 2 Branches

Produktiv
Development

Alles andere /Forks/weitere Branches muss der jeweilige Mitentwickler entscheiden und nach Absprache kann das gemerged werden. Ist aber zunächst nur lokal
Ich nutzte nur TortoiseGit über das Kontextmenü.

Komme damit äußerst gut klar. Wichtig ist jedoch auch klare Ansagen, wer für was in dem Projekt verantwortlich ist.
@zoomi
Danke für den SourceTree Link. Kannte das Prog noch nicht. Sieht nett aus.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Unfug am .
private Nachricht | Beiträge des Benutzers
pollito
myCSharp.de - Member

Avatar #avatar-3521.gif


Dabei seit:
Beiträge: 211

Themenstarter:

beantworten | zitieren | melden

Da wir absolute Neulinge in der Materie Versionsverwaltung sind, müssen wir versuchen, eine erste grobe Vorentscheidung aufgrund der Erfahrungsberichte anderer User zu treffen.

Hier sieht es so aus, als ob die meisten mit GIT zurecht kommen. Gibt es Mitglieder, die etwas über TFS berichten können?

Auf jeden Fall herzlichen Dank für eure zahlreiche Tipps!
René
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 16214

beantworten | zitieren | melden

TFS ist mehr als eine Versionsverwaltung, sondern auch Kollaboration- und Projektmanagement-System.
TFS ist nicht 1:1 mit Git zu vergleichen, da git eben nur Quellcodeverwaltung ist. Aber zu TFS (=> VSO) hab ich ja eigentlich schon einiges gesagt..
- performance is a feature -

Microsoft MVP - @Website - @blog - @AzureStuttgart - github.com/BenjaminAbt
private Nachricht | Beiträge des Benutzers
Parso
myCSharp.de - Member



Dabei seit:
Beiträge: 160

beantworten | zitieren | melden

Hallöchen,

warum so kompliziert. Für 2 Leute die vorher keine Versionsverwaltung verwendet haben - muss auf der anderen Seite ja genauso sein, sonst würde die Frage nicht aufkommen - braucht man keine umfangreiche Lösung, nur um seine Quellcodes zu sichern.

VisualSVN Server und AnkSVN reichen da vollkommen aus und die Installation und Bedienung sind nicht unbedingt Stoff für eine Doktorarbeit und der Zeitaufwand ist relativ gering für die Einrichtung.

Ich kann dir nur raten dir das einfach mal zu installieren und auszuprobieren. Die TFS VS-Integration kostet ziemlich viel Resourcen, macht das VS unterm Strich langsamer...biete dagegen einige nette Features mehr, die man im SVN ne Weile suchen muss oder gar nicht hat, ein bisschen Neugierde hat noch niemandem geschadet ;)

Nur solltet ihr immer n Backup machen, egal welche Versionsverwaltung ihr verwendet, irgendwann geht alles mal kaputt...

vg
Wenn's zum weinen nicht reicht, lach drüber!
private Nachricht | Beiträge des Benutzers
pollito
myCSharp.de - Member

Avatar #avatar-3521.gif


Dabei seit:
Beiträge: 211

Themenstarter:

beantworten | zitieren | melden

Danke für dienen Beitrag. Uns geht es ein kleines bisschen mehr als nur um Versionsverwaltung. Wenn ich das richtig verstanden habe, können die hier aufgeführten Systeme auch unterschiedliche Entwicklungszweige parallel verwalten. Das hätten wir auch gerne.

Die Dokumentation der einzelnen Stände inkl. Suche/Eingrenzung danach wäre auch ein nettes Feature.

Ich weiß auch nicht, ob und wenn, was wir zukünftig noch alles brauchen werden. Momentan kommen wir noch zurecht, aber das ist nicht befriedigend. Es ist alles von Hand zu Fuß... Wenn man einen Stand erreicht hat, wird dieser gezipt und konserviert. Ein Readme.txt beschreibt grob den Stand. Ansonsten arbeiten wir mit SyncToy, um Entwicklungsstände zu verteilen. Müssen wir einen früheren Stand rekonstruieren, geht die Sucherei sofort los. Dann parallel zum aktuellen Stand aktivieren, um daran arbeiten zu können. Es geht, aber es ist fehleranfällig und zum Teil zeitintensiv.

Ich denke aber, dass jeder Entwickler mit denselben Problemen zu kämpfen hat und das von mir Beschriebene für die Experten ein alter Hut ist.
René
private Nachricht | Beiträge des Benutzers
Coffeebean
myCSharp.de - Team

Avatar #avatar-3295.gif


Dabei seit:
Beiträge: 2461
Herkunft: Deutschland/Schweiz

beantworten | zitieren | melden

Beherzige doch mal den Tipp von Abt und mach mal ein Beispielprojekt auf TFS und spiel damit mal ein wenig rum.

Ich benutze TFS-(Online) auch und alle deine beschriebenen Probleme würden sich damit lösen lassen. Einfach mal anschauen. Das ist wirklich nicht so kompliziert :)
private Nachricht | Beiträge des Benutzers