2009-05-11 5 views
4

J'essaye de faire une svn fusion d'un changement de tronc sur une branche (2001). Le changement est dans le coffre sur la révision 614.svn fusionner avec révision ne pas faire ce que j'attends

J'ai essayé ce qui suit et aucun d'eux faire ce que je veux:

svn merge 
svn merge -r 614:HEAD https://secreturl/trunk 

Mais cela semble prendre beaucoup de changements que je ne veux pas .

Lorsque j'ai exécuté: svn log -r 614 https://secreturl/trunk - J'ai vu le commentaire d'enregistrement pour le petit sous-ensemble de modifications que je voulais fusionner. Qu'est-ce que j'oublie ici?

+0

Êtes-vous fusionnez dans un dossier qui correspond à une branche du tronc? –

Répondre

10

svn merge -r 614:HEAD https://secreturl/trunk fusionneront tous changements entre la révision 614 et HEAD. De plus, il faudra 614 que la révision de base (probablement pas ce que vous voulez happenning :)

Pour fusionner les modifications d'une révision spécifique, vous pouvez utiliser l'une des deux méthodes:

$ svn merge -c 614 https://secreturl/trunk ou $ svn merge -r 613:614 https://secreturl/trunk.

Le premier moyen appliquer les changements de révision 614 ne, tandis que la seconde forme signifie prendre toutes les modifications nécessaires pour aller de R613 à R614 et les appliquer ici.

+2

Un point qui me manquait est que .... svn merge -c OU svn merge -r ... affectera votre COPIE DE TRAVAIL LOCALE. Après avoir exécuté la ligne de commande, votre copie de travail locale sera la révision (précédente). Ensuite, vous pouvez choisir (ou choisir de ne pas si vous n'aimez pas ce que vous voyez) COMMIT les modifications au référentiel. J'ai ajouté un commentaire à mon COMMIT qui ressemble à ceci: "Manual Change: Révision 614 a été retirée du dépôt, puis elle a été faite à la HEAD Revision." ... De cette façon, je sais exactement ce qui est arrivé. – granadaCoder

3

Je pense que vous voulez -r 613: HEAD. Si vous voulez juste changer 614, faites -r 613: 614.

+0

Le SVN requiert que la fusion soit spécifiée avec le numéro précédent. Vous verrez que lorsque SVN effectue cette fusion, les ombres de révision correctes seront extraites dans votre branche. – potyl

2

svn log -r 614 vous montrera la révision 614 spécifique. Si vous souhaitez fusionner simplement les résultats de R614, faites ceci:

svn fusion -r 613: 614 https://secreturl/trunk

qui est, fusionner les changements de 613 à 614.

+0

Merci - c'est ce que je cherchais. Merci au reste d'entre vous d'avoir répondu. –

+0

Hmm, cela ne semble toujours pas fonctionner. Voici ce que j'ai essayé: 08:55 [~/views/2001/platform/L3/src] $ svn merge -r 613: 614 https: // secreturl/trunk J'espère que les changements seront fusionnés dans mon point de vue de 2001, que j'ai cédé. Mais les résultats de la fusion sont vides. Je m'attendrais à quelques mises à jour étant donné ce que je vois est différent dans les deux branches. –

0

Bon site pour vous aider le long
Link 1

+0

J'ai lu ce lien Phil, et franchement ce n'était pas clair. Je sais, RTFM, mais après RTFMing je ne l'ai toujours pas compris. –

+0

Quelle version de Subversion utilisez-vous? –

0

Je pris les informations ci-dessus, et fait une fenêtre fichier .bat pour montrer comment cela peut être scénarisé. Mon ajout montre plus explicitement comment vous traitez la COPIE DE TRAVAIL LOCALE, puis vous revenez au référentiel.

Dans le fichier .bat ci-dessous, je mets un état svn.exe pour montrer ce qui se passera si vous commettez, puis un PAUSE, pour vous donner une dernière chance de sortir X et de ne pas effectuer la validation.

Voici le fichier .bat

Pour votre information, je me sers svn.exe 1.6.15.

set __SVNClient="C:\Program Files (x86)\CollabNet\Subversion Client\svn.exe" 

set __PreviousRevisionNumber=2594 

set __CheckoutFolder=".\MyCheckoutFolderRevision%__PreviousRevisionNumber%" 


RD %__CheckoutFolder% /Q /S 



%__SVNClient% checkout "https://www.myrepository.com/MyProject/trunk" %__CheckoutFolder% --username %USERNAME% 


CD %__CheckoutFolder% 


%__SVNClient% merge --revision HEAD:%__PreviousRevisionNumber% "." 



%__SVNClient% status "." 



PAUSE 



%__SVNClient% commit -m "Manual Change. Revision %__PreviousRevisionNumber% was pulled out of repository and then it was made the HEAD Revision." "." --username %USERNAME% 

CD .. 



set __CheckoutFolder= 
set __PreviousRevisionNumber= 
set __SVNClient= 

Ce ci-dessous site (et nom de la section) donne un peu plus d'explications:

http://durak.org/sean/pubs/software/version-control-with-subversion-1.6/svn.branchmerge.basicmerging.html
(Recherche de "Défaire Changes" en tant que tête de section)

Questions connexes