SVN Anbieter gesucht

Larius

OutOfOrder
Teammitglied
Registriert
12 Juli 2013
Beiträge
3.831
Hallo alle zusammen,

da ich jetzt doch wieder vermehrt Zeit in die Entwicklung kleinerer Hobbyprojekte stecken will bin ich auf der Suche nach einem SVN Anbieter im Netz. Sicher, ich könnt mir lokal ne kleine VM einrichten wo ich das ganze Zeug dann hinspiel, aber ich hab halt doch a bissl Schiss vor nem HDD Crash (außerdem werd ich auf die VM wohl n Jenkins klatschen, der muss nicht die ganze Zeit laufen). Kennt jemand irgendeinen netten Anbieter der auch nichts dagegen hat wenn doch mal Code längere Zeit im SVN wg. Zeitmangel verrottet? Lokal kann ich mir leider keinen zweiten PC aufstellen aus platztechnischen Gründen...

Lg
Larius
 
Es gibt ja einige Anbieter, die kostenlos SVN anbieten, solange es sich um ein OpenSource-Projekt handelt.
Github dürfte hier sehr bekannt sein.

Wenn es ein privates SVN sein soll, dann wird die Auswahl schon schwieriger.
bietet einen kostenlosen Zugang mit 2 GB Storage.

Habe allerdings keine Erfahrung mit dem Anbieter. Bisher hab ich mein Zeug auch in einer VM gehostet.
 
Lokal kann ich mir leider keinen zweiten PC aufstellen aus platztechnischen Gründen...

Man braucht für SVN keinen Server, man kann auch Repositories im Dateisystem erstellen. Also Lokal oder auf einer USB -Festplatte.
 
  • Thread Starter Thread Starter
  • #4
Das ich für SVN keinen Server brauch sondern es auch im File System geht weiß ich, das hab ich schonmal ausprobiert. Auf die externe HDD auslagern, mhh, klingt interessant, das werd ich mir durchn Kopf gehen lassen.
 
Konkreter Grund warum es SVN sein soll?

Git hat im Endeffekt nur Vorteile, selbst mit nur einem Entwickler, und das Argument dass es für git keine GUI gibt zieht nicht mehr, die gibt es inzwischen genauso wie auch für SVN.
 
Welche Vorteile sollten das sein, bei einem Benutzer?
 
  • Thread Starter Thread Starter
  • #7
N konkreten Grund gibt es nicht, außer das ich noch nie mit GIT gearbeitet habe. Die Vorteile würden mich Interessieren, vl ist es ja an der Zeit GIT zu erlernen *g*
 
Zu den Vorteilen gehören da u.A.:

Echte Branches
Ein Branch in git ist nicht ein eigener Ordner, sondern besteht aus einer Untermenge von Commits.
Du kannst dabei beliebig zwischen Branches wechseln, mergen und was auch immer tun, das Arbeitsverzeichnis ist das selbe, du wechselst bei einem Wechsel des aktiven Branch nur den Inhalt.

Trennung zwischen Commit und Branch
Ein Commit kann zu einem oder mehreren Branches gehören.
Wenn du einen Commit erstellst (mit "git commit"), so gehört dieser erst mal nur zu deinem lokalen, aktiven Branch.
Der Server hat einen eigenen Branch, erst wenn du "git push" sagst, werden deine Commits an den Server übertragen (der Server übernimmt quasi deinen Branch als seinen eigenen). Dabei werden dann nur die Commits noch nachträglich übertragen, die dem Server noch fehlen.

Das bringt auch einen zweiten Vorteil mit sich: Obwohl der Server ein Backup des Repos hat, brauchst du keine Verbindung zum Server um sauber zu arbeiten. Da du die neuen Commits immer erst bei dir lokal auf dem Rechner erstellst, kannst du da auch ohne Netzwerkverbindung strukturiert arbeiten und dann bei der nächsten Gelegenheit gleich ein Dutzend Commits auf einmal synchronisieren.

Einfach mal lokal was ausprobieren?
Simpel, einfach schnell einen neuen Branch erstellen (das ist nur ein einziger Befehl der notwendig ist), die experimentellen Änderungen bereits lokal schon sauber in Commits verpacken und bei nicht gefallen kannst du den Branch immer noch verwerfen. Oder in den master mergen falls es funktioniert.

Wenn du mehrere Baustellen hast an denen du gleichzeitig arbeitest, kann es durchaus Sinn machen jede Baustelle in einem eigenen Branch zu behandeln, ab und an die Änderung testweise in einem "experimental" Branch zu mergen und erst im fertigen Zustand dann alle nacheinander in den Master.

Und ja: Das macht auch schon bei einem einzigen Entwickler Sinn. Der große Vorteil dadurch ist, dass du einzelne Änderungen problemlos zurückstellen kannst, und neue Features in der Reihenfolge in den Master mergen kannst in der du sie fertig gestellt bekommst.
Mit SVN sind Branches immer ein richtiger Alptraum...


Ein anderes nettes Feature: Der "stash".
Git erlaubt es dir Änderungen die du noch nicht in einen Commit verpackt hast, einfach in den "stash" zu packen, sprich die Änderungen werden gespeichert, das Repo wieder auf den letzten Commit zurück gesetzt und du kannst erst einmal etwas anderes tun. Wenn du fertig bist, "stash" wieder auspacken und weiter arbeiten.

Das macht immer dann Sinn, wenn du mitten in einer komplexeren Sache bist, dir allerdings mitten drinnen auf fällt, dass da vorher noch etwas anderes erledigt werden müsste, du aber aus der offenen Baustelle noch keinen Commit machen willst, da nicht lauffähig. In dem Fall kommen die aktuellen Änderungen in den stash, und du kannst auf einer SAUBEREN (lauffähigen) Kopie schnell die notwendigen Änderungen commiten, und anschließend den Stash wieder herstellen - welcher dann allerdings bereits auf dem neusten Commit aufbaut.

Nur EIN .git-Ordner für das gesamte Repo
Während bei SVN wirklich in jedem Ordner ein verstecketer .svn-Ordner liegt, gibt es bei Git nur einen einzigen solchen Ordner welcher im Wurzelverzeichnis des Repos liegt. Du kannst damit die Inhalte des Repos raus, rein, hin- und herverschieben wie es dir lieb ist, ohne dass es jedes mal dein komplettes lokales Repo zerstört. (Kopieren/Verschieben/Löschen innerhalb des Repos solltest du natürlich immer noch nur mit dem passenden GIT-Kommando machen, aus dem ganz einfach Grund dass damit die Versionshistorie für die jeweilige Datei erhalten bleibt.)


Nachteil an Git?
Git kennt keine leeren Ordner. Git kennt nur Dateien, sprich wenn du einen leeren Ordner erzeugen willst, dann muss dieser immer eine Datei als Platzhalter enthalten.

Außerdem ist es ein wenig schwierig innerhalb des Repos an einem bestimmten Pfad ein weiteres Repo ein zu binden (z.B. um eine bestimmte Bibliothek direkt aus einem anderen Repo zu beziehen). Das ist allerdings IMHO etwas, was man eh nicht tun sollte.
 
Zuletzt bearbeitet:
  • Thread Starter Thread Starter
  • #9
Wenn du mehrere Baustellen hast an denen du gleichzeitig arbeitest, kann es durchaus Sinn machen jede Baustelle in einem eigenen Branch zu behandeln, ab und an die Änderung testweise in einem "experimental" Branch zu mergen und erst im fertigen Zustand dann alle nacheinander in den Master.

Das versteh ich nicht ganz. Jedes neue Feature in einem eigenen Branch entwickeln und den dann submitten, k, soweit ist es klar. Aber würdne sich nicht bei vielen Baustellen die unterschiedlichen Branches vermischen? Oder trennst du da wirklich striktest die Änderungen was zu broken Branches führt welche du erst dann wieder alle mergen musst?
 
Jein, die einzelnen Branches sind selten broken wenn du sinnvoll trennst. Natürlich nicht für jede Kleinigkeit nen eigenen Branch, aber wenn Dinge länger dauern, klar.

Mergen ist ja auch nicht weiter wild, i.d.R. geht der Merge voll automatisch von statten, die notwendigen Mittel dafür bringt git von Haus aus mit. Konflikte gibt es nur wenn du tatsächlich die exakt selbe Zeile in zwei verschiedenen Branches anrührst, alles andere lässt sich automatisch auflösen.
 
  • Thread Starter Thread Starter
  • #11
hm ich hab 2 repos: GUI und DB. Jetzt ändere ich was an der DB, somit ist das repo v2. Wenn ich jetzt an der GUI was ändere wg Zugriff auf die neuen Db Funktionen muss ich doch auch das GUI Repo zuerst auf Db v2 bringen, ansonsten ist das broken. oder übersehe ich da was?
 
Nein, in dem Fall musst du natürlich erst die eine, dann die andere Änderung vornehmen.

Allerdings ist das Beispiel schlecht gewählt. Sinniger ist es an der Stelle nicht GUI und Backend zu trennen (das darf ruhig ein einziges Repo sein, insbesondere dann wenn die Versionen so eng verzahnt sind!), sondern jeweils Features. Wobei ein Feature durchaus Änderungen in GUI UND Backend beinhalten kann. Die Wahrscheinlichkeit dort sinnvoll trennen zu können, ist deutlich höher.
 
  • Thread Starter Thread Starter
  • #13
Ah, du meinst nicht ein Feature im Sinne von einer Änderung sondern im Sinne von einer Umsetzung bzw. einer Task-Card von Scrum.. Alles klar, dann war das ein semantisches Problem, danke für die Erklärung. Vl schau ich mir doch mal GIT an, klingt recht nett :D
 
für den fall das du dich für git entscheidest schreib mir mal ne pn bezügl. hosting :)
 
Wenn du es nicht ganz gratis willst aber trotzdem günstig. Hoste dein SVN/Git doch einfach selber

www.uebernauten.de

einfach regestrieren und nach Tutorial SVN aufsetzen, fertig.

Vorteile:
- Volle Kontrolle
- keine nervigen AGBs etc.
- keine Verpflichtungen wie "muss Open SRC werden"
- beliebige Module können dazugeschaltet werden, andere Webfrontends etc man entscheidet selber was man will und was man braucht

Nachteile:
- selbst aufsetzen
- Kosten von min. 1 € pro Monat (pay what u want)

Wenn du Fragen hast meld dich einfach :-)

MfG
 
Für git kann ich noch empfehlen, nutze das schon für mehrere Projekte. Unterstützt auch private Repos, die öffentlich nicht einsehbar sind.
Wenn du mit der git-Kommandozeile noch nicht sehr flott bist, empfehle ich , für nicht-kommerzielle Projekte kostenlos. Damit brauchst du eigentlich keine Konsole mehr zu bedienen (bzw. nur in Ausnahmefällen). Bietet unter anderem eine schöne grafische Commit- und Branchanzeige, Unterstützung für Git Flow, und noch viel mehr.
 
Zurück
Oben