recréation du référentiel svn


8

après une défaillance majeure du serveur, le référentiel svn a été détruit et ma version de travail est la plus récente,

comment recréer le référentiel svn à partir de ma version de travail?

après avoir installé svn sur un nouveau serveur et essayé ma copie de travail

 svn switch NEW_SVN_PATH .

j'ai une erreur

 Repository UUID '1c604742-6b16-462b-86e4-cc8bce959242' doesn't match expected UUID '6df69aeb-a72c-450d-8102-24036a3855f7'

Réponses:


2

Après avoir initialisé le nouveau reporsitry svn

  1. sur le client, faites une exportation svn du répertoire de travail actuel vers un autre emplacement
  2. à partir de l'emplacement exporté, effectuez une importation svn vers la nouvelle URL svn
  3. faites maintenant un svn relocaliser vers le nouveau dépôt créé.

bien que cela puisse fonctionner, je pense qu'au lieu d'une relocalisation, un nouveau paiement pourrait être bon


2

J'ai dû faire face à cela. J'utilise subversion hébergée, et j'ai fait un vidage puis importé. Leur processus d'importation n'a pas transféré l'UUID de l'ancien dépôt vers le nouveau, j'ai donc eu la même erreur que l'OP. Toutes les réponses sur les sites Stack Exchange vous indiquent uniquement comment gérer cela en utilisant "svnadmin setuuid", mais ce n'était pas une option pour moi puisque j'utilise un service hébergé (et donc svnadmin n'aura pas accès au référentiel ). J'aurais pu entrer un ticket mais je ne voulais pas gérer l'attente, alors voici comment je l' ai corrigé, en mettant à jour manuellement l'UUID de ma copie de travail :

Avertissement: essayez ceci uniquement si vous êtes certain que la copie de travail et le référentiel vers lesquels vous redirigez sont absolument synchronisés. Je ne sais pas ce qui se passera s'ils ne le sont pas.

Le processus consiste essentiellement à remplacer l'ancien UUID par un nouvel UUID dans les fichiers nommés "entrées" dans les dossiers svn cachés (dossiers nommés .svn ou _svn) de votre copie de travail. Une fois cela fait, vous pouvez utiliser "relocaliser" de TortoiseSVN pour pointer le répertoire de travail vers la nouvelle URL du référentiel.

  1. Dans la fenêtre de la console, cd à la racine de votre dossier de travail.
  2. Exécutez la commande pour supprimer récursivement l'attribut "lecture seule" des fichiers "entrées": attrib -R entries /S
  3. Utilisez la fonction "remplacer dans les fichiers" d'un éditeur de texte pour remplacer l'ancien UUID par le nouveau UUID. J'ai utilisé Visual Studio avec les paramètres suivants: Regardez dans: PATH_TO_WORKING_FOLDER_ROOT / Inclure les sous-dossiers: vérifié / Regardez ces types de fichiers: entrées
  4. Annuler l'étape 2: attrib +R entries /S
  5. "Déplacer" la copie de travail vers une nouvelle URL. J'ai utilisé TortoiseSVN: clic droit sur le dossier de travail, TortoiseSVN-> Relocaliser.

Tout ce que fait l'étape 5 est de remplacer les URL dans les fichiers "entrées", je pense, donc vous pourrez peut-être le faire manuellement si vous le souhaitez. Également possible avec l'outil de ligne de commande "svn", mais je ne connais pas la commande du haut de ma tête.


C'est intense. Est-ce vraiment nécessaire? J'essaie juste de le comprendre car mon fournisseur a apparemment déplacé nos référentiels et j'ai la même erreur.
jusqu'au

0

Vous pouvez définir l'UUID sur un référentiel vide. Importez ensuite les fichiers dont vous disposez. Vous perdrez votre historique (il n'est pas conservé dans la copie de travail). Mais, en définissant l'UUID pour correspondre à votre ancien référentiel, vous évitez le message d'erreur sur le commutateur svn.

$ svnlook uuid /var/svn/repos
cf1b8d31-acb6-02dc-bc7c-16e92ce6dbec
$ svnadmin setuuid /var/svn/repos   # generate a new UUID
$ svnlook uuid /var/svn/repos
4c2c49fe-acc1-23dc-acbc-2b28ff0c9e6c
$ svnadmin setuuid /var/svn/repos 1c604742-6b16-462b-86e4-cc8bce959242  # restore the old UUID
$ svnlook uuid /var/svn/repos 1c604742-6b16-462b-86e4-cc8bce959242

ma version serveur de svnadmin n'avait pas de sous-commande setuuid, devinez que c'est l'une des commandes les plus récentes. puis j'ai trouvé un fichier db / uuid dans le référentiel, mais après avoir modifié le nombre qu'il contient, svn s'est toujours plaint qu'il ne s'agissait pas du même référentiel
Pavel K.

0

J'ai eu le même problème mais comme nous utilisons une option hébergée, je ne pouvais pas non svnadminplus.

C'était un externe que j'ai utilisé dans un autre projet, et je l'ai fait pour le réparer:

  1. Sauvegardez toutes mes modifications locales.
  2. rm -rf le répertoire (l'externe est archivé)
  3. supprimer svn:external(et valider cela)
  4. svn up
  5. ajouter à svn:externalnouveau
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.