Versionskontrolle basierend auf tragbarem Speicher?

9

Ich entwickle persönliche Projekte auf zwei Computern ohne Verwendung eines gemeinsam genutzten Servers oder einer Netzwerkverbindung zwischen beiden.

Unterstützen gängige Versionskontrollsysteme die Verwendung von tragbarem Speicher (z. B. einem USB-Flash-Gerät) als gemeinsam genutztes Repository zuverlässig?

billpg
quelle
Warum möchten / müssen Sie tragbaren Speicher verwenden?
Bernard
Verschieben von Code zwischen zwei Computern auf dieselbe Weise wie ein normales Versionskontrollsystem mit einem gemeinsam genutzten Server. (Ich habe keinen gemeinsamen Server.)
billpg
Früher habe ich eine Reihe von Quecksilber- Repositories auf einem USB-Stick verwendet, um die Fertigungswerkzeuge in der Fabrik zu aktualisieren, und es hat wirklich gut funktioniert. Sie konnten sogar sehen, wann Techniker vor Ort den Code auf dem lokalen Computer während Ihrer Abwesenheit geändert hatten, und ihre Änderungen zusammenführen (oder ablehnen), bevor sie ihre Änderungen wieder mit dem Flash-Laufwerk synchronisierten.
Mark Booth
Hier wurde bereits gesagt, dass SVN lokalen Speicher unterstützt und Sie USB verwenden können. Aber ich bevorzuge es, seine Datenbank in meinem privaten DropBox-Ordner zu speichern;) Sie können auch viele kostenlose Dienste nutzen (wie assembla oder tfs.visualstudio.com)
Pavel Voronin

Antworten:

31

Verwenden Sie ein DVCS wie Git oder Mercurial .

Verteilte Versionskontrollsysteme verfügen nicht über einen gemeinsam genutzten zentralen Server.

Bei einem DVCS enthält jede Kopie eines Repositorys den vollständigen Verlauf - alles. Dies bedeutet, dass bei Verwendung auf einem USB-Stick alle Änderungen, die Sie am Repository auf dem USB-Stick vornehmen, beim Verschieben zwischen Computern diesen Verlauf speichern.

Oded
quelle
9
Und wenn Sie Github verwenden würden, müssten Sie nicht einmal ein USB-Laufwerk mit sich
herumtragen
Vielen Dank. Kann es so eingerichtet werden, dass ein tragbarer Speicher als Repository verwendet wird?
Billpg
@ Billpg - Ja. Es lebt einfach in einer Verzeichnisstruktur.
Oded
@CamelBlues oder Bitbucket oder Kilnhg oder wahrscheinlich verschiedene andere, die geeignet sein können oder nicht ...
Murph
3
Ich habe meine wichtigsten persönlichen Mercurial-Repositories auf DropBox. Funktioniert hervorragend und implementiert automatisch ein Backup (da es unwahrscheinlich ist, dass DropBox gleichzeitig mit dem Verlust aller meiner Computer verschwindet).
David Thornley
7

Abgesehen von GIT, Mercurial usw., die oben vorgeschlagen wurden, sollten Sie sich auch Fossil ansehen. Es hat den Vorteil, dass die Laufzeit-Binärdateien klein (ca. 1 MB für Windows und Linux), portabel und ohne Installation sind. Daher kann es im Gegensatz zu den anderen (soweit mir bekannt ist) auf das Speichergerät gestellt und auf jedem Computer ausgeführt werden, an den der Speicher angeschlossen ist, ohne dass zuvor die App auf dem Computer installiert werden muss. Es enthält ein Wiki und ein Änderungs- / Fehlerverfolgungssystem mit dem Repo. Es hat auch eine GUI eingebaut.

Ich habe es nicht ernsthaft benutzt (ich benutze meistens GIT), war aber beeindruckt von seinem leichten Ansatz und der Aufnahme eines Wikis und eines Defekt-Trackers macht es ideal für kleine Projekte. Meine einzige Sorge war, dass einige der leistungsstärkeren Funktionen von GIT möglicherweise nicht möglich sind, und im Gegensatz zu GIT ist die Benutzergemeinschaft nicht so groß, dass es einfach ist, Antworten auf Fragen zu finden.

mattnz
quelle
Obwohl Git das Unix-Gebot ernst nimmt, um eine Sache zu tun und es gut zu machen, können Sie diese Funktionen in Git durch Erweiterungen wie Ticgit (Ticketing-System) und Gollum (Repo-basiertes Wiki) haben.
Jason Lewis
@ Jason Lewis: Sie haben Recht, und da es Open Source ist, können Sie es einfach so ändern, dass es Ihren Anforderungen entspricht, sodass GIT (oder jedes andere Tool) für jeden alles sein kann (wer sich Sorgen machen kann, über die Freizeit und die Ressourcen verfügt) Um alle "Plugins" herunterzuladen, zu installieren und zu debuggen. Alles, was ich gesagt habe, ist eine Lösung, die "
sofort
1

Die Verwendung eines DCVS ist wahrscheinlich eine gute Idee, aber nicht die einzige Option.

Ich habe ein kleines CVS-Repository auf einem USB-Stick. Wenn ich darauf zugreifen möchte, muss ich nur den Pfad des Stammverzeichnisses des Repositorys verwenden cvs -d <path>oder festlegen $CVSROOT(für den natürlich das USB-Stick auf dem System bereitgestellt werden muss).

Wenn Sie bereits an die Verwendung von CVS gewöhnt sind, sollte dies praktikabel sein. Gleiches sollte für SVN gelten. Dies bedeutet lediglich, dass sich Ihr zentrales Repository auf dem USB-Stick befindet und nicht immer sichtbar ist.

Es gibt Argumente für die Verwendung eines DCVS anstelle von CVS im Allgemeinen. Ich glaube nicht, dass diese Argumente besonders davon betroffen sind, ob sich das zentrale Repository auf einem USB-Stick oder an einem anderen Ort befindet. Sie können beispielsweise genauso einfach ein Git-Repository auf dem USB-Stick erstellen.

Keith Thompson
quelle
1
Ich bin normalerweise kein großer Fan von DVCS, aber ich denke, DVCS wäre in diesem Fall besser. Das Problem mit nicht verteiltem VCS besteht darin, dass das Repo ein einzelner Fehlerpunkt ist. Wenn es in einem klimatisierten Rechenzentrum sitzt und regelmäßig gesichert wird, ist das keine große Sache - aber so etwas wie ein USB-Stick geht früher verloren (oder wird betreten oder von einem Hund gefressen oder in einen Weißrussen fallen gelassen) oder später.
Mike Baranczak
1
@ MikeBaranczak: Guter Punkt - aber alles auf einem USB- Stick sollte regelmäßig gesichert werden, unabhängig davon, ob es sich um ein CVS-Repository handelt oder nicht.
Keith Thompson
Bei einem verteilten System verfügt jeder Client bereits über eine vollständige Kopie des Repos. Es gibt also keinen Grund für ein separates "Backup" -Verfahren.
Mike Baranczak
1
@ MikeBaranczak: Sicher, das ist ein guter Grund, ein DCVS zu verwenden. Mein Punkt ist, dass die Wahl eines DCVS gegenüber einem zentralisierten System nicht davon abhängt, ob Sie einen USB-Stick verwenden oder nicht.
Keith Thompson
0

Als Ergänzung zu den anderen Antworten:

Während ein DVCS sehr gut zu diesem Problem passt, können Sie Subversion technisch auch verwenden, wenn Sie sich damit wohler fühlen. Subversion kann ein lokales Verzeichnis anstelle eines zentralen Servers verwenden. Sie können das einfach auf einen USB-Stick legen und verwenden.

Der Nachteil im Vergleich zu einem DVCS besteht darin, dass Sie nur mit Subversion (dh Festschreiben, Anzeigen von Protokollen usw.) arbeiten können, während das USB-Stick angeschlossen ist. Außerdem muss es immer dasselbe USB-Stick sein (oder zumindest ein Up-Laufwerk) -to-date copy), da Sie mit Subversion nicht mehr als ein Repository verwenden sollten (das ist der nicht verteilte Teil). Wenn Sie also jemals Ihren USB-Stick vergessen haben, können Sie ihn im Gegensatz zu Git oder Mercurial nicht verwenden.

Hinweis:

Wie oben und in den Kommentaren erläutert, passt ein DVCS wirklich besser zu Ihrem Problem. Ich habe Subversion nur der Vollständigkeit halber erwähnt, und falls Sie einen besonderen Grund haben, Subversion zu verwenden.

sleske
quelle
1
Wie bei der Antwort von Keith besteht das Problem bei einem VCS in einem lokalen Verzeichnis darin, dass es sich um einen einzelnen Fehlerpunkt handelt. Wenn Sie von Maschine A zu Maschine B wechseln, aber den USB-Stick an Maschine A angeschlossen lassen, ist es weniger wahrscheinlich, dass Sie sich darum kümmern, wenn Sie ein DVCS verwenden (Sie können Ihre lokalen Änderungen später jederzeit zusammenführen), während Sie ein VCS verwenden Sie müssten zu Maschine A zurückkehren, das Laufwerk holen und zu Maschine B zurückkehren, bevor Sie fortfahren können.
Mark Booth
@MarkBooth: Ich befürworte diese Lösung nicht, ich wollte nur darauf hinweisen, dass sie der Vollständigkeit halber existiert und falls OP einige spezielle Präferenzen für Subversion hat. Ich habe meine Antwort bearbeitet, um dies klar zu machen.
Sleske
Vielen Dank an @sleske, ich stimme zu, dass eine Präferenz für svn(oder tatsächlich Lebensläufe) für die Verwendung dieser Lösung sprechen könnte, aber im Interesse einer vollständigen Offenlegung sollten auch die Nachteile dieses Ansatzes erwähnt werden. Fühlen Sie sich frei, die Punkte aus meinem Kommentar in Ihre Antwort zu bearbeiten. Wenn Sie dies tun, würde ich gerne meine Kommentare bereinigen (löschen). * 8 ')
Mark Booth
Ich bin mir nicht sicher, was diese Antwort hinzufügt, die ich noch nicht in meiner gesagt habe.
Keith Thompson
1
@KeithThompson: Es werden die Informationen hinzugefügt, dass SVN ein lokales Verzeichnis anstelle eines zentralen Servers verwenden kann. Dies wird in den SVN-Dokumenten erläutert. Da die meisten Benutzer SVN jedoch über einen zentralen Server verwenden, ist es möglicherweise nicht offensichtlich, dass für SVN kein Server erforderlich ist.
Sleske