web-dev-qa-db-fra.com

Subversion: Puis-je commander, modifier, puis en faire une branche?

J'ai effectué un paiement de ma malle à un DIR local et y ai fait beaucoup de changements locaux. Maintenant, je ne veux pas le remettre dans le coffre, mais je préfère créer une branche à partir de cette version locale. Est-ce possible?

Puis-je simplement copier le tronc dans une branche, puis cd DIR et svn switch à la succursale?

MISE À JOUR : Merci pour les réponses, cela a fonctionné! Pour résumer les étapes:

  • cd DIR
  • svn copy . new-branch-URL
  • svn switch new-branch-URL .

(notez les points)

80
Frank

Selon son aide en ligne de commande, svn copy peut copier d'un répertoire vers une URL de référentiel. Vous devriez donc pouvoir copier votre copie de travail à la succursale, par exemple:

svn copy working_directory url_to_branch
39
wierob

Le livre SVN ( http://svnbook.red-bean.com/en/1.6/svn-book.html#svn.branchmerge.using.create ) ne recommande pas de créer une branche à partir de la copie de travail locale.

Bien qu'il soit également possible de créer une branche en utilisant svn copy pour dupliquer un répertoire dans la copie de travail, cette technique n'est pas recommandée. Cela peut être assez lent, en fait! La copie d'un répertoire côté client est une opération linéaire, car elle doit en fait dupliquer tous les fichiers et sous-répertoires de ce répertoire de copie de travail sur le disque local.

À la place, créez d'abord la branche, puis utilisez le svn switch pour que vous puissiez valider vos modifications. Si votre copie de travail est considérablement obsolète avec le tronc, ajoutez "@REV" à l'URL source où "REV" est la révision de votre copie de travail signalée par svn info.

Cependant, la copie d'un répertoire sur le serveur est une opération à temps constant et c'est la façon dont la plupart des gens créent des branches.

$ svn copy http://svn.example.com/repos/calc/trunk \
           http://svn.example.com/repos/calc/branches/my-calc-branch \
      -m "Creating a private branch of /calc/trunk."
51
Lucas

Dans mon client SVN: TortoiseSVN il suffit de:

  • clic droit sur le répertoire supérieur que je souhaite créer
  • dans "To URL", sélectionnez le répertoire de branche dans votre référentiel
  • dans le cadre "Créer une copie dans le référentiel à partir de:" sélectionnez "Copie de travail"

terminé :)

C'est comme copier la version locale dans l'url du référentiel spécifié.

9
twk

Oui, vous pouvez le faire en ligne de commande SVN ainsi que tortoiseSVN.

Vous devez spécifier votre copie de travail SVN comme src et votre nouvelle branche comme destination du

svn copy <file/path/to/working/copy> <URL/TO/REPOSITORY/BRANCH>

commander.

Dans TortoiseSVN, pointez simplement sur votre copie de travail, choisissez "Branche/tag" dans le menu contextuel et choisissez "Copie de travail" dans la section "Créer une copie dans le référentiel à partir de:"

Notez que ce n'est pas une bonne idée (pour des raisons de traçabilité) de créer des balises de cette manière, mais pour les branches, c'est parfaitement bien.

1
Peter Parker