2010-10-20 6 views
1

Notre dépôt tortoiseSVN est malheureusement devenu corrompu aujourd'hui en raison d'un problème de disque.Le dépôt SVN de Tortoise est corrompu - pouvons-nous envoyer une copie de travail à une ancienne sauvegarde du dépôt?

Nous avons une bonne copie de travail basée hors révision 2897. Notre référentiel de sauvegarde la plus récente est de la révision 2848.

Nous aimerions récupérer autant que possible de l'histoire, plutôt que de lancer un nouveau référentiel. Donc, pouvons-nous le faire en validant la copie de travail directement dans le dépôt de sauvegarde plus ancien?

+0

Notez que le [livre SVN] (http://svnbook.red-bean.com/) décrit une technique dans laquelle un hook post-commit effectue des sauvegardes incrémentielles. Maintenant que vous êtes mordu une fois, vous pourriez vouloir l'implémenter. (Bien sûr, nous savons tous que, si vous faites cela et que cela fonctionne, cela ne se reproduira plus jamais, mais si vous ne le faites pas ou s'il y a un problème avec la façon dont vous le faites, le prochain disque va certainement ceci encore. ':)') Oh, et, BTW, je suis avec [thedev] (http://stackoverflow.com/questions/3981697/3981740#3981740) sur ce ('+ 1' de moi), bien que SVN peut se plaindre du numéro de révision local. – sbi

+0

Les sauvegardes incrémentielles ne sont pas une défense, sauf si elles sont enregistrées sur un autre disque. Pensez à utiliser svnsync pour refléter les changements apportés à une sauvegarde à chaud distante, ou quelque chose de plus sophistiqué comme la fonctionnalité de proxy write-thru. –

+0

@Mark: Qui a dit que ces sauvegardes incrémentielles devaient être effectuées sur le même disque? ':)' Mais, oui, c'est une remarque importante. Notez que vous pouvez déclencher svnsync à partir d'un hook post-commit. – sbi

Répondre

2

Si rien ne me manque, je ne vois aucun problème dans un tel commit. Seulement que vous n'aurez pas de détails d'historique pour les commits entre les 2 révisions.

+2

Il se peut que le SVN hic soit dû à la copie de travail ayant un numéro de révision supérieur à celui du référentiel. Si c'est le cas, vous pouvez supprimer les dossiers '.svn' de (une copie de) la copie de travail que vous avez, et copier cela sur une nouvelle commande. Ceci, cependant, perdra tous les changements autres que ceux faits au code (tels que les propriétés). – sbi

0

Vous avez perdu votre engagement historique, depuis la révision 2848 des copies de travail de Subversion ne garder que état local ....

En fonction de la façon dont vous restaurer votre dépôt, vous pouvez également rencontrer des problèmes dus à commettre une erreur de mise en correspondance référentiel UUID. La commande svn switch peut être utilisée pour indiquer un changement de référentiel. Une autre option consiste à utiliser tortoiseSVN pour créer un correctif des modifications depuis la révision 2848 et l'appliquer à une nouvelle extraction.

+0

Notez que le correctif n'aura pas d'autres modifications que le code (propriétés, etc.), assurez-vous que vous ne perdez pas quelque chose d'important de cette façon. – sbi

+0

Votre commentaire sur les changements de propriété est bien fait. Faisons face à face impossible de construire entièrement et fidèlement un référentiel à partir d'une caisse. Un des arguments de vente des systèmes DVCS comme Git est qu'ils gardent ** tout ** l'histoire localement. –

1

This happened to me as well, j'ai dû vérifier une nouvelle copie, comme svn a eu un vrai hickup quand ma version locale était plus récente que le serveur. Lorsque vous avez extrait une nouvelle copie, copiez les fichiers à partir de ce que vous avez localement sur votre nouvelle copie (assurez-vous de ne pas copier les dossiers .svn), et validez. Vous perdrez l'historique entre 2848 et 2897

Questions connexes