Jeder in unserem Team verwendet IntelliJ IDEA, und wir finden es nützlich, die Projektdateien (.ipr und .iml) in die Quellcodeverwaltung zu integrieren, damit wir Build-Konfigurationen, Einstellungen und Inspektionen gemeinsam nutzen können. Außerdem können wir diese Inspektionseinstellungen auf unserem Continuous Integration Server mit TeamCity verwenden. (Wir haben die .iws-Datei für den Arbeitsbereich pro Benutzer in der .gitignore-Datei und nicht in der Quellcodeverwaltung.)
Diese Dateien ändern sich jedoch geringfügig, wenn Sie in IDEA so gut wie alles tun. Es gibt ein Problem in der IDEA-Problemdatenbank ( IDEA-64312 ). Vielleicht könnte man dies als Fehler in IDEA betrachten, aber es ist eines, mit dem wir auf absehbare Zeit leben müssen.
Bis vor kurzem haben wir Subversion verwendet, aber kürzlich sind wir zu Git gewechselt. Wir hatten uns gerade daran gewöhnt, eine Änderungsliste mit Projektdateien zu haben, die wir ignorierten und nicht eincheckten, es sei denn, es gab Änderungen an Projektdateien, die wir mit anderen teilen wollten. Aber mit Git scheint die wahre Stärke (von dem, was wir untersuchen) die kontinuierliche Verzweigung zu sein, die es fördert, und das Wechseln zwischen Verzweigungen ist ein Schmerz, da die Projektdateien immer geändert wurden. Oft kann es die Änderungen einfach irgendwie zusammenführen und versucht, mit den Änderungen der Projektdatei umzugehen, die jetzt auf den neuen Zweig angewendet werden. Wenn der neue Zweig jedoch Projektdateien geändert hat (z. B. wenn der Zweig an einem neuen Modul arbeitet, das sich noch nicht in den anderen Zweigen befindet), gibt git nur einen Fehler aus, der nicht angezeigt wird. ' Es macht keinen Sinn, in den Dateien zusammenzuführen, wenn sowohl der Zweig Änderungen aufweist als auch Sie Änderungen lokal haben, und ich kann den Punkt eher verstehen. Über die Befehlszeile kann man "-f" für den Befehl "git checkout" verwenden, um zu erzwingen, dass die lokalen Änderungen verworfen werden und stattdessen die Verzweigungen verwendet werden. (1) Der Befehl "Git Checkout GUI" in IDEA (10.5.1) scheint dies nicht als Option zu haben, die wir finden können, daher müssten wir regelmäßig zur Befehlszeile wechseln, und (2) wir sind uns nicht sicher, ob wir es uns zur Gewohnheit machen wollen kennzeichnen und Git anweisen, unsere lokalen Änderungen wegzuwerfen.
Hier sind einige Gedanken zu Optionen, mit denen wir uns befassen müssen:
- Nehmen Sie die Projektdateien vollständig aus der Quellcodeverwaltung. Legen Sie sie in den .gitignore und verteilen Sie sie auf andere Weise an jede Person und TeamCity, indem Sie sie möglicherweise an einer anderen Stelle oder unter anderen Namen in die Quellcodeverwaltung einfügen. Unser Team ist klein genug, um diese Option in Betracht zu ziehen, aber sie scheint nicht großartig zu sein.
- Lebe weiter damit und versuche sicherzustellen, dass du sicher bist, welche Dateien wir zu einem bestimmten Zeitpunkt in welchen Zweigen haben. Als Teil davon können wir jedem Entwickler empfehlen, mehr als eine Kopie jedes Projekts auf seinem System zu haben, damit jeder in einem anderen Zweig mit möglicherweise unterschiedlichen Sätzen von Projektdateien ausgecheckt werden kann.
- Versuchen Sie, nur das Projekt (.ipr) in der Quellcodeverwaltung zu haben, wobei die Moduldateien (.iml) nicht in der Quellcodeverwaltung und in der .gitignore-Datei enthalten sind. Die Hauptsache, die sich in der .ipr-Datei regelmäßig von selbst zu ändern scheint, ist die Reihenfolge der gemeinsam genutzten Build-Konfigurationen, aber vielleicht können wir die Informationen darüber, wie diese eingerichtet werden, einfach separat teilen. Ich bin mir nicht ganz sicher, wie IDEA mit so etwas umgeht, wenn es nur einige seiner Dateien hat, insbesondere bei einer neuen Kasse.
Ich hoffe, es gibt eine offensichtliche (oder nicht offensichtliche) Lösung, die wir verpasst haben, vielleicht die enorme Anpassbarkeit, die Git und IDEA beide zu haben scheinen. Aber es scheint, als könnten wir unmöglich das einzige Team sein, das dieses Problem hat. Zu den Fragen, die bei Stack Overflow ähnlich sind , gehören 3495191 , 1000512 und 3873872 , aber ich weiß nicht, da sie genau dasselbe Problem sind, und vielleicht kann sich jemand die Vor- und Nachteile für die verschiedenen Ansätze ausdenken , die ich habe skizzierte Ansätze, die in den Antworten auf diese Fragen aufgeführt sind, oder Ansätze, die sie empfehlen.