AnkhSVN + Visual Studio 2003

AnkhSVN + Visual Studio 2003 - C++ - Programmation

Marsh Posté le 21-04-2006 à 14:31:38    

Salut,
 
j'ai un projet sous Visual C++.
J'ai un repos svn qui va avec etc tout va bien, mon problème est que dans les options j'ai commit et update, mais je ne vois pas comment faire une fusion de fichier. Est-ce AnkhSVN qui ne propose pas cette option ? ou bien est-ce moi qui ne comprend pas.
 
En effet si je modifie un fichier pendant qu'un collègue le modifit aussi, si je le commit et puis qu'il le commit aussi il écrasera mon fichier et on perdra alors mes modifications ...
 
Pour l'instant je trouve que ce n'est pas aussi simple que CVS sous éclipse, mais je découvre donc je ne connais pas encore ..

Message cité 2 fois
Message édité par gee le 22-04-2006 à 17:48:13
Reply

Marsh Posté le 21-04-2006 à 14:31:38   

Reply

Marsh Posté le 22-04-2006 à 17:48:25    

up

Reply

Marsh Posté le 22-04-2006 à 18:19:35    

gee a écrit :


En effet si je modifie un fichier pendant qu'un collègue le modifit aussi, si je le commit et puis qu'il le commit aussi il écrasera mon fichier et on perdra alors mes modifications ...


Je connais pas AnkhSVN mais je connais Subversion : si tu commit avant ton collegue, ton collegue va avoir une colision, si le merge n'est pas possible. Si colision, il y a, il faudra qu'il fasse le merge à la main. Sinon, aucun problème.  
 
Si il écrase ton fichier, c'est qu'il y a un problème.
 
Le schéma présent sur cette page représente exactement ce qui t'arrive : on peut voir qu'aucun fichier n'est effacé.


Message édité par zapan666 le 22-04-2006 à 18:19:52

---------------
my flick r - Just Tab it !
Reply

Marsh Posté le 22-04-2006 à 18:26:11    

Peut être parce que j'ai l'habitude de formule explicites (commit, overide and commit, refresh repos, update, overide and update) je me trompe.
 
Peut-être que comme tu dis l'update le fait bien comme il faut, et sinon nous demande notre avis, je n'ai pas trop eu le temps de tester.  
 
Par contre le viewer de la solution est celui local, je ne sais pas comment vérifier depuis lui quel fichier a été mis à jour (si par exemple je ne veux pas fusionner tout le projet, mais juste certains fichiers.).
Sinon si tu connais quelque chose de plus simple sous Subversion que AnkhSVN, et sous windows (sous Unix j'utilisais svn depuis un terminal). Là j'ai vu pas mal de bons commentaires de tortoisesvn, mais ca oblige à se balader entre l'explorer et VS.
 
Merci bien

Reply

Marsh Posté le 22-04-2006 à 18:46:45    

sous windows, j'utilise tortoiseSVN, sinon, je suis toujours en ligne de commande sous linux, mais j'utilise quasiement que linux pour mes developpements  :)


Message édité par zapan666 le 22-04-2006 à 18:47:38

---------------
my flick r - Just Tab it !
Reply

Marsh Posté le 22-04-2006 à 20:05:15    

j'utilise linux pour tout chez moi, mais là au travail j'ai pas le choix :)
je regarderai du coté de tortoise voir si c'est plus simple, et mieux finit, car là je me sens perdu, alors le collègue à qui j'ai quasiment forcé l'install d'ankhsvn car j'en ai marre de faire de l'échange de .cpp par mail, il va plus m'écouter si je trouve pas vite un truc simple et sympa :)

Reply

Marsh Posté le 24-04-2006 à 10:43:39    

up

Reply

Marsh Posté le 12-05-2006 à 00:32:33    

je up car je ne trouve toujours pas super convivial.
 
Par exemple je passe par tortoiseSVN quand je veux repasser à une ancienne version, ankh me demande le numéro de la révision, mais je ne le connais pas...
 
enfin j'ai peut être loupé un truc mais je ne trouve pas cela super accessible.
Vaut-il mieux repartir sur un CVS pour VS2003 ?
 
Merci

Reply

Marsh Posté le 22-05-2006 à 10:07:40    

up

Reply

Marsh Posté le 01-06-2006 à 00:07:51    

parfois les commit ne sont pas fait sous ankh on dirait, mais tortoise oui ..

Reply

Marsh Posté le 01-06-2006 à 00:07:51   

Reply

Marsh Posté le 01-06-2006 à 00:25:06    

gee a écrit :

En effet si je modifie un fichier pendant qu'un collègue le modifit aussi, si je le commit et puis qu'il le commit aussi il écrasera mon fichier et on perdra alors mes modifications ...


J'ai jamais utilisé Ankh, mais sous Tortoise et en ligne de commande, SVN détecte les collisions et demande un merge manuel quand le merge auto est trop risqué (SVN ne fait de merges auto que s'il est sûr que ça ne posera pas de problèmes), et dans ce cas tous les outils sont fournis pour faire le merge. C'est probablement la même chose dans Ankh

gee a écrit :

Peut-être que comme tu dis l'update le fait bien comme il faut, et sinon nous demande notre avis, je n'ai pas trop eu le temps de tester.


T'inquiète pas pour ça

gee a écrit :

Par contre le viewer de la solution est celui local


Normalement il y a un repository browser aussi

gee a écrit :

je ne sais pas comment vérifier depuis lui quel fichier a été mis à jour (si par exemple je ne veux pas fusionner tout le projet, mais juste certains fichiers.).


Je comprend pas trop là, tu peux expliciter?

gee a écrit :

Par exemple je passe par tortoiseSVN quand je veux repasser à une ancienne version, ankh me demande le numéro de la révision, mais je ne le connais pas...


Tu peux la récupérer via le log (pareil sous Tortoise avec Update To Revision, l'avantage de Tortoise étant qu'il permet de faire des rollback directement depuis le log)
 
Sinon, il y a apparement un channel IRC pour Ankh, tu devrais songer à t'y ballader.
Et faut bien penser également qu'Ankh est en plein développement avec des releases bien écartées (la dernière stable, la 0.5.5, a 2 ans)

Message cité 1 fois
Message édité par masklinn le 01-06-2006 à 00:26:22
Reply

Marsh Posté le 01-06-2006 à 10:40:40    

Salut

masklinn a écrit :

J'ai jamais utilisé Ankh, mais sous Tortoise et en ligne de commande, SVN détecte les collisions et demande un merge manuel quand le merge auto est trop risqué (SVN ne fait de merges auto que s'il est sûr que ça ne posera pas de problèmes), et dans ce cas tous les outils sont fournis pour faire le merge. C'est probablement la même chose dans Ankh
 
T'inquiète pas pour ça


Oui finalement ca arrive, je me retrouve avec un point d'exclamation dans mon arborescence et ankh me demande de choisir ce que je veux faire (garder l'ancien, le nouveau, la fusion), mais parfois je me retrouve avec des "<< mine" et trucs du genre dans le fichier à enlever à la main, j'ai peut être mal compris un truc par contre :)
 

masklinn a écrit :


 
 
Normalement il y a un repository browser aussi
 
 
Je comprend pas trop là, tu peux expliciter?


Bah sous eclipse il y a un onglet team synchronize (ou quelque chose du genre désolé ...) et dedans je fais un synchronize qui me permet de voir les modifications sur le serveur, sans forcément les récupérer toutes. Avec tortoise je peux regarder les logs, sous Ankh je ne vois rien de ce genre je me retrouve obligé soit de demander à l'autre dev ce les fichiers sur lesquels il travaille ou bien je demande une mise à jour globale... Pas forcément dramatique bien sûr, mais j'aimais bien la séparation CVS / workspace, ici les 2 sont mélangés.
 

masklinn a écrit :


Tu peux la récupérer via le log (pareil sous Tortoise avec Update To Revision, l'avantage de Tortoise étant qu'il permet de faire des rollback directement depuis le log)


De nouveau devoir connaître le numéro de révision c'est pas pratique, même si on peut le trouver, alors qu'un click droit comme sur tortoise et puis regarder les différents commit du fichier et après revenir ou pas, c'est plus sympa.
 

masklinn a écrit :


Sinon, il y a apparement un channel IRC pour Ankh, tu devrais songer à t'y ballader.
Et faut bien penser également qu'Ankh est en plein développement avec des releases bien écartées (la dernière stable, la 0.5.5, a 2 ans)


Pour l'irc je pense qu'il sera bloqué vu que déjà la plupart des forums sont bloqués (bizarrement pas HFR...) et certains sites aussi ...
 
Pour la version en dev je sais oui, je suis pas sur une version stable d'ailleurs (la folie d'être le plus à jour possible :D), et je ne me plains pas particulièrement, je me renseigne car je ne connais pas bien Ankh, donc peut être que je ne sais pas faire des choses de manière simple ...
 
Merci à toi :jap:

Message cité 1 fois
Message édité par gee le 01-06-2006 à 10:40:55
Reply

Marsh Posté le 01-06-2006 à 11:26:04    

gee a écrit :

Oui finalement ca arrive, je me retrouve avec un point d'exclamation dans mon arborescence et ankh me demande de choisir ce que je veux faire (garder l'ancien, le nouveau, la fusion), mais parfois je me retrouve avec des "<< mine" et trucs du genre dans le fichier à enlever à la main, j'ai peut être mal compris un truc par contre :)


C'est la "merged file with conflict" par défaut de Subversion.
 
Quand SVN détecte un conflit qu'il n'arrive pas à résoudre, il génère 4 fichiers:

  • foo.php
  • foo.php.r#{x}
  • foo.php.r#{y}
  • foo.php.mine

(#{x} est un numéro de révision, #{y} aussi avec y < x)
foo.php.mine est ton fichier, celui que tu viens de tenter de commiter
foo.php.r#{y} est le fichier sur lequel est basé ton fichier (la version récupérée lors du dernier update avant d'effectuer tes modifications actuelles)
foo.php.r#{x} est le fichier actuellement dans le repository (la dernière version du fichier, celle qu'un de tes collèges a commité avant que tu fasses ton commit)
et enfin foo.php (fichier marqué comme "en conflit" ) qui va ressembler à ça:
 

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec libero. Proin ipsum orci, tempus et, fermentum quis, faucibus vitae, nulla. Integer sollicitudin diam a magna.
 
<<<<<<< .mine
Fusce quis diam.
 
=======
Phasellus interdum est ut augue.
 
>>>>>>> .r#{y}
 
Quisque non nisi ac pede mollis placerat. Ut leo purus, condimentum vel, vestibulum ut, consectetuer eget, leo.


le principe, c'est que les trucs autour de <<< et >>> sont les parties non conflictuelles du fichier et le texte au milieu est la partie en conflit.
 
la partie entre <<< .mine et === ce sont tes modifications à toi, et la partie entre === et >>> .r#{y} est la partie créée par ton collègue en conflit avec tes modifications.
 
À partir de là il y a 3 possibilités:

  • Si tu n'as pas d'outil de diff qui pootre, tu prends foo.php et tu résous le conflit à la mano, parfois il suffit de supprimer les tags, parfois non. Et appelles le collègue qui a fait les modifs si t'es pas sûr naturellement
  • Si tu as un outil de diff qui pootre suffisament pour gérer le 3-ways Diff (genre Araxis Merge [:neuf]) tu charges foo.php.r#{y}, foo.php.r#{x} et foo.php.mine et tu diff depuis là pour créer le merge que tu enregistre dans foo.php (ou bien alors tu peux ne differ que sur foo.php.r#{x} et foo.php.mine). Ensuite tu marques foo.php comme "résolu" (il était marqué comme en conflit) et tu commit (normalement subversion supprime lui même les 3 fichiers générés à ce stade, pas besoin de faire le nettoyage toi même)


gee a écrit :

Bah sous eclipse il y a un onglet team synchronize (ou quelque chose du genre désolé ...) et dedans je fais un synchronize qui me permet de voir les modifications sur le serveur, sans forcément les récupérer toutes. Avec tortoise je peux regarder les logs, sous Ankh je ne vois rien de ce genre je me retrouve obligé soit de demander à l'autre dev ce les fichiers sur lesquels il travaille ou bien je demande une mise à jour globale... Pas forcément dramatique bien sûr, mais j'aimais bien la séparation CVS / workspace, ici les 2 sont mélangés.


J'vois pas le problème de demander des updates globaux régulièrement, c'est ce que t'es censé faire de toute façon [:spamafote]  
 

gee a écrit :

Pour l'irc je pense qu'il sera bloqué vu que déjà la plupart des forums sont bloqués (bizarrement pas HFR...) et certains sites aussi ...


Tentes quand même, et tu peux demander à ton admin de te laisser accéder à IRC si c'est bloqué, suffit d'expliquer tes raisons [:spamafote]

Message cité 1 fois
Message édité par masklinn le 01-06-2006 à 11:26:24

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 01-06-2006 à 11:37:21    

masklinn a écrit :

C'est la "merged file with conflict" par défaut de Subversion.
...

oui j'avais compris le principe, je ne savais juste pas que ca venait de svn de base. Mais j'ai l'impression d'avoir cela pas seulement dans le cas ou Ankh m'affiche le point d'exclamation signalant un problème (ca vient soit d'ankh, soit de moi donc à voir).
 
 
 

masklinn a écrit :


J'vois pas le problème de demander des updates globaux régulièrement, c'est ce que t'es censé faire de toute façon [:spamafote]  

 
Y'a pas de gros problème, c'est juste une liberté en moins c'est dommage .. Parfois j'ai juste envie de regarder les modifications apportées globalement mais pas envie des les prendre car mes changements sont trop gros ... enfin bref rien de bien important ici, juste une habitude.
 

masklinn a écrit :


Tentes quand même, et tu peux demander à ton admin de te laisser accéder à IRC si c'est bloqué, suffit d'expliquer tes raisons [:spamafote]


A voir en effet,  
 
Merci pour ton aide :jap:

Message cité 1 fois
Message édité par gee le 01-06-2006 à 11:38:05
Reply

Marsh Posté le 01-06-2006 à 12:32:04    

gee a écrit :

Y'a pas de gros problème, c'est juste une liberté en moins c'est dommage .. Parfois j'ai juste envie de regarder les modifications apportées globalement mais pas envie des les prendre car mes changements sont trop gros ... enfin bref rien de bien important ici, juste une habitude.


Fais de plus petites modifs :o
 
(je sais pas quel est ton ratio de commit, mais habituellement je committe toutes les 5/10mn quand je fais beaucoup de changements, si j'ai plus de 5 fichiers à commiter ou de grosses modifs je commence à m'inquiéter)


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 01-06-2006 à 13:27:11    

ca dépend, là comme mes modifications peuvent être dangereuses pour moi, je commit souvent pour avoir des backups ... en gros dès que ca compile et que ca a l'air de donner le résultat escompté.
 
Mais en PFE je commitais bien plus rarement, que quand une fonction était finie, et en fin de soirée.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed