163 votes

Comment traiter les fichiers de projet IntelliJ IDEA sous contrôle de code source de Git en constante évolution ?

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:

  1. 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.
  2. 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.
  3. 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.

53voto

Esko Luontola Points 53877

Vous pouvez utiliser structure du projet basé sur l’annuaire de l’IDEA, où les paramètres sont stockés dans le répertoire d’idée au lieu du fichier .ipr. Il donne plus de contrôle à grain fin sur ce qui est stocké dans le contrôle de version. Les fichiers .iml sera toujours autour, donc il ne résout pas les changements aléatoires en eux (peut-être garder hors contrôle de code source ?), mais partage des choses telles que des profils de style et d’inspection de code est facile, puisque chacun d’eux sera dans son propre fichier dans le répertoire de l’idée.

32voto

De officiel DOC: http://devnet.jetbrains.com/docs/DOC-1186

Selon le IntelliJ IDÉE de projet (format.dpi fichier ou .idée répertoire de base de), vous devez mettre la suite de IntelliJ IDEA les fichiers de projet sous le contrôle de version:

.dpi format de fichier de base de

Partager le projet .dpi fichier et et tous la .iml module fichiers, ne pas partager la .iws fichier stocke les paramètres spécifiques d'utilisateur.

.idée d'annuaire basé sur le format

Partager tous les fichiers sous .idée de répertoire dans la racine du projet à l'exception de l'workspace.xml et tasks.xml les fichiers qui stockent spécifique à l'utilisateur paramètres, également de partager tous les .iml module de fichiers.

Je l'ai mis dans mon .gitignore:

#Project
workspace.xml
tasks.xml

27voto

Drew Noakes Points 69288

Une réponse officielle est disponible. En supposant que vous êtes à l'aide de la moderne (et maintenant par défaut) .idea le dossier de format de projet:

  • Ajoutez le tout...
  • Sauf .idea/workspaces.xml (ce qui est spécifique à l'utilisateur)
  • Sauf .idea/tasks.xml (ce qui est spécifique à l'utilisateur)
  • À l'exception de certains autres fichiers susceptibles de contenir des mots de passe/keys/etc (voir le lien ci-dessus pour plus de détails)

Cet échantillon .gitignore fichier peut être une référence utile, bien que vous devriez toujours lire le lien ci-dessus pour comprendre le pourquoi de ces entrées et de décider si vous avez besoin d'eux.

Personnellement, j'ai aussi ignorer l' .idea/find.xml le fichier comme cela semble changer chaque fois que vous effectuez une opération de recherche.

16voto

ripper234 Points 39314

J’ai pris workspace.xml hors de contrôle de code source (+ ajoutés dans .gitignore).

10voto

duffymo Points 188155

Notre équipe ne vérifie pas dans des fichiers spécifiques chemin IntelliJ. Nous supposons que les gens savent comment utiliser l’IDE et de mettre en place un projet. IntelliJ fichiers vont dans la liste « ignorés ».

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