Xcode changements non modifié storyboard et fichiers XIB

Les story-boards sont plutôt une douleur royale à partir d'un workflow git point de vue lorsque plusieurs personnes travaillent sur eux. Par exemple, le code XML dans le .storyboard fichier de départ, <document> de la balise toolsVersion et systemVersion attributs modifiés par tout ce que la configuration la plus récente du fichier manipulateur se trouve être en cours d'exécution. La synchronisation de tout le monde Xcode versions précisément semble aider avec toolsVersion, mais systemVersion changements n'importe quoi, selon les Mac et/ou OS X version, le développeur est en cours d'exécution.

C'est idiot, mais la plupart sont inoffensifs. Ce qui nous inquiète, c'est que, à d'autres moments, d'autres modifications sont automatiquement appliquées à la table de montage séquentiel, juste en ouvrant après un git pull. C'est-à-dire, Alice apporte des modifications à un plan de montage, s'engage et les pousse vers le référentiel. Bob tire alors Alice changements et ouvre le storyboard pour faire d'autres modifications. Au moment où il ouvre la table de montage séquentiel, l'icône du fichier change immédiatement à une modification de l'-mais-non enregistrées de l'état, et un git status montre que tout nombre de bizarre changements ont eu lieu. Tout cela sans Bob avoir changé quoi que ce soit ou de sauvegarder le fichier en lui-même.

Les plus courantes automatisée des changements que nous voyons, c'est la disparition ou la réapparition de l'ensemble de la <classes> tag de la hiérarchie de proximité de la fin d'un scénario de fichier. Nous n'avons pas compris ce qui est à l'origine. On peut avoir plusieurs versions localisées d'une table de montage séquentiel dans divers .lproj répertoires, et lors de l'ouverture d'eux à l'intérieur d'Interface Builder, la hiérarchie de classe peuvent spontanément être retiré de certains et a ajouté dans d'autres, ou laissé seul dans certains cas. Cela provoque beaucoup de bruit dans git diff, mais il ne fait pas de pause toutes les fonctionnalités. Nous allons souvent de façon sélective ajouter les modifications que nous avons apportées dans le dépôt git de l'index, engager les gens, et puis il suffit de jeter le spontané, absurde <classes> changements. C'est pour commet de petits et agréable, comme ils devraient l'être. Finalement, si, ça devient tout simplement trop beaucoup de s'embêter avec depuis Xcode conserve re-faire les modifications, et que quelqu'un vient ragecommits avec quelques autres trucs... ce qui est bien jusqu'à ce que quelqu'un d'autre Xcode décide de vouloir les modifier sans raison apparente. (Notre commettre l'histoire a beaucoup de prestation de serment-dessus.)

Est ce que quelqu'un d'autre voir ce comportement? Est-ce une Xcode bug ou un problème de configuration sur un ou plusieurs de nos développeurs Mac? Nous avons vu quelques un comportement similaire lors d'une collaboration avec XIB fichiers, mais les storyboards semblent plus sensibles à ce.

  • En effet, les projets Xcode et Git sont pas très bien ensemble. Je ne pense pas que vous pouvez éviter ce gâchis d'autre moyen que de jeter les changements qui sont inutiles - qui sont presque toujours le projet de modification des fichiers de pour moi et d'autres fichiers xml, je suis sûr que je n'ai pas changé. Va être content si il ya toute sorte de "solution". J'aime Perforce pour la pratique fonctionnalité de verrouillage permettant pas Xcode trop changer, que, probablement, peut-être fait manuellement les fichiers que vous n'allez pas changer, mais seulement pour examen.
  • Pas la peine d'utiliser des story-boards avec git ou autre chose. Ils ne sont pas conçus pour s'engager sympathique. Nous a donné et suis avec .xib, ce qui n'est pas génial non plus, mais au moins c'est précis.
  • Nous avons trouvé des story-boards assez soignée pour pas mal de choses en fait, mais il est souvent nécessaire de les mélanger avec de l'XIBs. Si ce bug n'est jamais fixe, nous serions très heureux de travailler avec eux la grande majorité du temps.
  • Je viens de commenter sur ahwulf commentaire: ce qui dans le monde voulez-vous dire qu'ils ne sont pas commettre de l'environnement? Ils sont XML/les fichiers de texte, c'est à propos de s'engager convivial que vous pouvez obtenir. Et j'ai eu " aucun problème avec la table de montage séquentiel et un système de contrôle de version, le seul problème est bien sûr que xcode parfois supprime le <catégories> tag puis readds plus tard, mais vous pouvez le voir facilement si vous regardez les changements avec un git GUI ou git -p ou équivalent quelle que soit dvcs. Je n'ai jamais eu ce cas avec le .pbxproj fichier en tant que titre d'information.
  • Je ne comprends pas pourquoi xcode mettre les classes de blocs à l'intérieur de la table de montage séquentiel s'il suffit de générer les blocs en lisant les classes de fichiers? sont-ils une sorte de "cache"? si oui, ils doivent être mis dans une des classes.fichier de cache de sorte que nous pourrions l'exclure de la gestion des versions...
  • Je n'ai rien à contribuer à ce débat, d'autres que mon pur désespoir à cette situation.

InformationsquelleAutor JK Laiho | 2012-11-05