Toute notre équipe utilise IntelliJ IDEA, et nous trouvons qu'il est utile de mettre ses fichiers de projet (.droits de propriété intellectuelle et .iml) dans le contrôle de code source, de sorte que nous pouvons partager, construire des configurations, les paramètres et les inspections. De Plus, nous pouvons alors utiliser ceux de l'inspection settingss sur notre serveur d'intégration continue avec TeamCity. (Nous avons pour chaque utilisateur de l'espace de travail .iws fichier dans le .gitignore fichier et non pas dans le contrôle de source.)
Toutefois, ces fichiers changer dans peu de façons lorsque vous faire à peu près tout dans l'IDÉE. Il y a un problème dans l'IDÉE de la question de la base de données (IDÉE-64312), donc peut-être que l'on pourrait considérer cela comme un bug dans l'IDÉE, mais c'est l'un nous devons vivre pour l'avenir prévisible.
Jusqu'à récemment, nous avons été à l'aide de la Subversion, mais nous avons récemment passé à Git. Nous avons eu chacun un peu pris l'habitude d'avoir un changement de la liste des fichiers de projet que nous avons ignoré et n'a pas vérifier s'il y avait des fichier de projet les changements que nous voulions partager avec les autres. Mais avec Git, le pouvoir réel semble être (à partir de ce que nous explorons) l'une ramification qu'il encourage, et la commutation entre les branches est une douleur avec le projet les fichiers ayant été modifiés. Souvent, il peut tout de fusion dans les changements en quelque sorte, et tente d'aborder le projet de modifications du fichier maintenant être appliquées à la nouvelle branche. Toutefois, si la nouvelle direction a changé les fichiers de projet (comme la branche est de travailler sur un nouveau module qui n'est pas dans les autres branches encore), git juste déclenche une erreur qu'il ne ferait aucun sens de fusionner dans les fichiers lorsque la direction a changé et vous avez des modifications en local, et je peux plutôt de comprendre son point de. À partir de la ligne de commande, on peut utiliser l'option "-f" sur le "git checkout" commande pour le forcer à jeter les changements locaux et l'utilisation de la branche à la place, mais (1) le Git Checkout interface graphique de commande dans l'IDÉE (10.5.1) ne semble pas avoir que comme une option que nous pouvons trouver, donc nous avions besoin de passer à la ligne de commande sur une base régulière, et (2) Nous ne sommes pas sûr que nous voulons être dans l'habitude d'utiliser le drapeau et dire à Git de jeter nos changements locaux.
Alors, ici sont quelques idées que nous avons sur les options que nous avons à traiter avec ceci:
- Prendre les fichiers de projet de contrôle de code source entièrement. Les mettre dans le .gitignore, et de les distribuer à chaque personne et TeamCity, par l'intermédiaire d'autres moyens, peut-être en les mettant dans le contrôle de source quelque part d'autre ou sous d'autres noms. Notre équipe est suffisamment petit pour que cette option est possible à faire, mais il ne me semble pas génial.
- Continuer à vivre avec elle, en essayant d'être sûr de gérer les fichiers que nous avons sur les branches qui, à un moment donné. Dans ce cadre, on pourrait les encourager à chaque développeur d'avoir plus d'une copie de chaque projet sur leur système, donc ils peuvent avoir l'extrait d'une autre branche avec éventuellement différents ensembles de fichiers de projet.
- Essayez d'avoir le projet (.droits de propriété intellectuelle) dans le contrôle de source, avec le module (.iml) de fichiers qui ne sont pas dans le contrôle de source dans le .gitignore fichier. La principale chose qui semble basculer autour de sa propre dans la .dpi sur une base régulière est de l'ordre de l'partagé construire des configurations, mais peut-être que nous pouvons partager les informations séparément sur la façon de la mettre en place. Je ne suis pas tout à fait sûr de savoir comment l'IDÉE traite de ce genre de chose d'avoir seulement certains de ses fichiers, et en particulier sur une nouvelle extraction.
Je suppose que je suis l'espoir, il y a quelques évident (ou de non-évidence) solution avons-nous manqué, peut-être traiter avec l'énorme capacité de personnalisation que Git et de l'IDÉE à la fois. Mais il semble bien que nous ne pouvait pas être la seule équipe à avoir ce problème. Les Questions qui sont de nature similaire sur StackOverflow inclure 3495191, 1000512, et 3873872, mais je ne sais pas car ils sont exactement la même question, et peut-être quelqu'un peut venir avec les avantages et les inconvénients de différentes approches que je viens de décrire, les approches présentées dans les réponses à ces questions, ou des approches qu'ils recommandent.
Je vous remercie.