Verteilte Versionsverwaltung mit WinServer als Master Repository

prototype0815

Cadet 2nd Year
Registriert
Jan. 2014
Beiträge
31
Guten Morgen Community,

ich habe eine vllt etwas laienhafte Frage an eure Spezialisten auf diesem Gebiet.

Ich habe die Aufgabe erhalten ein Versionsverwaltung in unserem Unternehmen einzuführen. Nun habe ich mich auf die Suche begeben und auch schon viel heraus gefunden und gesehen das es eine Unmenge an angeboten gibt. Die wichtigsten Eckdaten die ich einhalten muss sind:

auf Windwos Server/Client basierend (wir haben keine Linux Server am laufen)
Verteilte Versionsverwaltung wäre mir persönlich am liebsten und m.Mn.n. am sinnvollsten
Wir brauchen ein Zentrales Repository (für unseren Windows Server) also nicht online!


Da ich noch ein totaler Frischling auf diesem Gebiet bin, suche ich euren Rat und biite um ein paar Vorschläge die für mich/mein Unternehmen zu gebrauchen wären.

Vielen Dank
 
Die gaengisten Versionsverwaltungen sind: Subversion (SVN) oder GIT. Fuer den Fall das ihr einen TeamFoundationServer (TFS) hab, dieser kann auch Versionsverwaltung. Sicher gibt es noch mehr Versionsverwaltungen, die genannten habe ich bis jetzt genutzt. Kannst ja einfach zu den genannten etwas nachlesen. Sicher koennen dir die anderen hier noch weitere nennen, oder ggf. Hilfestellung geben.

http://www.fh-wedel.de/~si/seminare/ws08/Ausarbeitung/06.vvw/vvw1.htm - Infos zu zentraler und verteilter Verwaltung.

Wobei ich denke eine verteilte Versionsverwaltung mit GIT und einem zentralen Repository ist eine gute Loesung.
 
Zuletzt bearbeitet:
Hey danke für die schnelle antwort, genau diese Doku hab ich vorhin durchgelesen und deshalb hab ich mich erst mal Richtung Bazaar orientiert. Das große Problem dabei ist das diese Doku wie man an der URL erkennen kann im Winter Semester 2008 geschrieben wurde, d.h. der Stand der Entwicklung dieser Versionsverwaltungen ist "HEUTE" über 5 Jahre alt.

Ich möchte eben gerne eure Erfahrungen und Meinungen dazu hören, vllt orientiere ich mich ja in eine komplett falsche Richtung.

Mein Motto: erst Fragen dann schiessen...
 
Die verteilte Versionsverwaltung die in dem Dokument beschrieben ist, laesst sich zb. (wie oben schon beschrieben) mit GIT abbilden.
Jeder hat auf dem zentralen Repo ein eigenen Branch und commited seine Aenderungen ersteinmal lokal und dann in den Branch auf dem zentralen Repo server. Zu einem gegebenen Zeitpunkt X wird dann der Feature-Branch in den Hauptbranch gemerged usw.

Zu diesem Thema koenntest du dich zu GIT und GIT Flow belesen.

Auch wenn die Beschreibung 5 Jahre alt ist, die vorgehensweise ist ja die gleiche.
 
so jetzt hab ich mal git und danach tortoiseGit drauf gemacht. Der nächste Schritt wäre nun gitHub, aber dazu noch ein paar Fragen an die Profis ...

  • gitHub läd meine git-Projekte auf einen Server hoch, richtig?
  • ist der Kanal mit dem hochgeladen wird per RSA verschlüsselt oder die Projekte die hochgeladen werden ?


ich darf unseren SourceCode nicht ins Internet hochladen.
  • gibt es eine möglichkeit gitHub auf einen internen Server hochladen zu lassen? also als Master Repository?



 
Sicherlich gibt es eine Moeglichkeit einen "localen" Git-Server aufzusetzen. Allerdings kann ich dir da nicht weiterhelfen, da ich es nur benutzt habe und nie selbst eingerichtet habe.
 
Github ist nur ein Codehoster und wird nicht benötigt um git zu benutzen. Unter git wird immer (wenn nicht explizit anders angegeben) das komplette Repository geclont, weshalb im Prinzip jeder Knoten, der up-to-date ist, als zentrales Repo genutzt werden kann. Man muss sich nur auf einen einigen. Das wäre in deinem Fall sicher euer Server. Git kann über ssh, http, Dateisystemebene und evtl. noch einigem mehr arbeiten und ich denke da ist sicher was für deine Infrastruktur dabei.
 
auf diese Art hätte ich gerne Git benutzt

799361-PIC.png

Ich habe meine Projekte in meinem Workspace Ordner ( D.\<Workspace> ) und kann nun mit Rechtsklick auf einen Ordner "Git Projektarchiv hier erstellen" wählen. Wenn ich das mache, ist dieser Ordner dann ein Repository?

Muss ich diese Funktion auf jedes Projekt in meinem Workspace anwenden oder nur auf den Workspace selbst?

D:\Workspace\projekt1 <-- hier drauf.....oder
D:\Workspace <-- hier drauf ?

Ich habe ausserdem "EGit - Git Team Provider 3.2.0" in Eclipse implementiert....
 
Zuletzt bearbeitet:
Wenn du deinen Workspace nicht als ein Repo behandeln möchtest musst du für jedes Projekt ein Repo anlegen. Das machst du am besten auf dem Server und clonest dann auf die Clients.
Wie können die Clients denn auf den Server zugreifen?

Edit: Wenn du "Git Projektarchiv hier erstellen" anklickst sollte sich danach ein unsichtbarer Ordner "git" in dem Ordner befinden. Das ist im Prinzip das ganze Repo
 
ah ok, super... der "Server" ist wenn das denn geht, nur ein bereit gestelltes Netzlaufwerk. Das auf allen PC´s der Softwareentwicklung zur verfügung steht. Bin mir nicht sicher obs so einfach geht, aber das wäre schön. :D

das mit dem unsichtbaren Ordner ist genau so wie du gesagt hast. mir ist nur nnoch nicht ganz klar wie das mit der kopie eines Projekts vom lokalen Repository funktionieren soll.

D:\Workspace <-- dort sollen die kopien vom lok.Rep. rein an denen dann gearbeitet wird
D:\lokRep <-- dies soll mein lokales Repository sein
Z:\Master <-- das hier soll mein MasterRep. sein


  • also im prinzip muss ich alle Projekte so wie sie jetzt sind nach "Z:\Master" kopieren, und den kompletten Ordner zu einem Rep. machen.
  • Dann lösche ich alle meinen lokalen Projekte.
  • nun klone ich "Z:\Master" nach "D:\lokRep"
  • und jetzt kann ich in eclipse "import" -- "Projects from Git" -- "Existing local Repository" -- < hier das jewweilige Projekt > machen



stimmt das so?
 
Du hast in deinem Workspace doch verschiedene Projekte und es bietet sich daher meiner Meinung nach nicht an die alle zusammen zu verwalten. Das sollte man schon getrennt machen.
Das vorgehen sollte meiner Meinung nach so aussehen:

  1. Workspace auf den Server kopieren
  2. für jeden Projektordner ein "git init" und commiten aller Dateien. Wahrscheinlich ist es hilfreich sich ein gutes .gitignore zu überlegen oder je nach Projekttyp zu ergooglen.
  3. Nun muss auf jedem Client geclonet werden. Du gehst also in deinen lokalen Workspaceordner und machst dort für jedes Projekte ein "git clone Z:\Workspace\Projekt1"
  4. Der Ort von dem aus geclonet wurde wird automatisch als Remote mit dem Namen "origin" hinzugefügt, weshalb jetzt eigentlich alles laufen sollte (pull und push).

Wie die einzelnen Schritte unter Windows bzw. in Eclipse aussehen kann ich dir nicht genau sagen, da ich eigentlich alles über die Console mache. Das Prinzipielle vorgehen sollte aber so aussehen. Je nachdem wie viele Clients und Projekte zu bearbeiten sind sollte man über ein Script nachdenken.

Edit: Bevor du aber ernsthaft anfängst solltest du dir zumindest die ersten paar Kapitel hier http://git-scm.com/book (wahlweise auch auf deutsch) durchlesen. Ich denke anschließend ist vieles klarer und man lernt auch den Umgang mit git.
 
Zuletzt bearbeitet:
Du musst darauf achten, dass das gemeinsame repo "bare" initialisiert wird. Entsprechende Erläuterungen finden sich im Netz.

Wenn du eine Art eigenes GitHub intern hosten möchtest, bieten sich da z.B. gitolite (eher spartanisch) und GitLab an. Wie und ob die unter Windows laufen, musst du mal ergooglen.
 
Freezedevil schrieb:
....Das vorgehen sollte meiner Meinung nach so aussehen:

  1. Workspace auf den Server kopieren
  2. für jeden Projektordner ein "git init" und commiten aller Dateien. Wahrscheinlich ist es hilfreich sich ein gutes .gitignore zu überlegen oder je nach Projekttyp zu ergooglen.
  3. Nun muss auf jedem Client geclonet werden. Du gehst also in deinen lokalen Workspaceordner und machst dort für jedes Projekte ein "git clone Z:\Workspace\Projekt1"
  4. Der Ort von dem aus geclonet wurde wird automatisch als Remote mit dem Namen "origin" hinzugefügt, weshalb jetzt eigentlich alles laufen sollte (pull und push).
Also ich bin kein Freund der Konsole, ich denke mir einfach immer "warum kompliziert wenns auch einfach geht"...immerhin wurde in den 80er die grafische Benutzoberfläche ja nicht umsonst entwickelt :D
INFO: ich habe Git 1.8.5.2 mit TortoiseGit 32 bit installiert.

ich bin nun wie folgt vor gegangen...

  • zum testen hab ich 2 Ordner auf meiner D: Festplatte angelegt (ZentralRep, lokalRep)
  • ich hab ein vorhandenes Projekt aus meinem Eclipse Workspace ausgeschnitten und in ZentralRep eingefügt
  • dann habe ich mit Rechtsklick auf das Projekt1 in ZentralRep folgendes ausgeführt --> Git Projektarchiv hier erstellen, mit der option "Erstelle von Bare-Repository"
folgende warnung kam dann
799459-PIC.png

aber alles wurde erfolgreich initialisiert.

  • nun hab ich mit Rechtsklick auf lokalRep "Git Klonen" ausgwählt, mit folgendem Pfad D:\ZentralRep\Projekt1
auch alles erfolgreich.

  • Nun in Eclipse --> "Import" --> "Projects from Git" --> "Existing local Repository" --> "add" --> D:\lokalRep\Projekt1
Finish --> alles soweit ok!

Fail! :mad: das Projekt1 wird zwar in Eclipse angezeigt aber ohne src oder sonst was... Im Workspace Ordner von Eclipse ist es auch nicht... und arbeiten dran kann ich auch nicht

Was mach ich denn flasch?



 
Zumindest mal die Fettschrift deaktivieren...

Du musst die Dateien, die du kopiert hast erst unter die Versionskontrolle setzen (git add), dann committen (git commit) und pushen (git push). Erst dann kannst du in deinen lokalen Repos mit git pull die Dateien sehen.

Ich würde dir auch empfehlen einen Git Server wie GitLab oder Atlassian Stash zu verwenden. Da du so auch ein Usermanagement bekommst.
 
Guten Morgen, ich hab nun alles hinbekommen und am laufen, test nun aktuell mit merkurial und git. Falls jemand eine genau Anleitung(von mir geschrieben) braucht, E-Mail an mich dann schick ich ein Word.doc per Mail zurück.
 

Ähnliche Themen

Zurück
Oben