web-dev-qa-db-fra.com

Fusion inverse SVN?

Mon référentiel SVN était parfait à la révision 497. J'ai effectué plusieurs mauvais commits, de sorte qu'il est maintenant à la révision HEAD. Je vois que pour revenir en arrière, vous devriez utiliser une commande comme celle-ci:

svn merge -r HEAD:497 .

dans le répertoire de travail (et le répertoire de travail se trouve dans la révision HEAD). Mais est-ce la bonne commande? Ou est-ce que j'utilise HEAD: 498? ou 496? J'ai déjà exécuté cette commande et la révision actuelle ne semble pas être identique à 497, car lorsque je mets à jour -r 497 (ou lorsque j'ai une copie de travail 497 et que je mets à jour -r HEAD), de nombreuses mises à jour de fichiers se produisent .

Ai-je un problème avec un poteau de clôture, où HEAD: 497 redevient 496, ou quelque chose du genre? Ou est-ce que lorsque je mets à jour, SVN revient à travers chaque révision, malgré le fait que le HEAD et le 497 sont identiques?

Modifier:

Juste pour clarifier les choses, comme je l’ai dit plus tôt lors de la mise à jour entre 497 et mon HEAD fusionné, de nombreux changements de fichiers ont lieu. Je pensais que si 497 et HEAD étaient identiques, il le détecterait et aucun changement de fichier ne se produirait; il dirait simplement "Mis à jour à la révision 497." Alors, est-ce que ma commande est mauvaise ou est-ce que penser est mauvais? (et si oui, pourquoi?)

69
Ricket

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. 

72
Upgradingdave

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
22
Sander Rijken

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

4
yellavon
4
sakabako

Pour revenir sur une modification non souhaité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 uniquement le fichier que vous avez souhaitez engager:

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

Si vous souhaitez un moyen rapide et fiable de revenir à une révision particulière, il vous suffit de consulter l'ancienne révision du référentiel.

Exécutez svn info pour vous rappeler l’URL de votre référentiel, puis créez un nouveau dossier et extrayez la révision souhaitée:

cd <your new folder>
svn checkout <URL> -r 497 .

Ensuite, vous pouvez comparer ce dossier à votre dossier existant et vous pouvez valider cette révision dans le référentiel à partir de là si vous en avez besoin.

0
Dan J
0
gauravtechie

Considérez HEAD: 150 revenir r1 = 100 et r2 = 90

  1. svn up
  2. svn merge -r 100: 99
  3. svn merge -r 90:89

Remarque: ces modifications auront le dossier ne sera pas annulé EXTERNALS!

0
piyush89