J'ai trouvé divers exemples de comment annuler un commit SVN comme
svn merge -r [current_version]:[previous_version] [repository_url]
ou
svn merge -c -[R] .
Mais aucun d'eux ne semble fonctionner. J'ai essayé ces commandes et vérifié les fichiers qui ont été modifiés à la main.
Comment annuler un commit avec le numéro de révision 1944? Comment puis-je vérifier que la restauration a été effectuée (sans regarder dans le fichier réel les modifications ont été annulées)?
Réponses:
Les deux exemples doivent fonctionner, mais
svn merge -r UPREV:LOWREV .
annuler la plagesvn merge -c -REV .
annuler une seule révisiondans cette syntaxe - si le répertoire actuel est WC et (comme cela doit être fait après chaque fusion) vous validerez les résultats
Voulez-vous voir les journaux?
la source
svn: Merge source required
. Pas de dé.svn merge -c -42587,-42589 .
Si vous utilisez le client TortoiseSVN , cela se fait facilement via la boîte de dialogue Afficher le journal .
la source
svn merge -r 1944:1943 .
devrait annuler les modifications de r1944 dans votre copie de travail. Vous pouvez ensuite examiner les modifications dans votre copie de travail (avec diff), mais vous devez vous engager pour appliquer la restauration dans le référentiel.la source
svn merge -r 1944:1943 .
place, mais rien n'a changé.svn status
nesvn diff
donne rien.svn: Try 'svn help' for more info svn: Merge source required
svn merge -r 1945:1943 .
semblent avoir fonctionné. Je pense que je comprends: vous devez fusionner la version d'avant le «mauvais» commit dans votre dépôt de travail. C'est ok quand vous voulez faire un simple «retour» du commit précédent. Mais que faire si vous souhaitez annuler les modifications apportées à la version 1900?Tout d'abord, rétablissez la copie de travail à 1943.
Deuxièmement, vérifiez ce qui va être engagé.
Troisièmement, validez la version 1945.
Quatrièmement, regardez le nouveau journal.
la source
Il est impossible de "annuler" une révision, mais vous pouvez rétablir votre copie de travail en version 1943 et la valider en tant que version 1945. Les versions 1943 et 1945 seront identiques, annulant efficacement les modifications.
la source
svn dump
puissvn load
. Mais, bien sûr, cela ne devrait pas être utilisé dans des circonstances normales.$ git revert
. J'ai trouvé un peu difficile d'apprendre SVN après avoir utilisé Git pendant si longtemps.Ce qui suit fera un essai à sec, comme il est dit. HEAD étant la version actuelle, PREV est précédent, puis le chemin d'accès à votre fichier ou élément validé:
Si la marche à sec semble bonne, exécutez la commande sans --dry-run
Vérifiez le changement de révision et réengagez. Pour rechercher des numéros de version, essayez:
la source
la source
Alex, essayez ceci: svn merge [WorkingFolderPath] -r 1944: 1943
la source
Bien que les suggestions déjà données puissent fonctionner pour certaines personnes, cela ne fonctionne pas pour mon cas. Lors de la fusion, les utilisateurs
rev 1443
qui se mettent à jour versrev 1445
, synchronisent toujours tous les fichiers modifiés1444
même s'ils sont identiques à ceux1443
de la fusion. J'avais besoin que les utilisateurs finaux ne voient pas du tout la mise à jour.Si vous souhaitez masquer complètement la validation, il est possible de créer une nouvelle branche à la révision correcte, puis de permuter les branches. La seule chose est que vous devez supprimer et rajouter tous les verrous.
Cela a fonctionné pour moi, peut-être que cela sera utile à quelqu'un d'autre là-bas =)
la source
Cela m'a sauvé la vie.
J'avais le même problème, après être revenu, je ne voyais pas non plus l'ancien code. Après avoir exécuté la commande ci-dessus, j'ai obtenu un ancien code de version propre.
la source
J'ai essayé ce qui précède, (
svn merge
) et tu as raison, ça fait jack. toutefoissemble fonctionner, mais n'est pas permanent (mon svn montre simplement une ancienne révision). J'ai donc dû
Dans mon cas particulier, mon objectif est
interfaces/AngelInterface.php
. J'ai apporté des modifications au fichier, les ai validées, j'ai mis à jour l'ordinateur de construction, j'ai exécuté le compilateur phpdoc et j'ai constaté que mes modifications étaient une perte de temps.svn log interfaces/AngelInterface.php
montre ma modification en tant que r22060 et la validation précédente sur ce fichier était r22059. Je peux doncsvn update -r 22059 interfaces/AngelInterface.php
et je me retrouve avec du code tel qu'il était à nouveau en -r22059. Ensuite :-Alternativement, je pourrais faire la même chose sur un répertoire, en spécifiant
. -R
à la place deinterfaces/AngelInterface.php
dans tout ce qui précède.la source
Si vous souhaitez supprimer complètement les validations de l'historique, vous pouvez également effectuer un vidage du dépôt à une révision spécifique, puis importer ce vidage. Plus précisément:
La commande svnrdump remplit la même fonction que le vidage svnadmin mais fonctionne sur un dépôt distant.
Ensuite, importez simplement le fichier de vidage dans le référentiel de votre choix. Cela a été testé pour bien fonctionner sur Beanstalk.
la source