71 votes

Fusion inverse SVN?

Mon dépôt SVN a été parfait à la révision 497. J'ai effectué plusieurs bad s'engage, de sorte que maintenant il est à la TÊTE de révision. Je vois que pour la restauration, vous devez utiliser une commande comme ceci:

svn merge -r HEAD:497 .

alors que dans le répertoire de travail (et le répertoire de travail est à la TÊTE de révision). Mais est-ce le bon de commande? Ou dois-je utiliser de la TÊTE:498? ou 496? J'ai déjà exécuté la commande et de la révision en cours ne semble pas être le même que 497, parce que quand j'update-r 497 (ou quand j'ai une 497 copie de travail et j'ai la mise a jour de r de la TÊTE), beaucoup de mises à jour de fichiers se produire.

Puis-je avoir une sorte de fencepost problème, où la TÊTE:497 en fait revient à 496, ou quelque chose? Ou est-ce que quand je l'ai mise à jour, SVN remonte à travers chaque révision, malgré le fait que la TÊTE et 497 sont identiques?

Edit:

Juste pour préciser, comme je l'ai dit plus tôt, quand je l'ai mise à jour entre 497 et mon fusionné TÊTE, je vois beaucoup de modifications du fichier de prendre place. J'ai pensé que si 497 et la TÊTE sont identiques, il permettrait de détecter cela, et aucun fichier n'modifications pourraient se produire; il serait tout simplement dire "mis à Jour à la révision 497." Donc ma commande de mal, ou est-ce la pensée de mal? (et si oui, pourquoi?)

76voto

Dave Paroulek Points 6033

Si votre référant était en parfait état à la révision 497, je pense que vous avez raison, vous devez effectuer les opérations suivantes:

 svn merge -r HEAD:497 .
 

Cette commande de fusion ne modifiera que les fichiers de votre copie de travail. N'oubliez donc pas de valider également les modifications pour mettre à jour HEAD dans le référentiel.

Après avoir fusionné, suivi du commit, essayez de comparer la révision 497 à HEAD et elles devraient être identiques.

22voto

Sander Rijken Points 15425

Si vous voulez annuler r123, vous devez svn merge -r 123:122 .

Cela signifie que vous devez courir

 svn merge -r HEAD:497 .
 

Pour vérifier l'exécution:

 svn diff -r 497
 

4voto

sakabako Points 751

4voto

yellavon Points 535

Pour ceux qui utilisent TortiseSVN, vous pouvez simplement afficher la boîte de dialogue "Afficher le journal" pour annuler les validations à partir de là:

http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-howto-rollback.html

1voto

Ether Points 34103

Pour annuler une modification non désirée (vous avez peut-être validé d'autres fichiers contenant des instructions de débogage, ainsi que quelque chose que vous vouliez réellement valider), indiquez que la mauvaise modification était -r10:

 svn update
svn merge -r10:9 <URL of your repository base> .
 

Maintenant , vous pouvez ramener simplement le fichier que vous ne vouliez à commettre:

 svn update
svn update -r10
svn commit <just that one file>   # this is the command you meant to type from the beginning
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X