2009-10-26 6 views
3

Dire que j'ai une structure de répertoires comme celui-ciComment ajouter un répertoire parent à SVN?

dir1 
    dir2 
    dir3 

dir2 est déjà sous contrôle de version, alors que dir1 n'est pas. Maintenant, je me rends compte que je voudrais avoir dir1 sous contrôle de version ainsi (et peut-être plus tard sur dir3 etc.) Comment puis-je faire cela et refléter les changements correctement dans le référentiel?

Si je déménage juste dir2 sur dir1, ajouter dir1 à SVN et déplacer dir2 nouveau dans dir1, cela détruira probablement l'histoire de version de dir2. Ce qui le rend encore plus compliqué est que dir2 contient de nombreux fichiers qui ne sont pas sous contrôle de version (ils sont ignorés), donc dir2 ne peut pas être (entièrement) recréé à partir du référentiel.

Répondre

0
  • créer dir1 en plus dir2
  • mouvement dir2 dans dir1

Vous pouvez le faire sur le serveur (en utilisant des URL) ou dans votre copie de travail (en utilisant les chemins du système de fichiers). Dans ce dernier cas, vous devrez vous engager par la suite.

+0

J'ai essayé sur le serveur (par exemple 'svn mkdir url/dir1; svn mv url/dir2 url/dir1') qui a réussi. Mais quand j'ai essayé 'svn up', j'ai' svn: Impossible d'ajouter le répertoire 'dir2': l'objet du même nom existe déjà'? – fuenfundachtzig

+0

Vous devrez faire un nouveau départ dans un nouvel endroit. – sbi

+0

Je voudrais éviter les caisses (voir question). Donc j'ai essayé de le faire localement, j'ai maintenant 'dir11' au même niveau que' dir2', mais 'svn mv dir2 dir11' donne' svn: Impossible de verrouiller 'dir11''. – fuenfundachtzig

2

Vous avez raison, réimporter dir2 ne sauvera pas l'historique de votre dir2 existant.

Cela devrait faire l'affaire (en supposant chemin est le dépôt url):

  1. svn mkdir chemin/dir1
  2. svn mv chemin/dir2 chemin /dir1
+0

Échec avec 'svn: aucun support pour les repos <--> déplace la copie de travail'. – fuenfundachtzig

+0

Vous avez essayé de mélanger les chemins de copie de travail et les URL de repo d'une manière qui ne fonctionnait pas. Essayez tous les chemins de travail ou toutes les URL. – sbi

+0

OK, alors il faut changer le deuxième élément ci-dessus, sinon c'est trompeur. – fuenfundachtzig

0

Il y a une autre possibilité, bien que ce ne soit pas forcément ce que vous cherchez: SVN externals.

  1. Arrivée dir1.

  2. Ajouter dir2 comme les propriétés SVN externe à dir1:

-

$ svn propget svn:externals dir1 
dir2 svn://repository/dir2 
0

essayer svn add --parents dir1/dir2

Questions connexes