Importer plusieurs fois dans le même répertoire de référentiel Subversion?

StackOverflow https://stackoverflow.com/questions/476233

  •  20-08-2019
  •  | 
  •  

Question

Pour plusieurs raisons, la source canonique de certains fichiers que je possède ne peut pas être une copie de travail du référentiel (le serveur Subversion se trouve derrière un pare-feu inaccessible et les données n'existent pas de manière native dans le système de fichiers de ma structure préférée). J'ai donc écrit un outil qui télécharge les données, génère une structure de répertoires, puis utilise SharpSvn pour importer le résultat dans le référentiel. Cela fonctionne & # 8230; la première fois. La deuxième fois, bien sûr, un répertoire de ce nom existe déjà dans le référentiel et je ne peux plus importer à nouveau.

Au lieu de cela, je pourrais:

  1. Supprimer le répertoire, puis importer. Je n’ai pas testé cela, mais en plus de paraître stupide, il supprime probablement aussi l’historique des révisions des fichiers respectifs, les nouveaux étant entièrement différents.
  2. Vérifiez si le répertoire existe, extrayez-le, supprimez à distance les fichiers qui n'existent plus dans la source canonique, puis remplacez le reste et validez. Cela fonctionnerait probablement, mais semblerait sujet aux erreurs et inutilement difficile.

Est-ce que je suppose que la suppression de fichiers en marquera de nouveaux de la même manière que les fichiers différents ? Y a-t-il un moyen plus facile que la deuxième approche?

Était-ce utile?

La solution

Pour 1), l’historique des révisions ne sera pas supprimé, mais les nouveaux fichiers seront traités comme n’ayant aucun rapport avec les anciens. Vous pouvez toujours récupérer les anciens fichiers.

Pour 2), ce serait la méthode recommandée. Mais après avoir "svn supprimé" les fichiers existants et ajouté les nouveaux, vous devez également "svn ajouter" ces nouveaux fichiers avant de les valider.

Mais il semble que vous devriez envisager d'utiliser le script svn-load-dirs.pl. Vous en saurez plus à ce sujet dans le livre Subversion, au chapitre " branches de fournisseur ".

Autres conseils

Subversion a une connexion lâche avec les fichiers. Pour les fichiers contenus dans un dossier, vous pouvez facilement obtenir / mettre à jour, apporter des modifications importantes (notamment supprimer, remplacer ou ajouter des fichiers), puis valider les différences. Ce comportement au niveau fichier correspond à une utilisation typique de Subversion.

Les répertoires sont légèrement différents. Subversion stocke les informations du référentiel au niveau du dossier. Donc, si vous créez un nouveau dossier, il n'aura pas automatiquement de connexion à Subversion. (En utilisant quelque chose comme TortoiseSvn, il s’occupe beaucoup de cela pour vous.)

Si vous envisagez d'ajouter ou de supprimer des répertoires au cours du processus de génération, vous rencontrerez des problèmes légèrement différents de ceux rencontrés avec les fichiers eux-mêmes. Cependant, vous pouvez toujours atteindre votre objectif via la ligne de commande, SharpSvn, TortoiseSvn ou d’autres outils similaires.

Etant donné que vous ne pouvez pas écraser les répertoires ou détruire le répertoire .svn et perdre toutes les informations du référentiel, vous devez copier les fichiers mais créer uniquement de nouveaux répertoires. Voici comment je procéderais, à partir de la copie de travail de subversion que vous souhaitez mettre à jour:

(cd <newdirectory> ; tar -cf - * ) | tar -xf -

Certes, vous avez besoin d’un système Unix-y. Cela devrait fonctionner avec Cygwin , à moins que Windows ne fasse quelque chose de particulièrement bizarre en écrasant les dossiers au niveau du système.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top