#1 Le 16/05/2008, à 11:42
- forex
[ Résolu ] Utilisation de subversion et de la fonction merge
Bonjour,
Je suis sous ubuntu, j'ai svn installé et je l'utilise principalement en ligne de commande; Par ailleurs j'ai aussi rapidsvn, mais je prefere me familiariser avec svn avant de passer à l'interface graphique.
Je travaille sur un projet ruby on rails avec un ami.
celui ci est sous win et jusqu' a maintenant nous échangeons par mail le dossier zippé;
Il est plus actif que moi sur le projet, donc il m'envoie un fichier zippé numéroté en me demandean de travailler sur un ou 2 sujets précis , ce que je fait assez rapidement et lui renvoie le ficher zippé modifié.
generalement il part de ma version pour continuer a travailler.
au coup suivant il fait evoluer la version (dans le nom simplement) du fichier zippé.
comme j'ai plus de temps , j'ai décidé d'essayer de travailler avec subversion afin de s'eviter ce genre de manip qui amène regulierement des petits pb chronophages. pertes de modifs, oublis, etc...
je suis donc parti de (disons) projet77 qu'il m'a envoyé.
c'etait pendant les vacances donc nous avons travaillé tous les 2 sur des parties différentes mais qui touchent des fichiers communs.
j'ai ainsi travaillé sur cette version et ai mis à jour projet77 en projet77mod.
mon ami m'envoie par la suite projet79 sans avoir eu mes modifs.
j'ai donc des repertoires projet77, projet77mod et projet79 que j'utilise de facon traditionelle (hors svn)
voici ce que j'ai mis en place et effectué pour essayer de fusionner le tout:
un repository projet avec trunk et branches/moi , branches/lui
dans le trunk j'ai mis projet77
puis j'ai copié le trunk dans les 2 branches.
puis j'ai checkouté le tout respectivement dans un working copy trunk, branches/moi et branches/lui.
j'ai ensuite copié le contenu du rep projet77mod dans wc/branches/moi
j'ai ajouté (svn add) les fichiers et commité puis update
j'ai ensuite copié le contenu de projet79 dans wc/branches/lui
ajouté (svn add) les fichiers et commité puis update
ensuite dans wc/trunk j'ai fait le merge suivant:
svn merge file:///path/to/repo/trunk file:///path/to/repo/branches/moi
essai . ok mes modifs sont là. commit/update
puis svn merge file:///path/to/repo/trunk file:///path/to/repo/branches/lui
essai, ses modifs sont la mais mes modifs ont disparues.
y a manifestement un truc qui m'échappe.
qqun peut t il me déniaiser sur la question ?
Dernière modification par forex (Le 19/05/2008, à 03:27)
:: faut voir ::
Hors ligne
#2 Le 19/05/2008, à 03:25
- forex
Re : [ Résolu ] Utilisation de subversion et de la fonction merge
OK,
PB résolu, pour ceux que ca pourraient intéresser, je poste la solution:
La solution se trouve ici:http://svnbook.red-bean.com/en/1.0/ch04s04.html
partie: Merging a Whole Branch to Another
Beaucoup de ptits nouveaux sous svn se font avoir car la plupart des exemples de merge dans différents tutoriels, ne reflètent pas ce cas.
En fait le merge doit etre le reflet des modifications appliquées sur la branche et intégrées au reflet du trunk:
donc dans mon cas la bonne commande était:
cd trunk
svn merge -r x1:HEAD file:///path/to/repo/branches/lui
avec x1 correspondant à la version résultant du commit suite à l'application des modifs de "lui"
pour connaitre x1, il faut se mettre dans la branches/lui et faire svn log
les message de commit et de révision permettent de repérer l'application des modifs.
HEAD peut être noté tel quel ou bien il suffit d'aller dans le trunk et de faire aussi svn log
le dernier numéro de révision sera équivalent à HEAD.
comme précisé, sur le site donné en url ci dessus, bien noter dans le commit les numéros de révision si dans l'avenir ce processus doit se reproduire.
perso je recommande de noter (dans le message de commit par ex) la commande merge tapée à cette occasion.
il est aussi intéressant de commencer par svn merge avec l'option --dry-run pour simuler le merge et voir les fichiers impactés.
:: faut voir ::
Hors ligne