Question

Je suis très nouveau pour Subversion, mais je l'ai utilisé d'autres systèmes de contrôle de révision comme ClearCase pendant des années.

Mon patron m'a demandé de corriger ce projet afin qu'il puisse être construit avec Maven au lieu de Ant. L'une des choses importantes que je devais faire pour se déplacer était src/com à src/main/java/com et déplacer test/com à src/test/java/com, que je n'utilisant la commande svn mv. Je supposais bêtement que depuis que je commande utilisé Subversion pour déplacer les répertoires, que Subversion alors savoir que les choses avaient été déplacées. Et quand je fusionné ma branche dans le tronc, il semblait travailler. Mais maintenant, quelqu'un d'autre vient de terminer le travail sur une branche qu'il bifurque avant mon travail. Donc, nous allons fusionner ses affaires dans le tronc, et essentiellement Subversion semble penser « ok, il a apporté des modifications à src/com/foo/bar/baz.java, mais ce répertoire n'existe pas de plus, il est donc hors de propos, alors jetez- » au lieu de ce que je pensais, ce qui était « ok, il a apporté des modifications à src/com/foo/bar/baz.java, mais src/com a été déplacé, donc je dois fusionner que dans src/main/java/com/foo/bar/baz.java » .

Y at-il un moyen de faire Subversion faire la gestion de révision, ou vais-je pour les deux prochains jours pour être fusionnant manuellement les changements de ce type?

Était-ce utile?

La solution

Pour répondre directement à votre question:

  

Y at-il un moyen de faire Subversion faire la gestion de révision, ou vais-je pour les deux prochains jours pour être fusionnant manuellement les changements de ce type?

Vous devriez être en mesure de rendre un peu plus facile sur vous-même.

Une chose que vous pouvez faire pour alléger la douleur (en supposant une mise en page comme suit)

/branch/foo/src/com
/branch/foo/test/com
/trunk/src/main/java/com
/trunk/src/test/java/com

Avant de déplaciez src / com src / main / java / com et test / com src / test / java / com vous auriez pu faire:

cd $TRUNK
svn merge -r N:M http://server/branch/foo .

Ce que vous pouvez faire est maintenant:

cd $TRUNK
svn merge -r N:M http://server/branch/foo/src/com src/main/java/com
svn merge -r N:M http://server/branch/foo/test/com src/test/java/com

Espérons que cela vous aide à vous faire gagner du temps.

Autres conseils

Cela ressemble à un problème unique. Je suggère que vous pourriez utiliser svn diff > /to/some/file.patch (ou diff normal) pour enregistrer ses modifications dans un fichier, puis appliquez sur votre coffre déplacé avec patch -p0 < /to/some/file.path.

Tout le monde a essayé ce logiciel? xMerge

Ce plugin est SmartSVN, mais il ressemble à l'affaire. Si quelqu'un l'utilise, je vous serais reconnaissant de me faire parvenir révision de celui-ci.

Je viens d'avoir le même problème et je l'ai résolu avec git . Je ne voulais pas les modules de fusion avec serveral svn merge -r N:M http://server/branch/foo/test/com src/test/java/com pour src/main, src/test et resources.

Alors je git svn clone file:///some/repo -T trunk -b branches -t tags. Comme cela, j'ai pu garder maître git en synchronisation avec tronc svn et fusionner avec mon branche git . Quand je fait, je fusionné branche git maître git et de là à tronc svn .

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