2010-06-27 5 views
4

Je suis relativement nouveau à Subversion, venant de Source Safe, et ça me rend fou. En utilisant l'interface Tortoise, Commit a continué à me montrer les fichiers .java dans mon répertoire bin qui, selon lui, étaient "manquants" - ok, c'est une question distincte. Fondamentalement, quand j'ai essayé plusieurs choses pour se débarrasser du faux "bin" message, Tortoise a supprimé à la place tout mon répertoire source. J'ai essayé de rajouter des choses, mais quand j'ai ajouté, il est arrivé comme neuf, sans histoire. Comment est-ce que je ramène Subversion à une révision particulière? Comme si je ne m'étais jamais passé? Je sais comment faire cela dans VSS, mais chaque fois que j'essaie dans TortoiseSVN, cela modifie simplement ma copie de travail. Je ne veux pas vérifier dans ma copie de travail, car cela me ferait perdre tout mon historique. Subversion peut-il oublier?Comment rétablir le référentiel Subversion, et non ma copie de travail, vers une révision spécifique?

J'ai déjà essayé d'utiliser stackoverflow, mais la chose la plus proche que j'ai trouvée était l'exportation et la réimportation de l'ensemble du dépôt, et je ne pense pas que je sois encore là. Subversion doit être capable de faire la chose la plus simple!

Répondre

4

Puisque vous a demandé spécifiquement à propos de TortoiseSVN vous pouvez effectuer les opérations suivantes:

  • clic droit dans votre répertoire de travail
  • TortoiseSVN
  • Mise à jour à la révision
  • Cliquez sur Log
  • Choisissez la révision que vous voulez (ceci met le numéro de révision dans la case Révision - si vous connaissez déjà le numéro de révision, vous pouvez simplement le saisir immédiatement).
  • Cliquez sur OK

Ensuite, il suffit livrez vos modifications au référentiel avec un message approprié.

+0

Merci, je n'ai pas accès à la boîte de dépôt maintenant. – orbfish

+0

Lorsque j'essaie de valider l'ancienne révision dans le coffre, un message d'erreur me dit que je dois d'abord le mettre à jour - ce qui revient bien sûr à la révision HEAD ... – Christian

+1

Je devais entrer dans le journal, à droite ... cliquez sur la révision que je voulais, "Revenir à cette révision", puis re-valider. "Mise à jour à la révision" n'a pas fonctionné pour moi ... – Christian

2

Vous ne retirez pas le SVN; vous reprenez votre copie de travail, puis la validez.

EDIT: en fonction de la commande (IE, svn cp au lieu de cp), subversion se souviendra de l'ascendance (historique) du fichier.

Vous pouvez soit le fusionner inversement, soit le copier. La copie est probablement le meilleur choix pour cela.

Si je devais le faire, je le ferais:

svn update 
svn rm directory 
svn ci -m "temporarily removed the content" 
svn cp -r [revision] directory ./directory 
svn ci -m "copied revision [revision] to current" 

Cependant, peut-être de meilleure façon de le faire, serait:

svn update 
svn merge -r HEAD:[revision] directory directory 
svn ci -m "reverted back to [revision]" 

Pour quelques-uns des endroits où je mettre 'répertoire', vous devrez peut-être utiliser l'URL de l'emplacement dans le référentiel, par exemple, si vous venez de supprimer le répertoire racine (et donc il n'y a plus rien à référencer de). Soit cela ou avec la fusion, le premier est l'URL du repo, et le second est le répertoire local ... bien que cela fonctionnera probablement en utilisant simplement le répertoire local deux fois.

Rappelez-vous juste; si cela ne fonctionnait pas correctement, ne pas le vérifier dans: D (c'est un avantage avec l'utilisation de la seconde méthode ... aussi, il nécessite moins de transfert de données)

6

Subversion n'oubliera pas, mais vous peut faire quelque chose comme ce qui suit:

Disons que votre version actuelle est de 100, et que vous voulez revenir à la révision 70. vous allez créer une révision 101, ce qui est exactement le même que 70.

1) Découvrez une belle copie de travail propre.

2) Fusionner (vers l'arrière) les modifications.

svn merge -r100:70 http://repo.com/my/project/trunk 

3) Vérifier la santé mentale. Votre copie de travail est-elle exactement ce que vous vouliez?Si oui:

svn commit -m "rolled back to the good old days of r70 "

Questions connexes