désolé d'utiliser un peu d'espace sur juste une réitération de la réponse précédemment donnée - mais c'est quelque chose avec lequel je finis toujours par avoir des problèmes.
Disons que j'ai mis à jour les fichiers locaux avec la dernière révision, qui est 854. Ensuite, je voudrais obtenir une révision plus ancienne - la version du fichier de quelques révisions plus tôt, disons la révision 851.
La copie fonctionnerait:
svn copy -r 851 svn+ssh://<repository URL>/l3toks.dtx ./l3toks.dtx
.. cependant, je ne peux pas être dérangé de chercher l'URL du dépôt :)
La mise à jour pourrait apparemment fonctionner:
svn up -r 851 ./l3toks.dtx
... cependant, il marque également la copie locale comme "fraîchement extraite", ou plutôt "identique à la révision en ligne" (c'est-à-dire que dans Tortoise / RabbitVCS vous obtenez une coche verte OK) - ce qui signifie que vous ne pouvez pas faire svn ci -m "rolled back to r 851"
: simplement parce que le local subversion
l'exécutable ne remarquera aucun changement local et ne sera pas dérangé de télécharger quoi que ce soit dans le référentiel en ligne.
Et, comme déjà répondu, la fusion inversée fonctionne - mais dans ce cas, il ne faut pas se fier à la syntaxe des raccourcis; mais déclarez spécifiquement:
svn merge -r HEAD:851 l3toks.dtx
--- Reverse-merging r854 through r852 into 'l3toks.dtx':
U l3toks.dtx
Je dois admettre - je ne comprendrais jamais que la phrase " Fusion inversée de r854 à r852 dans un fichier " signifie " Je viens de recevoir r851 de votre fichier, et j'ai écrasé tout ce que vous aviez précédemment localement - et il est marqué comme différent de la dernière révision en ligne, donc vous pouvez le vérifier en ligne en tant que nouvelle révision " rollback" ", mais je suppose (et j'espère :)) que c'est ce qu'il fait :)
Après cela, on peut utiliser svn diff
pour s'assurer rapidement que nous avons récupéré la bonne révision localement; et aussi, le fichier sera marqué d'un point d'exclamation rouge dans Tortoise / RabbitVCS (c'est-à-dire différent de la dernière version validée), et svn ci -m "rolled back to r 851"
pourra donc s'exécuter cette fois.
Notez également que si, finalement, vous changez d'avis après la fusion inversée ( c'est-à-dire que vous voulez quand même continuer à travailler sur la dernière révision HEAD, ici 854 - après que vous êtes revenu à 851 localement, mais que vous n'avez pas encore validé la restauration. ), vous ne devriez pas utiliser svn up
, car il dira simplement qu'il est déjà " A la révision 854 "; utiliser à la place svn revert --recursive .
ou similaire ...
À votre santé!
Réf: Comment annuler les modifications à l'aide de Subversion - Jacob Wright - Flex, AIR, PHP, etc.
EDIT: ... et apparemment, exactement le même effet que svn merge -r HEAD:851 l3toks.dtx
, peut être obtenu avec:
svn export -r 851 l3toks.dtx
A l3toks.dtx
Export complete.