Können wir svn server auf einem lokalen Computer ohne Netzwerkzugriff einrichten?

25

Ich möchte ein SVN-Repository auf meinem Computer ohne Netzwerkzugriff einrichten. Ich arbeite an einem Code ohne Mitarbeiter, daher möchte ich nicht, dass er öffentlich verfügbar ist.

Ich habe diesen Beitrag gelesen , er schlägt jedoch die Verwendung von Online-SVN-Repository-Diensten vor, die kostenlose Repositorys bereitstellen. In diesem Fall ist mein Code öffentlich verfügbar (wie in den Bedingungen für kostenlose Pläne enthalten).

Ich habe mich also gefragt, ob ich auf meinem Windows XP-Computer einen lokalen Server einrichten kann, auf den nur ich zugreifen kann, auch wenn ich keine Internetverbindung habe.

Aitezaz Abdullah
quelle
15
Ich würde dringend empfehlen, git über so etwas wie svn für den von Ihnen beschriebenen Workflow zu verwenden
Daenyth,
7
Sie können svn auf jeden Fall lokal installieren und verwenden. Keine Probleme damit. visualsvn.com/server/download
Alex
8
Oder Mercurial; "hg init" erstellt ein Repository in dem Verzeichnis, in dem Sie sich befinden ... kann es nicht einfacher sein?
Perp
8
Ich sehe in der Frage nichts, was darauf hindeutet, dass ein DVCS notwendig ist. Subversion ist die perfekte Lösung für das beschriebene Szenario. Lassen Sie uns unsere Antworten nicht mit Empfehlungen für Alternativen verwischen, wenn es keinen technischen Grund dafür gibt.
RichardM
3
@RichardM: Es ist nichts Falsches daran, eine andere Lösung vorzuschlagen, wenn sie einfacher einzurichten und zukunftssicherer ist. Ein DVCS bietet viele weitere Vorteile, wenn das OP eines Tages mit anderen Menschen zusammenarbeiten möchte.
marco-fiset

Antworten:

31

Der einfachste Weg, einen lokalen Server einzurichten, ist die Verwendung von svnserve :

Subversion enthält Svnserve - einen kompakten eigenständigen Server, der ein benutzerdefiniertes Protokoll über eine normale TCP / IP-Verbindung verwendet. Es ist ideal für kleinere Installationen oder für Umgebungen, in denen ein vollständiger Apache-Server nicht verwendet werden kann.

Sie nicht wirklich brauchen einen Subversion - Server aber, wenn alles , was Sie tun wollen Zugriff lokal das Repository ist, da Sie eine Subversion - Repository über eine Datei - URL zugreifen können, wie beschrieben in dieser Antwort :

Sie können über das Protokoll file: // auf das Repository zugreifen, sodass nur Tortoise SVN und nichts anderes installiert sein muss. Siehe diese Frage in FAQ: Ist es möglich, TortoiseSVN ohne einen Server zu benutzen?

Sie können das Repository sogar im USB-Gerät haben, sodass Sie die Quelle mitnehmen und von anderen Computern aus daran arbeiten können.

Wenn Sie TortoiseSVN verwenden , finden Sie Anweisungen unter Erstellen des Repositorys mit TortoiseSVN :

  1. Öffnen Sie den Windows Explorer

  2. Erstellen Sie einen neuen Ordner und nennen Sie ihn zB SVNRepository

  3. Klicken Sie mit der rechten Maustaste auf den neu erstellten Ordner und wählen Sie TortoiseSVN → Create Repository here ....

Direkt oben auf dieser Seite wird auch beschrieben, wie Sie ein Repository über die Befehlszeile erstellen .


Trotzdem würde ich empfehlen, dass Sie sich Mercurial oder Git als Alternative ansehen svn. Wenn Sie mit TortoiseSvn vertraut sind, finden Sie in TortoiseHg und TortoiseGit einen einfachen Übergang. Außerdem haben Sie die Möglichkeit, später verteilt zu arbeiten, wenn dies erforderlich ist. In der Vergangenheit habe ich zum Beispiel Memory Sticks verwendet, um hgRepositorys zwischen Computern ohne Netzwerkzugriff zu übertragen , und wenn Sie auf diese Weise arbeiten, erhalten Sie ein kostenloses Backup.

Mark Booth
quelle
Was für eine großartige Antwort!
Steve
9

Der einfachste (und schnellste) Server, den Sie für die Arbeit mit dem lokalen Repository verwenden können, ist in jeden SVN-Client eingebettet . Dies ist ein Server für den Zugriff auf ein beliebiges Repository und eine beliebige Anzahl von Repositorys , die im lokalen Dateisystem vorhanden sind, unter Verwendung der Protokolldatei: ///. Es bietet keine Autorisierungs- oder Authentifizierungsmethoden, gewährt nur uneingeschränkten Zugriff auf das kontrollierte Repository, erlaubt jedoch die Verwendung und bietet alle Funktionen des VCS-Systems an sich.

Um diesen Server nutzen zu können, müssen Sie in einem beliebigen leeren Verzeichnis an einem beliebigen Ort den CLI-Befehl svnadmin mit dem entsprechenden Unterbefehl und den entsprechenden Parametern aufrufen (Ich kann mich nicht erinnern, gibt es Verwaltungsprogramme im CLI-Client-Bundle oder nicht und kann nicht check it - Ich habe CLI svn-client nicht installiert, nur TortoiseSVN, die diese Programme in Installer in Version 1.7 haben. - Ich hoffe, Sie werden es finden können.

svnadmin helpzeige uns alle verfügbaren Unterbefehle, wir sind jetzt an Unterbefehlen interessiert create.

svnadmin help create Geben Sie alle für uns erforderlichen Details an

create: usage: svnadmin create REPOS_PATH

Create a new, empty repository at REPOS_PATH.

Valid options:
...

Am Startpunkt für das erste Repo können wir alle Feinabstimmungsoptionen ignorieren und uns nur an das Hauptformular erinnern svnadmin create REPOS_PATH, da REPOS_PATH der absolute oder relative Pfad zum leeren Verzeichnis ist, der für das Repo geplant ist. Da die meisten normalen Windows-Benutzer für plattformübergreifende Anwendungen verwirrt sein können, welche Schreibweise (Forward- oder Backslashes) im Pfad (Metoo) zu verwenden ist, ist der sicherste Weg cdder Ort, von dem aus unser Verzeichnis ohne langen Pfad sichtbar ist - Eltern des zukünftigen Repo-Verzeichnisses oder des Verzeichnisses selbst. Für Repo z:\Main vorher geplant svnadmin create

Z:
cd \Main

und zuletzt,

svnadmin create .

Als Ergebnis erhalten wir ein leeres Repository im Verzeichnis, das im Windows Explorer mit einem speziellen Symbol als Inhaltsindikator angezeigt wird

RepoFolder

Jedes Mal, wenn dieses Repository benötigt wird, verwenden wir die üblichen SVN-Befehle, da der URL-Teil oder die Parameter wie folgt aussehenfile:///Z:/Main

c:\>svn ls file:///Z:/Main
branches/
tags/
trunk/

(Ich habe Standard-Repository-Baum in Repo hinzugefügt).

Untersuchen wir diese seltsame URL:

  • file:///Wie bei jeder URL bedeutet Zugriffsprotokoll, in unserem Fall ist das Protokoll speziell und hat drei, nicht zwei Schrägstriche
  • Z:/Main ist voller Pfad zum Repo mit Laufwerk und Pfad innerhalb des Laufwerks, dort werden alle Windows-Backslashes durch "klassische" Forward-Slashes ersetzt

Ansonsten hat dieses Repository keine Unterschiede zu "Big Brothers" mit speziellen Subversion-Servern

RepoBrower für Datei: /// Repo

Fauler Dachs
quelle
1
@ Lazy Badger Das OP fragte klar, wie ein SVN-Server einzurichten ist. Sie haben ihm gesagt, dass er keinen Server verwenden soll. Dies vermeidet, wie angegeben, die Beantwortung der Frage.
Alternative
5
@mathepic - eigentlich fragt das OP, wie ein SVN- Repository eingerichtet werden soll, nicht ein Server - großer Unterschied.
Murph
5

Versuchen wir eine Antwort, die eher generische als spezifische Lösungen empfiehlt.

Erstens können Sie Subversion auf einem eigenständigen Computer verwenden. Sie können den Server lokal installieren oder mit file: // arbeiten.


Aber es sei denn, es gibt einen sehr guten Grund, warum Sie Subversion verwenden müssen. Ich würde vorschlagen, dass dies nicht die beste Lösung für das Problem der lokalen Versionskontrolle ist - nicht zuletzt, weil es eines der Dinge versagt, die ich für wesentlich halte, dh dafür zu sorgen, dass Sie Der Quellcode befindet sich an mindestens zwei Stellen (ja, auch für persönliche Dinge). Ich würde daher die Verwendung eines Distributed Version Control Systems (DVCS) vorschlagen.

Einer der Vorteile von DVCS besteht darin, dass sich die Repositorys nach der Installation der Tools in einem Ordner befinden und Sie Inhalte zwischen verschiedenen Ordnern mit demselben Repository synchronisieren können, sofern Sie über Dateizugriff verfügen. Sie haben auch die Möglichkeit, mit "Server" -Versionen dieser Repos (die entweder privat gehostet oder als Service verfügbar sind) zu sprechen. Dies macht das Leben viel einfacher, alles vor Ort zu betreiben.

DVCS bietet noch weitere Vorteile.

Wie ich bereits bemerkt habe, glaube ich nicht, dass Sie wirklich eine richtige VCS-Lösung haben, bis sich Ihr Code auf mindestens zwei Rechnern befindet (insbesondere auf zwei verschiedenen Festplatten und idealerweise an mehr als einem Ort - obwohl Sie klonen und USB-Stick oder USB-Stick drücken "Cloud" -Speicher (Skydrive, Dropbox usw.) ist eine weitere Möglichkeit, die ebenfalls funktionieren sollte.

In Bezug auf welche DVCS - ich würde Mercurial (Hg) und Git und auch bei Veracity suchen . Ich benutze Mercurial, weil es unter Windows noch schöner ist ...

Wenn Sie sich für gehostete Dienste entscheiden, stimme ich tatsächlich zu, dass es sehr viel zu empfehlen gibt - aber es gibt auch viele nette Dinge über bitbucket und Fogbugz / Kiln ... und das gilt wahrscheinlich auch für viele andere Dienste die ich nicht aufgeführt haben (zB http://beanstalkapp.com/ , die auf Twitter heute früher im Vorbeigehen zu mir erwähnt wurde)

Murph
quelle
2

Subversion benötigt keinen Server. Es wird ein zentrales Repository verwendet. Auf dieses Repository kann jedoch über die Zugriffsmethode 'file' zugegriffen werden. Das heißt, Sie müssen lediglich auf das Dateisystem zugreifen, auf dem das Repository gespeichert ist. Die einfachste Möglichkeit, dies einzurichten, besteht darin, irgendwo auf Ihrer Festplatte einen Ordner zu erstellen, TortoiseSVN (oder ein ähnliches Tool) darauf zu zeigen und "Repository hier erstellen". Von dort aus können Sie alles tun, um Ihren Code in das Repository zu übertragen.

Auf lange Sicht ist es jedoch wahrscheinlich besser, ein verteiltes SCM zu verwenden. Die besten Kandidaten sind git (leistungsfähigere, steilere Lernkurve, funktioniert am besten unter * nix) und mercurial (etwas weniger leistungsfähig, einfach zu erlernen, funktioniert gleichermaßen) gut auf Windows und * nix). Damit enthält Ihre Arbeitskopie das gesamte Repository und Sie können beliebig viele Klone (remote oder lokal) erstellen. Sie können lokal beginnen, und wenn Sie das Repository extern hosten möchten, klonen Sie einfach Ihr vorhandenes lokales Repository an den externen Speicherort, und Sie können jederzeit in beide Richtungen synchronisieren. Besser noch, da jeder Ihrer Klone den gesamten Projektverlauf enthält, fungiert der SCM gleichzeitig als Backup-System. Wenn Ihr Server bei Subversion ausfällt und Sie ihn nicht gesichert haben, ist Ihre Historie verschwunden - mit git,

http://hginit.com/ enthält ein hervorragendes Tutorial für den Einstieg in mercurial.

tdammers
quelle
1

Es gibt eine ganze Reihe von SVN-Hosting-Unternehmen , die ein oder zwei Entwicklern ein kostenloses Konto anbieten und nicht verlangen, dass Ihr Code öffentlich ist. Überprüfen Sie das verknüpfte Diagramm auf 0 USD Gebühr, OSS erforderlich = NEIN. Ich zähle derzeit neun Anbieter, die diese Kriterien erfüllen.

Zwar können Sie Ihr eigenes Repository ganz einfach hosten, doch die Verwendung eines Providers bietet einige Vorteile:

  • Sie können von überall ohne zusätzliche Einrichtung auf Ihren Code zugreifen.

  • Wenn Sie Ihren Code außerhalb des Standorts aufbewahren, werden Sie vor Abstürzen, Bränden usw. geschützt.

  • Geringer administrativer Aufwand.

Caleb
quelle
Ich sehe ein vernünftiges Konzept auf der OP-Seite - er möchte SVN und möchte es lokal (letztes Wort - am wichtigsten). Lässiger Use-Case. Sie haben auf einen anderen Anwendungsfall geantwortet , der als "Keine Antwort" bezeichnet werden kann - lesen Sie Ihren Text bitte noch einmal aus den ersten Worten! Ich habe Ihre und andere Antworten als „keine Antwort“ nicht markiert, während formell sie sind keine Antworten . HTH
Lazy Badger
LAST SENTENCE von OP erneut lesen: "Kann ich auf meinem Windows XP-Computer einen lokalen Server einrichten, auf den nur ich zugreife, auch wenn ich keine Internetverbindung habe?" - Dies ist eine Frage in einfachem englischen Text. Diese Frage muss beantwortet werden. Korreliert Ihre "Antwort" in irgendeiner Weise mit einer Frage ?! Seien Sie zumindest zu sich selbst ehrlich und erkennen Sie die Fehler
Lazy Badger
Ich lese nicht zwischen Zeilen (und habe dies mehrmals gezeigt ), ich lese genau, was geschrieben wurde, und beantworte auf eine gestellte Frage, ohne an den Autor zu denken, den er sagen wollte , aber nicht sagen wollte . Im Gegensatz zu den meisten Antworten in diesem Thema entsprechen die Antworten nicht der Frage
Lazy Badger