Pouvons-nous configurer le serveur svn sur un ordinateur local sans accès au réseau?

25

Je souhaite configurer un référentiel SVN sur mon ordinateur sans accès au réseau. Je travaille sur un code sans aucun collaborateur, donc je ne veux pas qu'il soit accessible au public.

J'ai lu cet article , mais il suggère d'utiliser des services de référentiel SVN en ligne qui offrent des référentiels gratuits. Dans ce cas, mon code sera accessible au public (comme cela est inclus dans les conditions des plans gratuits).

Je me demandais donc si je peux configurer un serveur local sur ma machine Windows XP auquel seul j'accède même si je n'ai pas de connexion Internet?

Aitezaz Abdullah
la source
15
Je recommande fortement d'utiliser git sur quelque chose comme svn pour le flux de travail que vous avez décrit
Daenyth
7
Vous pouvez certainement installer svn localement et l'utiliser. Aucun problème avec ça. visualsvn.com/server/download
Alex
8
Ou Mercurial; "hg init" crée un référentiel dans le répertoire dans lequel vous vous trouvez ... ne peut pas être beaucoup plus facile que ça?
perp
8
Je ne vois rien dans la question suggérant qu'un DVCS est nécessaire. Subversion est la solution idéale pour le scénario décrit. Ne brouillons pas nos réponses avec des recommandations d'alternatives lorsqu'il n'y a aucune raison technique de le faire.
RichardM
3
@RichardM: Il n'y a rien de mal à suggérer une autre solution si elle est plus facile à configurer et plus évolutive. Un DVCS offre de nombreux autres avantages si le PO souhaite collaborer un jour avec d'autres personnes.
marco-fiset

Réponses:

31

La façon la plus simple de configurer un serveur local est d'utiliser svnserve :

Subversion inclut Svnserve - un serveur autonome léger qui utilise un protocole personnalisé sur une connexion TCP / IP ordinaire. Il est idéal pour les petites installations ou lorsqu'un serveur Apache complet ne peut pas être utilisé.

Cependant, vous n'avez pas vraiment besoin d' un serveur subversion, si tout ce que vous voulez faire est d'accéder localement au référentiel, car vous pouvez accéder à un référentiel subversion via une URL de fichier, comme décrit dans cette réponse :

Vous pouvez accéder au référentiel en utilisant le protocole file: // donc vous n'aurez besoin que de Tortoise SVN installé et rien d'autre. Voir cette question dans la FAQ: Est-il possible d'utiliser TortoiseSVN sans serveur?

Vous pouvez même avoir le référentiel dans le périphérique USB afin que vous puissiez emporter la source avec vous et travailler à partir d'autres ordinateurs.

Si vous utilisez TortoiseSVN , vous pouvez trouver des instructions sur Création du référentiel avec TortoiseSVN :

  1. Ouvrez l'explorateur Windows

  2. Créez un nouveau dossier et nommez-le par exemple SVNRepository

  3. Faites un clic droit sur le dossier nouvellement créé et sélectionnez TortoiseSVN → Créer un référentiel ici ....

Immédiatement au-dessus de cette page décrit également comment créer un référentiel à partir de la ligne de commande .


Cela dit, je recommanderais que vous jetiez un œil à Mercurial ou Git comme alternative svn. Si vous êtes familier avec TortoiseSvn, alors vous trouverez TortoiseHg et TortoiseGit une transition facile, en plus il vous donne la flexibilité de travailler de manière distribuée plus tard si vous en avez besoin. Par exemple, dans le passé, j'ai utilisé des clés USB pour transférer des hgréférentiels entre des machines sans accès au réseau, et lorsque vous travaillez de cette façon, vous obtenez une sauvegarde gratuite.

Mark Booth
la source
Quelle bonne réponse!
Steve
9

Serveur le plus simple (et le plus rapide), que vous pouvez utiliser pour travailler avec le référentiel local, intégré à chaque client svn . Il s'agit d'un serveur permettant d'accéder à n'importe quel référentiel et à toute quantité de référentiels , existant sur le système de fichiers local, à l'aide du fichier de protocole: ///. Il ne fournit aucune méthode d'autorisation ou d'authentification, n'accorde qu'un accès illimité complet au référentiel sous contrôle, mais, d'autre part, il permet d'utiliser et donne toutes les fonctionnalités du système VCS en soi.

Afin d'utiliser ce serveur, vous avez dans n'importe quel répertoire vide dans n'importe quel emplacement appelez la commande CLI svnadmin avec la sous-commande et les paramètres correspondants (je ne me souviens pas, y a-t-il des programmes administratifs dans le bundle CLI-client ou non et ne peut pas vérifiez-le - je n'ai pas installé CLI svn-client, seulement TortoiseSVN, qui ont ces programmes dans le programme d'installation dans la version 1.7) - J'espère que vous pourrez le trouver.

svnadmin helpmontrez-nous toutes les sous-commandes disponibles, nous sommes maintenant intéressés par la sous-commande create.

svnadmin help create fournir tous les détails nécessaires pour nous

create: usage: svnadmin create REPOS_PATH

Create a new, empty repository at REPOS_PATH.

Valid options:
...

Au point de départ du premier dépôt, nous pouvons ignorer toutes les options de réglage fin et ne nous souvenir que de la forme principale svnadmin create REPOS_PATH, REPOS_PATH est le chemin absolu ou relatif vers le répertoire vide, prévu pour le dépôt. Étant donné que la plupart du temps, les utilisateurs Windows ordinaires pour les applications multiplates-formes peuvent confondre les personnes, quelle notation (barre oblique ou barre oblique inverse) utiliser dans le chemin (metoo), le moyen le plus sûr est l' cdemplacement, d'où notre répertoire est visible sans long chemin - parent du futur repo-directory ou du répertoire lui-même. Pour prévu pour repo z:\Main avant svnadmin create

Z:
cd \Main

et, enfin,

svnadmin create .

En conséquence, nous obtenons un référentiel vide créé dans le répertoire, qui apparaît dans l'Explorateur Windows avec une icône spéciale comme indicateur de contenu

RepoFolder

Maintenant, chaque fois que ce référentiel est nécessaire, nous utilisons les commandes SVN habituelles, la partie URL ou les paramètres semblentfile:///Z:/Main

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

(J'ai ajouté un arbre de référentiel standard dans le référentiel).

Décortiquons cette étrange URL:

  • file:///, comme pour toute URL, signifie protocole d'accès, dans notre cas le protocole est spécial, et a trois, pas deux barres obliques
  • Z:/Main est le chemin complet du repo avec le lecteur et le chemin à l'intérieur du lecteur, toutes les barres obliques inverses de Windows sont remplacées par des barres obliques "classiques"

De tout autre point, ce référentiel n'a aucune différence avec "Big Brothers" avec des serveurs Subversion spéciaux

RepoBrower pour le fichier: /// repo

Blaireau paresseux
la source
1
@Lazy Badger L'OP a clairement demandé comment configurer un serveur svn. Vous lui avez dit d'éviter d'utiliser n'importe quel serveur. Cela évite de répondre à la question, comme indiqué.
alternative
5
@mathepic - en fait, l'OP demande comment configurer un référentiel SVN et non un serveur - énorme différence.
Murph
5

Essayons une réponse qui recommande des solutions génériques plutôt que spécifiques.

Tout d'abord oui, vous pouvez utiliser Subversion sur un ordinateur autonome - vous pouvez installer le serveur localement ou vous pouvez travailler avec le fichier: //


Mais à moins qu'il n'y ait une très bonne raison pour laquelle vous devez utiliser la subversion, je dirais que ce n'est pas la meilleure solution au problème du contrôle de version local - notamment parce qu'il échoue à l'une des choses que je considère comme essentielles, à savoir vous assurer que vous le code source se trouve à au moins deux endroits (oui, même pour des choses personnelles). Je suggère donc d'utiliser un système de contrôle de version distribué (DVCS).

L'un des avantages de DVCS est que, une fois les outils installés, les référentiels sont autonomes dans un dossier et vous pouvez synchroniser le contenu entre différents dossiers contenant le "même" dépôt tant que vous avez un accès au niveau fichier. Vous avez également la possibilité de parler aux versions "serveur" de ces dépôts (qui sont soit hébergés en privé, soit disponibles en tant que service). Cela rend la vie beaucoup plus facile de tout exécuter localement.

Le DVCS présente également d'autres avantages.

Comme je l'ai déjà noté, je ne pense pas que vous ayez vraiment une solution VCS appropriée tant que votre code n'est pas sur au moins deux machines (en particulier deux disques durs distincts et idéalement dans plus d'un emplacement - bien que le clonage et la poussée pour dire une clé USB ou Le stockage "cloud" (skydrive, dropbox, et al) est une autre manière qui devrait également fonctionner).

En ce qui concerne DVCS - je regarderais Mercurial (Hg) et Git et également Veracity . J'utilise Mercurial parce que c'est encore plus agréable sur Windows ...

Si vous êtes des termes de services hébergés, je suis d'accord pour dire qu'il y a énormément à féliciter github - mais il y a aussi beaucoup de bonnes choses à propos de bitbucket et Fogbugz / Kiln ... et la même chose est probablement vraie pour beaucoup d'autres services que je n'ai pas listé (par exemple http://beanstalkapp.com/ qui m'a été mentionné en passant sur twitter plus tôt dans la journée)

Murph
la source
2

Subversion ne nécessite pas de serveur. Il utilise un référentiel centralisé, mais ce référentiel est accessible via la méthode d'accès «fichier», ce qui signifie que vous avez simplement besoin d'accéder au système de fichiers sur lequel le référentiel est stocké. La façon la plus simple de configurer cela serait de créer un dossier quelque part sur votre disque dur, de pointer TortoiseSVN (ou un outil similaire) et de «créer un référentiel ici». De là, vous pouvez faire tout ce dont vous avez besoin pour obtenir votre code dans le référentiel.

Cependant, à long terme, il est probablement préférable d'utiliser un SCM distribué, les meilleurs candidats étant git (plus puissant, courbe d'apprentissage abrupte, fonctionne mieux sur * nix) et mercurial (légèrement moins puissant, facile à apprendre, fonctionne également bien sur windows et * nix). Avec ceux-ci, votre copie de travail contient l'intégralité du référentiel et vous pouvez créer autant de clones (distants ou locaux) que vous le souhaitez. Vous pouvez démarrer localement et si vous décidez d'héberger le référentiel en externe, vous clonez simplement votre référentiel local existant vers l'emplacement externe et vous pouvez synchroniser à tout moment dans les deux sens. Mieux encore, car chacun de vos clones contient l'intégralité de l'historique du projet, le SCM fait également office de système de sauvegarde. Avec subversion, si votre serveur meurt et que vous ne l'avez pas sauvegardé, votre historique est parti - avec git,

http://hginit.com/ propose un excellent didacticiel pour démarrer avec mercurial.

tdammers
la source
1

Il existe de nombreuses sociétés d'hébergement SVN qui offrent un compte gratuit pour un ou deux développeurs et n'exigent pas que votre code soit public. Consultez le tableau lié pour des frais de 0 $, OSS requis = NON. Je compte actuellement neuf fournisseurs qui répondent à ces critères.

Bien que vous puissiez certainement héberger votre propre référentiel très facilement, l'utilisation d'un fournisseur présente certains avantages:

  • Vous pouvez accéder à votre code de n'importe où sans configuration supplémentaire.

  • Garder votre code hors site vous protège contre les pannes de disque dur, les incendies, etc.

  • Frais administratifs réduits.

Caleb
la source
Je vois un concept raisonnable du côté OP - il veut SVN et le veut localement (dernier mot - le plus important). Cas d'utilisation décontracté. Vous avez répondu sur différents cas d'utilisation , qui peuvent être considérés comme "Pas une réponse" - relisez votre texte dès les premiers mots, s'il vous plaît! Je n'ai pas signalé vos réponses et celles des autres comme "pas une réponse", alors que formellement, ce ne sont pas des réponses . HTH
Lazy Badger
Relire LAST SENTENCE of OP: "si je peux configurer un serveur local sur ma machine Windows XP auquel seul j'accède même si je n'ai pas de connexion Internet?" - c'est une question , en clair en anglais. Cette question nécessite une réponse. Votre "réponse" est-elle en corrélation avec la question?! Soyez honnête au moins envers lui - même , en reconnaissant les erreurs
Lazy Badger
Je ne lis pas entre les lignes (et je l'ai montré plus d'une fois ), je lis exactement ce qui a été écrit et je réponds à la question posée, sans penser à l'auteur, qu'il voulait dire mais pas dire . Contrairement à la plupart des réponses dans ce sujet, il n'y a pas de réponses en corrélation avec la question
Lazy Badger