Xcode et svn ne s'entende pas très bien (project.pbxproj)
Greensource
Membre
Bonjour,
Pour un développement en équipe nous avons besoin d'utiliser svn dans Xcode.
Le problème c'est que dès qu'un membre de l'équipe modifie le fichier project.pbxproj, en ajoutant une classe par exemple, et bien les autres reçoivent un message de warning comme quoi ce fichier à été modifié par une autre application.
Du coup pour resté propre on est obliger de faire un checkout dans ce cas, ce qui est passablement énervant à force.
Vous avez aussi ce souci vous?
Pour un développement en équipe nous avons besoin d'utiliser svn dans Xcode.
Le problème c'est que dès qu'un membre de l'équipe modifie le fichier project.pbxproj, en ajoutant une classe par exemple, et bien les autres reçoivent un message de warning comme quoi ce fichier à été modifié par une autre application.
Du coup pour resté propre on est obliger de faire un checkout dans ce cas, ce qui est passablement énervant à force.
Vous avez aussi ce souci vous?
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Je dirais que ce que tu cites fait partie de ces points justement aussi.
Ce qui est assez étonnant d'ailleurs, dans le sens où je me demande comment les ingénieurs Apple se démerdent, vu qu'ils doivent bien utiliser Xcode eux-même et bosser en collaboratif, alors comment ça se fait qu'ils n'aient pas eu envie d'améliorer cette partie là de Xcode, ne serait-ce que pour eux ?
Bref, par contre je ne comprends pas trop ce que tu expliques : si qqun d'autre modifie le xcodeproj... Toi tu n'en sera alerté, par le message que tu indiques... que si tu fais un update pour récupérer le nouveau xcodeprojet que l'autre personne a commité entre temps, non ?
Et dans un sens c'est normal que tu en sois informé, puisque si la personne en question a ajouté un fichier au projet, faut bien que tu le voies toi aussi, non ?
Ce comportement est assez étonnant... Les modifications sont normalement faite uniquement en local sur ta machine même dans le cas du fichier projet.
Le comportement que tu décris correspondrait à l'utilisation d'un dossier partagé sur le réseau sur lequel tout le monde travaille...Si tu utilise Subversion cela ne doit pas être le cas... ou alors il faut nous donner plus d'informations.
En fait c'est surtout MacOS X et SVN qui ne font pas bon ménage... SVN a la foutue manie de rajouter des dossiers ".svn" dans chaque dossier d'un projet, et par conséquent... Dans tous les bundles que beaucoup de logiciels Apple utilisent.
Je ne donnerai que l'exemple de Pages, qui refuse de charger un document si ce dernier a été rajouté à un projet SVN (par le simple fait que cela rajoute un dossier .svn).
Du coup, depuis que je développe sur Mac, je suis passé à Mercurial, car il n'a pas le défaut de laisser trainer des trucs partout (mais un seul dossier caché à la racine du projet). Le problème c'est que du coup ce n'est plus intégré du tout à XCode, mais ce n'est pas si grave, vu qu'il existe des interfaces graphiques très bien pour Mercurial, comme Murky, ou celle que je développe en ce moment (en espérant que j'ai le temps de la finir un jour ).
Effectivement, j'ai toujours préféré le mécanisme de ClearCase et de ses vues dynamiques qui évitent de devoir synchroniser régulièrement à la mano. Mais bon c'est pas le même prix et de toute façon il existe pas sur Mac.
A ma connaissance, ce problème est récurant à tous les outils de gestion de version qui utilisent le principe de repository local.
Ahhh ClearCase... Je l'utilise au boulot depuis 10 ans et je maudit celui qui un jour a décidé d'utiliser ce "machin". Non pas à cause des concepts qui sont derrière et qui sont plutôt bons, mais à cause de la manière dont ca a été implémenté par rational... Ils ont fait un truc tellement lourd qu'il faut "presque" (je dis presque car nous on en a pas) une personne à plein temps pour administrer le truc...
C'est clair que c'est une usine à gaz à mettre en oeuvre mais après cela relève plutôt de l'horloge suisse si c'est correctement géré.
En effet c'est normal d'être prévenu, sauf qu'Xcode n'arrive pas à ce dépatouillé, il voit un conflit et m'empêche ensuite l'accès en écriture à mon projet. Seul un checkout me sort de cette histoire.
Dès que je retombe dessus je vous explique tout ça mieux si c'est pas très clair.
Possibilité 1 :
- tu fais un update de ton projet, et il se trouve que qqun d'autre bossant sur le projet a modifié (et commité) son xcodeproj. Conclusion l'update que tu as fait te signale que le xcodeproj, que tu viens d'updater, a été modifié... Et qu'il est en conflit avec le tient. Il faut donc commencer par régler le conflit SVN avant de continuer. Logique.
Possibilité 2 :
- tu ne fais rien et tout à coup sans prévenir, Xcode t'annoncer que le xcodeproj a été modifié par quelqu'un d'autre. Dans un environnement avec suivi de version SCM (genre SVN, CVS, Git ou autre), ça n'est pas possible, puisqu'il faut que tu demandes explicitement un update pour voir les modifications. Donc si c'est le cas c'est que tu travailles plutôt sur un truc genre disque réeau partagé. Et là c'est autre chose.
une des paes expliquant comment faire ici
Du coup si tu utilises svn en ligne de commande tu peux lui faire utiliser FileMerge, et donc avoir une belle interface graphique de comparaison de fichiers, pour voir les différences entre tes versions.
Après, selon l'outil que tu utilises pour gérer ton SVN (si ce n'est pas la ligne de commande mais un outil comme Cornerstone " que je ne connais pas d'ailleurs) il y a peut-être moyen de modifier son appel qui utilise la commande Diff avec ce script.
D'ailleurs au passage sinon certains logiciels de SVN permettent, tout simplement dans leurs préférences, de choisir le logiciel de diff à utiliser.