2011-10-14 4 views
3

le problème semble simple, mais je ne comprends pas juste. Comment fusionner deux dossiers en un seul?svn: Comment fusionner deux dossiers en un?

Disons que j'ai cette structure Maven:

module1 
    - src/main/java 
     - com.app.func1 
      - file1 
     - com.app.func1.some2 
      - file3 
      - file4 

module2 
    - src/main/java 
     - com.app.func1 
      - file1 
      - file111 
     - com.app.func1.some2 
      - file333 
      - file6 

je voudrais fusionner l'ensemble src/main/java de module2 dans module1

Après la fusion, il devrait ressembler à ceci:

module1 
    - src/main/java 
     - com.app.func1 
      - file1 // it would be nice if the tool would let me visually merge this item 
      - file111 
     - com.app.func1.some2 
      - file3 
      - file333 
      - file4 
      - file6 

Les deux modules sont déjà sous contrôle de version et je ne veux pas perdre l'historique.

Ce serait bien si quelqu'un pouvait m'aider.

J'ai déjà essayé Eclipse subversion/subclipse et Tortoise SVN mais je ne le fais pas correctement.

La plupart du temps, je reçois un message d'erreur comme le dossier src existe déjà dans le module1. C'est vrai, mais en fait je ne me soucie pas des dossiers, ils devraient être intégrés comme sur les fenêtres. D'autres fois, lors de la fusion, tous les fichiers de module1 sont supprimés et remplacés par les fichiers de module2.

Cordialement

Répondre

0

Je pense que vous allez devoir faire un svn rename pour chaque fichier. Vous pouvez faire un script qui prend la sortie de svn list pour l'automatiser. Vous ne l'obtiendrez pas pour fusionner des fichiers portant le même nom: vous devrez les faire manuellement.

0

Il semble qu'il n'y ait pas de solution facile pour ce problème stupide. Pour contourner le problème, j'ai déplacé toutes mes sources avec Eclipse dans la perspective Java.

Mark com.app.func1 et tous les dossiers sous src/main/java (maven) et les déplacer avec la souris pour MODULE1 src/main/java ou utiliser Refactor -> Déplacer

Eclipse fait automatiquement bonne chose, il utilise svn move et pas de déplacement muet, donc l'histoire ne sera pas supprimée. Malheureusement, vous ne pouvez pas déplacer les dossiers non java car vous obtiendrez l'erreur mentionnée ci-dessus (le dossier existe déjà). Astuce: Les deux modules doivent déjà rester sous le contrôle de version et un plugin SVN doit être installé sinon vous perdrez toutes les entrées de l'historique.

module2 
- src/main/java 
    + com.app.func1 
    + com.app.func1.some2 
1

Le script, décrit sur http://jv-ration.com/2014/01/merge-svn-directories/ est assez similaire. Vous avez juste besoin d'ignorer l'étape # 3, qui supprime les fichiers du dossier cible (dans votre cas, module 1). Après l'exécution du script, vous pouvez utiliser n'importe quel outil SVN pour examiner les différences entre les fichiers modifiés.