2008-09-18 6 views
11

J'ai 4 versions du fichier A.txt dans mon dépôt subversion, disons: A.txt.r1, A.txt.r2, A.txt.r3 et A.txt.r4. Ma copie de travail du fichier est r4 et je veux revenir à r2. Je ne veux pas utiliser "svn update -r 2 A.txt" car cela supprimera toutes les révisions après r2, à savoir r3 et r4.Comment revenir à une version précédente d'un fichier sans supprimer ses révisions ultérieures?

Alors est-il possible que je mette à jour ma copie de travail vers r2 tout en ayant la possibilité de passer à r3 et r4 plus tard? Autrement dit, je veux toujours être en mesure de voir les 4 révisions en utilisant "svn log A.txt" après avoir fait la mise à jour.

Répondre

3

Je n'ai pas beaucoup d'expérience avec Subversion alors excusez-moi si cette méthode ne fonctionne pas dans cet environnement.

Dans cette situation, je procédez comme suit:

  1. Vérifiez le fichier en question prêt pour l'édition comme r4
  2. écrasera votre copie locale du fichier avec la révision dont vous avez besoin, dans ce cas r2
  3. Arrivée/commit cette " nouvelle " révision du fichier comme r5 avec un commentaire approprié

de cette façon, quand vous passez par y l'histoire de notre fichier, vous verrez quelque chose comme:

  • r1
  • r 2
  • r3
  • r4
  • r5 (commentaire: "revient au contenu r2")
2

La mise à jour vers un ancien rev ne supprimera pas vos revs les plus récents. Donc vous pouvez faire svn up -r2 file, puis svn up -r4 file.

également, vous ne seriez pas en mesure de valider le fichier r2 de cette façon, car vous auriez à mettre à jour avant de valider, et vous finiriez avec r4 à nouveau.

2

"Je ne veux pas utiliser" svn update -r 2 A.txt "car cela supprimera toutes les révisions après r2, à savoir r3 et r4."

Euh ... ce ne sera pas, en fait. Essayez-le: effectuez une mise à jour svn régulière après la -r 2 et vous verrez la copie de travail mise à jour vers r4.

+0

Oui, vous avez raison! – Martin08

1

La mise à jour ne supprimera aucune révision sur le serveur. Les seules modifications qu'il apporte sont à votre copie de travail locale:

SVN Update Command

« apporte des changements du référentiel dans votre copie de travail »

« synchronise la copie de travail à la révision donnée par la --revision switch "

10

La commande svn up -r 4 met à jour uniquement votre local copie à la révision 4.

Le serveur a toujours toutes les versions 1 à travers.

Qu'est-ce que vous voulez faire, est de créer une nouvelle révision, numéro de révision 5, qui est identique au numéro de révision 2.

cd /repo 
svn up -r 2 
cp /repo/file /tmp/file_2 
svn up -r 4 
cp /tmp/file_2 /repo/file 
svn commit -m "Making 5 from 2" 

Si vous changez d'avis et souhaitez 4 en arrière, vous pouvez Pour ce faire, créez la révision 6 à partir de la révision 4.

cd /repo 
svn up -r 4 
cp /repo/file /tmp/file_4 
svn up -r 5 
cp /tmp/file_4 /repo/file 
svn commit -m "Making 6 from 4" 

Happy hacking.

(il y a bien sûr une façon de faire ci-dessus en seulement deux commandes je crois, mais sa fait un moment que je l'ai fait et il peut être un peu déroutant)

26

Pour une nouvelle révision de A txt qui est égale à la révision 2:

svn up -r HEAD 
svn merge -r HEAD:2 A.txt 
svn commit 

voir aussi la description Undoing changes.

3
svn update -r 2 A.txt 

Cette commande ne supprimer toutes les versions dans le référentiel. Il mettra votre copie de travail de A.txt être révision 2. Vous pouvez le voir en faisant

> svn status -u A.txt 
    *  2 A.txt 

La sortie de cette commande show que vous visualisez la version 2, et qu'il ya des mises à jour (qui est le *).

Après avoir fait cette mise à jour, vous pourrez toujours être en mesure de le faire « svn log » et de voir toutes les révisions.

Exécution de "svn update A.txt "vous reviendra à la dernière version (dans votre cas, r4)

Questions connexes