web-dev-qa-db-fra.com

svn: les engagements locaux

Subversion: Est-il possible de commettre des révisions locales sans les pousser et de les pousser à une date ultérieure - ou est le manque de cette fonctionnalité pourquoi elle s'appelle "centralisée"?

60
Adrian Panasiuk

Il n'est pas possible de faire des engagements locaux avec subversion.

En effet, en tant que système de contrôle de version centralisé, votre copie de travail locale ne dispose pas de toutes les informations fournies par le serveur des révisions passées, des entrées de journalisation, etc. qu'il aurait eu si c'était un système de contrôle de version distribué (DVCS).

Une copie de travail de Subversion contient une copie de tous les fichiers tels qu'ils ont été vérifiés afin que vous puissiez revenir à des fichiers modifiés sans contacter le serveur.

Si vous voulez vraiment faire des commits locaux, vous devriez jeter un coup d'œil à [~ # ~ # ~] SVK [~ # ~ ~] , qui est construit sur le haut de la subversion et fournit des DVC comme des fonctionnalités similaires.

54
arturh

Une grande partie de ce qui précède est devenue un peu obsolète et, étant donné que cette question se présente comme un succès dans une recherche sur Google de "Svn local commit", voici une mise à jour:

Envisagez d'utiliser le package "Git-Svn" (avec "Git-Gui" si vous ne connaissez pas Git) pour que les entreprises locales soient validées à la fois possible et facile, avec une intégration complète de SVN à distance. Une vue d'ensemble de la décence/du didacticiel/utilisation est ici . Je viens de commencer à utiliser ce processus avec des projets Sourceforge, donc je ne peux pas encore signaler aucun problème. Assurez-vous d'obtenir le dossier des auteurs!

Modifier: Lien mis à jour. Merci, hdl!

35
BobC

Comme d'autres l'ont dit, non.

Je voudrais fortement Recommander d'essayer d'utiliser quelque chose à distance janky avec SVN.

Je n'ai pas assez utilisé SVK pour recommander contre elle, cela semblait assez agréable. Cependant, je suis sceptique d'utiliser quoi que ce soit construit sur SVN pour un projet entier sans rien briser. J'utilise suffisamment de SVN pour savoir que les cycles de travail même réguliers peuvent le toast si vous n'êtes pas prudent.

Nous utilisons SVN au travail. J'utilise BZR et BZR-SVN pour faire toute mon interaction avec et cela fonctionne merveilleusement. Mon flux de travail est quelque chose comme:

$ bzr branch file:///var/svn/project ~/project

(hack, hack, hack)

$ bzr commit -m "commit log" (répéter)

quand je suis prêt

$ bzr Push

Oui, au lieu de mettre à jour vous avez $ bzr merge et commettez le changement (éventuellement étaler ce que vous travaillez) mais les engagements locaux sont un très bonne chose, et étagère est aussi (l'étagère est comme revenir avec un sauvegarder )

Je pense que Git gère cela aussi. J'ai entendu dire que ce n'est pas aussi complet que BZR-SVN, mais je ne peux pas corroborer cela.

Mais l'utilisation d'un DVC avec un référentiel SVN est un bon moyen d'y aller!

2
jskulski

Suite à la réponse de Bobc, pour Mercurial, vous utiliseriez hgsubversion.

2
Seth

C'est pourquoi il s'appelle centralisé. Vous pouvez essayer d'utiliser un repo à l'intérieur d'un repo. L'un est local et l'autre est éloigné. Vous commettez ensuite tout le référentiel interne à la télécommande.

2
Manuel Ferreria

Non! Le git peut cependant le faire et vous pouvez utiliser GIT-SVN pour rester synchronisé avec le référentiel d'origine.

1
Rhythmic Fistman

Pour obtenir le meilleur des deux mondes, SVK a été construit sur la subversion, mais maintenir l'état local afin que vous puissiez faire des engagements locaux ...

1
Stobor