Xcode et svn ne s'entende pas très bien (project.pbxproj)

GreensourceGreensource Membre
03:23 modifié dans Xcode et Developer Tools #1
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?

Réponses

  • apocaalypsoapocaalypso Membre
    03:23 modifié #2
    Je ne m'y connais pas beaucoup car je n'utilise pas SVN mais j'ai souvent entendu dire que Xcode et SVN ne faisait pas bon ménage...
  • AliGatorAliGator Membre, Modérateur
    03:23 modifié #3
    Pour être plus précis, je dirais (ce n'est qu'un avis personnel mais bon apparemment je ne suis pas le seul à  le penser) que le SCM Manager intégré à  Xcode (donc l'interface graphique, intégrée dans Xcode, permettant de gérer ton SVN, faire des checkouts, update, commit et voir les fichiers qui sont dans le SVN et modifiés ou non) est assez basique et vite limitative sur pas mal de point...
    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 ?
  • LexxisLexxis Membre
    03:23 modifié #4
    dans 1250848130:

    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?


    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.
  • zoczoc Membre
    03:23 modifié #5
    dans 1250849599:

    Je ne m'y connais pas beaucoup car je n'utilise pas SVN mais j'ai souvent entendu dire que Xcode et SVN ne faisait pas bon ménage...

    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  :) ).
  • MalaMala Membre, Modérateur
    03:23 modifié #6
    dans 1250848130:

    Vous avez aussi ce souci vous?

    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.

  • zoczoc Membre
    03:23 modifié #7
    dans 1250863765:

    Effectivement, j'ai toujours préféré le mécanisme de ClearCase


    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...
  • MalaMala Membre, Modérateur
    03:23 modifié #8
    J'ai été administrateur Clear Case sous Silicon Graphics et windows dans une équipe de 40 développeurs.  :)

    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é.
  • GreensourceGreensource Membre
    03:23 modifié #9
    dans 1250851668:

    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 ?


    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.
  • AliGatorAliGator Membre, Modérateur
    03:23 modifié #10
    Ben oui parce que je ne comprend toujours pas... dans le sens où ce que tu décris est normal, dans une utilisation de SCM.

    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.
  • denis_13denis_13 Membre
    03:23 modifié #11
    dans la description du problème (lock sur le fichier), cela me donne l'impression qu'il ne s'agit pas d'un problème de svn, mais que le projet est chargé en mémoire depuis un même serveur de fichier sur deux ordinateurs différents... Concernant l'intégration de subversion à  XCode, ce qui me gène le plus (au moins jusqu'à  la version 3.1.3 d'XCode, c'est qu'il utilise une version 1.4... de svn alors que la version courante est plutôt 1.6... (il faut bidouiller XCode pour utiliser la version actuelle, je l'avais fait au boulot l'année dernière, maintenant je travaille à  la maison et je n'ai pas pris le temps de m'y replonger, donc j'utilise un outil externe (Cornerstone). Le seul regret est que j'aimais bien le diff intégré à  XCode, mais au moins je n'ai pas de problème quand XCode plante.
  • AliGatorAliGator Membre, Modérateur
    03:23 modifié #12
    Il est tout à  fait possible de lancer le diff de Xcode (c'est l'outil "FileMerge") depuis la ligne de commande, et donc via l'outil svn en ligne de commande.

    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.
Connectez-vous ou Inscrivez-vous pour répondre.