J'ai commencé à utiliser Subversion avec TortoiseSVN. Si j'ouvre le journal et que je clique avec le bouton droit sur une ancienne révision, je vois deux options qui semblent revenir à une version plus ancienne: "Mettre à jour l'élément en révision" et "Revenir à cette révision".
Je comprends que la mise à jour vers une révision plus ancienne est utilisée lorsque vous souhaitez uniquement revenir sur une ancienne version sans vraiment modifier le référentiel. Revert, c'est quand vous avez vraiment foiré et que vous voulez que la dernière révision du référentiel soit la même qu'une ancienne version.
Donc, disons que la révision HEAD est 100 et je reviens à 95. Cela va inverser la fusion de ma copie de travail à 95. Ensuite, je peux valider ce changement dans le référentiel qui créerait la révision 101 correct? En quoi est-ce différent si je devais revenir à la révision 95? Cela ne fait-il pas encore qu'inverser les changements des dernières révisions? Je ne sais pas comment l'état de ma copie de travail diffère après un retour ou une mise à jour vers une révision plus ancienne.
la source
update to
etrevert to/from
traiter les changements locaux (changements non validés)?Pour comprendre en quoi l'état de votre copie de travail est différent dans les deux scénarios, vous devez comprendre le concept de la révision BASE :
Votre copie de travail contient un instantané de chaque fichier (caché dans un dossier .svn) dans cette révision BASE, c'est- à- dire tel qu'il était lors de la dernière récupération du référentiel . Cela explique pourquoi les copies de travail prennent 2 fois plus d'espace et comment il est possible que vous puissiez examiner et même annuler les modifications locales sans connexion réseau.
Mettre à jour l'élément en révision modifie cette révision de base, rendant BASE obsolète. Lorsque vous essayez de valider des modifications locales, SVN remarquera que votre BASE ne correspond pas au référentiel HEAD. Le commit sera refusé jusqu'à ce que vous fassiez une mise à jour (et éventuellement une fusion) pour résoudre ce problème.
Le retour à la révision ne change pas la BASE. C'est presque la même chose que de modifier manuellement le fichier pour correspondre à une révision antérieure.
la source
update to
etrevert to/from
traiter les changements locaux (changements non validés)?Les fichiers de votre copie de travail peuvent sembler exactement la même après, mais ce sont toujours des actions très différentes - le référentiel est dans un état complètement différent, et vous aurez différentes options disponibles après le retour que la "mise à jour" vers une ancienne révision .
En bref, «mettre à jour vers» n'affecte que votre copie de travail, mais «fusion et validation inversée» affectera le référentiel.
Si vous "mettez à jour" une ancienne révision, alors le référentiel n'a pas changé: dans votre exemple, la révision HEAD est toujours 100. Vous n'avez rien à valider, puisque vous ne faites que jouer avec votre copie de travail. Si vous apportez des modifications à votre copie de travail et essayez de vous engager, vous serez informé que votre copie de travail est obsolète et que vous devrez mettre à jour avant de pouvoir vous engager. Si quelqu'un d'autre travaillant sur le même référentiel effectue une "mise à jour", ou si vous récupérez une deuxième copie de travail, ce sera r100.
Cependant, si vous effectuez une «fusion inverse» vers une ancienne révision, votre copie de travail est toujours basée sur HEAD (en supposant que vous êtes à jour) - mais vous créez une nouvelle révision pour remplacer les modifications indésirables. Vous devez valider ces modifications, car vous modifiez le référentiel. Une fois terminé, toutes les mises à jour ou nouvelles copies de travail basées sur HEAD afficheront r101, avec le contenu que vous venez de valider.
la source
Mettez à jour votre copie de travail avec la révision sélectionnée. Utile si vous souhaitez que votre copie de travail reflète une époque dans le passé, ou s'il y a eu d'autres validations dans le référentiel et que vous souhaitez mettre à jour votre copie de travail une étape à la fois. Il est préférable de mettre à jour tout un répertoire dans votre copie de travail, pas seulement un fichier, sinon votre copie de travail pourrait être incohérente. Ceci est utilisé pour tester un objectif de rev spécifique, si votre test est terminé, vous pouvez utiliser cette commande pour tester un autre rev ou utiliser SVN Update pour obtenir HEAD
Si vous souhaitez annuler définitivement une modification antérieure, utilisez Revenir à cette révision plutôt .
- à partir de la documentation d'aide TSVN
Si vous mettez à jour votre copie de travail vers une version antérieure, cela n'affecte que votre propre copie de travail, une fois que vous avez apporté des modifications et que vous souhaitez valider, vous échouerez, TSVN vous avertira de mettre à jour votre WC à la dernière révision en premier si vous revenez à un rev, vous pouvez vous engager dans repository.everyone reviendra à la rev après avoir effectué une mise à jour.
la source
Le texte de la référence Tortoise:
Mettre à jour l'élément en révision Mettez jour votre copie de travail avec la révision sélectionnée. Utile si vous souhaitez que votre copie de travail reflète une époque dans le passé, ou s'il y a eu d'autres validations dans le référentiel et que vous souhaitez mettre à jour votre copie de travail une étape à la fois. Il est préférable de mettre à jour tout un répertoire dans votre copie de travail, pas seulement un fichier, sinon votre copie de travail pourrait être incohérente.
Si vous souhaitez annuler définitivement une modification antérieure, utilisez plutôt Revenir à cette révision.
Revenir à cette révision Revenir à une révision antérieure. Si vous avez effectué plusieurs modifications et que vous décidez ensuite que vous voulez vraiment revenir à la façon dont les choses étaient dans la révision N, c'est la commande dont vous avez besoin. Les modifications sont annulées dans votre copie de travail, de sorte que cette opération n'affecte pas le référentiel tant que vous ne les avez pas validées. Notez que cela annulera toutes les modifications apportées après la révision sélectionnée, en remplaçant le fichier / dossier par la version antérieure.
Si votre copie de travail est dans un état non modifié, après avoir effectué cette action, votre copie de travail apparaîtra comme modifiée. Si vous avez déjà des modifications locales, cette commande fusionnera les modifications d'annulation dans votre copie de travail.
Ce qui se passe en interne, c'est que Subversion effectue une fusion inversée de toutes les modifications apportées après la révision sélectionnée, annulant l'effet de ces validations précédentes.
Si, après avoir effectué cette action, vous décidez que vous souhaitez annuler l'annulation et ramener votre copie de travail à son état précédent non modifié, vous devez utiliser TortoiseSVN → Revenir à partir de l'Explorateur Windows, ce qui annulera les modifications locales apportées par cette action de fusion inversée.
Si vous voulez simplement voir à quoi ressemblait un fichier ou un dossier dans une révision antérieure, utilisez plutôt Mettre à jour en révision ou Enregistrer la révision sous ... à la place.
la source
@BaltoStar mise à jour de la syntaxe de révision:
http://svnbook.red-bean.com/en/1.6/svn.ref.svn.c.update.html
Où 30 est le numéro de révision. J'espère que cette aide!
la source