43 votes

Storyboards et conflits SVN

Il s'agit d'un problème que nous n'avons jamais eu à traiter avant l'introduction des story-boards. Chaque fois qu'il y avait un risque de conflit dans l'interface utilisateur, nous nous assurions simplement que deux développeurs ne travaillent jamais simultanément sur le même fichier XIB. La raison pour laquelle nous nous sommes abstenus de résoudre les conflits XIB est qu'il peut y avoir des effets secondaires problématiques (XIB est représenté en format XML, il n'y a donc pas de "bonne" façon de fusionner 2 versions).

Nous sommes maintenant confrontés à ce problème car tous nos éléments d'interface utilisateur se trouvent dans le même fichier .storyboard - l'interdiction de travailler simultanément sur deux éléments d'interface utilisateur dans le projet rend le travail en parallèle très difficile.

Avez-vous des suggestions sur la façon d'aborder ce problème ? Merci d'avance pour vos efforts.

39voto

Jeffery Thomas Points 12768

Divisez votre storyboard en plusieurs storyboards.

Il n'y a aucune raison pour que votre application ne contienne qu'un seul storyboard. Décomposez votre storyboard en storyboards de modules. Vous pouvez utiliser +storyboardWithName:bundle: pour charger les modules du storyboard.

Voir : Meilleures pratiques de UIStoryboard pour d'autres bonnes idées de storyboard.


Mise à jour

Il est important de noter qu'il ne s'agit pas d'une solution complète au problème. De la même manière que vous ne pouvez pas complètement éviter la possibilité de conflits de fusion dans le code source en décomposant une classe géante en modules plus petits, vous ne pouvez pas non plus éviter la possibilité de conflits de fusion dans le storyboard. L'idée est de réduire la probabilité jusqu'à ce qu'elle devienne un problème gérable.

Il y aura toujours des situations de fusion délicates dans une grande base de code. Une solution correctement décomposée réduira le nombre de conflits et minimisera le nombre de verrouillages nécessaires.

0voto

Dustin Points 4108

Voici une idée qui m'est venue lorsque j'essayais de trouver une solution.

Si vous cliquez avec le bouton droit de la souris sur votre fichier de storyboard dans Xcode et que vous naviguez vers "Ouvrir sous", vous verrez qu'il y a plusieurs options - la valeur par défaut est "Interface Builder - iOS Storyboard". Cependant, vous pouvez également sélectionner "code source".

Si vous ouvrez storyboard en mode code source, il est possible d'apporter des modifications (bien que ce soit un peu pénible). Mais vous pouvez ajouter du code provenant d'autres storyboards et faire des changements dans le vôtre - je n'ai pas utilisé SVN mais avec un dépôt git je peux voir d'autres versions du storyboard et copier du code dedans.

Je ne dirais pas qu'il s'agit d'une solution idéale. J'ai eu des problèmes avec Xcode qui se bloque de manière aléatoire lorsque j'essaie de rouvrir le storyboard dans IB. Parfois, coller du code fonctionne, parfois non. Quelques fois, j'ai dû changer le <scene> la valeur de la balise. D'après mon expérience, c'est plutôt aléatoire, mais si vous sauvegardez vos fichiers avant d'essayer quoi que ce soit, cela peut fonctionner.

Si cela fonctionne, faites-le moi savoir - je suis intéressé de voir si une solution peut être trouvée à ce problème.

0voto

gbjbaanb Points 31045

S'agit-il de fusionner des fichiers XML ?

Heureusement, SVN vous permet de changer l'outil de fusion que vous utilisez pour effectuer la fusion pour différents types de fichiers. (ex. tutoriel pour l'utilisation de P4Merge )

Il ne vous reste plus qu'à trouver un excellent outil pour fusionner des fichiers XML (bonne chance :) ).

il y a WinMerge (avec le préfiltre DisplayXMLFiles), ou diffxml, ou encore XMLMerger ou un outil java xmlmerge

-3voto

user1534610 Points 52

Vous pouvez également jeter un coup d'œil à un outil moderne de gestion du code source. Git, par exemple, dispose de fonctions de fusion intelligentes. Voir ce lien pour savoir pourquoi vous devriez envisager mise à niveau de votre flux de travail.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X