2009-09-03 10 views
2

J'ai une branche que j'ai créée depuis le tronc il y a quelque temps. Depuis que j'ai créé la branche, je n'ai pas touché le coffre. Maintenant, je veux revenir de la branche au tronc. C'est un cas très simple, car il n'y a pas beaucoup de fusion à faire. Rien n'a changé dans le coffre. La succursale peut entièrement remplacer le coffre.SVN/Subclipse: Retour d'une branche au tronc

Comme je le vois, j'ai deux options:

  1. Supprimez le tronc (le renommer à autre chose, le supprimer plus tard) et rebaptiser la branche pour le tronc.
  2. Fusionner la branche vers le tronc (déplacez ma copie de travail vers le tronc et utilisez la commande Fusionner de la branche).

Je ne suis pas sûr quelle option est préférée. Il est important pour moi de maintenir le contexte de révision (ne pas casser le graphe de révision).

Des pensées?

+0

N'est-ce pas une dupe de http://stackoverflow.com/questions/587603/replacing-trunk-with-branch-in-subversion? – VonC

+0

Il y a des similitudes, mais ce n'est pas la même question. De plus, il n'y a pas de réponse acceptée ici. Ma situation est plus simple. – zvikico

Répondre

4

Vous devriez vraiment utiliser l'option de fusion. L'argument consistant à perdre des informations de révision étant donné que toutes les modifications seront à l'intérieur de 1 commit est négligeable, car les sous-conversions fusionnées conserveront cette information. Si vous avez toujours une installation antérieure à la version 1.5, vous pouvez noter la plage de révision et le chemin de la branche dans votre message de validation.

Comme vous ne l'avez pas changé quoi que ce soit dans le coffre, la fusion sera une évidence, comme vous le dites simplement:

svn merge branchname <Workingcopy-Path> 

(Bien sûr, votre copie de travail doit pointer vers le tronc)

Les réponses à votre commentaire

svn 1.4 n'a pas suivi de fusion, de sorte que vous ne devriez pas rollback

Pourquoi ne pas renommer la branche en tronc:

Ce n'est tout simplement pas la façon dont vous devriez travailler Dans votre configuration simple, cela fonctionnerait, mais votre tronc sera supprimé et tous les fichiers seront ajoutés à nouveau, mais vous ne peut pas facilement suivre les fichiers modifiés, comme dans votre action tous les fichiers ont été ajoutés.

Si vous fusionnez, seuls les fichiers modifiés dans la branche seront affichés comme modifiés.

De plus, tous les fichiers de travail de l'ancienne ligne de réseau seront invalidés (comme vous travaillez seul, cela peut ne pas être important), vous devez donc les vérifier de nouveau.

+0

Je viens de mettre à jour à SVN 1.6, mais je peux restaurer à 1.4. Quelle est la différence dans ce sens? Pouvez-vous me montrer l'option parallèle dans Subclipse? Pourquoi est-ce mieux que de renommer la branche? – zvikico

0

Dans votre cas, je préférerais les premières options L'inverse de toutes les modifications que vous avez faites dans la branche sont appliquées comme une seule révision au tronc. Vous perdez donc les informations de révision pour ces modifications. Si vous déplacez la branche vers l'emplacement de votre ancienne révision de répertoire, les informations de révision restent intactes.

+0

Les versions récentes de SVN peuvent afficher les informations de validation des branches fusionnées. Au moins, mon TortoiseSVN le permet, et je suppose que c'est une caractéristique de SVN, pas de Tortoise. – sbi

+0

Oui c'est vrai, mais pas le point: Toutes les modifications que vous avez faites dans une branche se terminent par un commit dans le tronc lors de la fusion. Donc, si vous demandez plus tard dans le tronc dans quelle révision particulière un changement de branche a été effectué, tout ce que vous obtenez est que cela faisait partie d'une opération de fusion. Ensuite, bien sûr, vous pouvez vérifier dans la branche où le changement a pris naissance dans quelle révision il a été fait, mais il est certainement plus d'effort. – sebasgo

0

Je pense que le moyen le plus simple (ne sait pas vraiment si c'est le meilleur) est d'utiliser "svn move" pour exécuter la première option.

Copier et déplacer svn devrait fonctionner comme des opérations de fichiers, également ces versions sont versionnées.

EDIT: Ma réponse était presque comme une des réponses sur les sujets précédents mentionnés par VonC vous devriez jeter un oeil à cette réponse

Questions connexes