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.
Antworten:
Sie können die verzeichnisbasierte Projektstruktur von IDEA verwenden , bei der die Einstellungen im IDE-Verzeichnis anstelle der IPR-Datei gespeichert werden. Es bietet eine genauere Kontrolle darüber, was in der Versionskontrolle gespeichert ist. Die IML-Dateien sind weiterhin vorhanden, sodass die zufälligen Änderungen in ihnen nicht gelöst werden (möglicherweise außerhalb der Quellcodeverwaltung?), Aber das Teilen von Dingen wie Codestil und Inspektionsprofilen ist einfach, da jede von ihnen vorhanden sein wird in einer eigenen Datei unter dem Verzeichnis .idea.
quelle
Aus dem offiziellen DOC: http://devnet.jetbrains.com/docs/DOC-1186
Ich habe es in meinen .gitignore gelegt:
quelle
Eine offizielle Antwort ist verfügbar . Angenommen, Sie verwenden das moderne (und jetzt standardmäßige)
.idea
Ordnerprojektformat:.idea/workspace.xml
(was benutzerspezifisch ist).idea/tasks.xml
(was benutzerspezifisch ist)Diese .gitignore-Beispieldatei ist möglicherweise eine nützliche Referenz. Sie sollten jedoch den obigen Link lesen, um zu verstehen, warum diese Einträge angezeigt werden, und um zu entscheiden, ob Sie sie benötigen.
Persönlich ignoriere ich die
.idea/find.xml
Datei auch, da sich dies jedes Mal zu ändern scheint, wenn Sie einen Suchvorgang ausführen.quelle
Ich habe workspace.xml aus der Quellcodeverwaltung entfernt (+ zu .gitignore hinzugefügt).
quelle
Unser Team checkt keine pfadspezifischen IntelliJ-Dateien ein. Wir gehen davon aus, dass die Benutzer die IDE verwenden und ein Projekt einrichten können. IntelliJ-Dateien werden in die Änderungsliste "Ignoriert" aufgenommen.
AKTUALISIEREN:
Die Antwort ist jetzt einfacher, da ich Maven und seine Standardverzeichnisstruktur verwende.
IntelliJ sollten alle Dateien in ignorieren gefragt werden
/.svn
,/.idea
und/target
Ordner. Alles, was sich auf die Pfadinformationen einer Person bezieht, wird in gespeichert/.idea
.Alles andere ist faires Spiel, um sich Subversion oder Git zu widmen.
quelle
Nur um einen anderen Ansatz zu teilen, den mein Team verwendet hat: Verschieben Sie einfach alle IDE-bezogenen Dateien an einen anderen Speicherort, den IntelliJ nicht erkennt, und erstellen Sie ein Skript, um sie an den gewünschten 'aktiven' Speicherort zu kopieren, der von GIT ignoriert wird.
Der Vorteil dieses Ansatzes besteht darin, dass Sie die Option beibehalten haben, IDE-Einstellungen über die Versionskontrolle freizugeben. Der einzige Nachteil besteht darin, dass Sie entscheiden müssen, wann das Skript ausgeführt werden soll (wahrscheinlich einmal pro Arbeitsbereich-Klon oder wenn Änderungen gewünscht werden), und Sie können dies automatisieren, indem Sie das Skript in Ihren Erstellungsprozess oder Post-Merge-Hook integrieren.
Dieser Ansatz basiert darauf, dass IntelliJ nur bestimmte Speicherorte nach seinen Einstellungsdateien durchsucht, sodass er auch für Framework-Konfigurationsdateien gilt. Tatsächlich haben wir die Grails .properties-Datei auf die gleiche Weise ignoriert, damit Entwickler ihre lokalen Konfigurationsänderungen nicht versehentlich einchecken.
quelle