Ich möchte ein Projekt hinzufügen, das in diesem Fall in Netbeans erstellt wird, aber diese Frage ist für die meisten IDEs allgemein. Es ist einfach, was ich in mein Repository aufnehmen soll. Zum Beispiel erstellt Netbeans einen Ordner nbproject, Eclipse erstellt einen Ordner .settings usw. Sollte ich diese in mein Repository aufnehmen, welche Vor- und Nachteile hat das Einschließen oder Nichteinschließen projektspezifischer Einstellungen?
In diesem Fall handelt es sich um ein persönliches Projekt, daher kann ich mir nicht vorstellen, dass andere Leute damit beginnen, daran zu arbeiten. Es wäre jedoch schön, ein Minimum an Projekteinstellungen hinzuzufügen, damit das Projekt selbst problemlos auf verschiedenen Computern arbeiten kann.
programming-practices
git
project
maintainability
Daniel Figueroa
quelle
quelle
Antworten:
Es hängt wirklich davon ab, um welche Daten es sich handelt, und sollte von Fall zu Fall entschieden werden, möglicherweise sogar für einzelne Dateien. Schauen Sie sich den Inhalt dieser Dateien an. Meistens kann man sagen, was sie bedeuten. Dinge wie die Position und Größe der IDE-Fenster möchten Sie in der Quellcodeverwaltung nicht.
Einige der IDE-Projektdateien sind jedoch wichtige Projektmetadaten. Ich kenne Netbeans nicht gut, aber für Eclipse teilt die .project-Datei der IDE mit, wie das Projekt heißt, dass es sich um ein Java-Webprojekt usw. handelt, und die .classpath-Datei enthält Informationen zu Quellordnern und -bibliotheken. Einige Dateien im Verzeichnis .settings können gleich wichtig sein, z. B. enthält org.eclipse.core.resources.prefs Informationen darüber, welche Codierung für welche Dateien verwendet werden soll.
Als Projektmetadaten verdient dieses Zeug eine Versionierung in der Quellcodeverwaltung.
Einige IDEs können Projektmetadaten von anderen IDEs importieren. Es wäre sogar noch besser, es in einer Form zu haben, die nicht an eine bestimmte IDE gebunden ist.
Für Java gibt es so etwas: Maven . Es legt strenge Konventionen für die Projektstruktur fest und ermöglicht es Ihnen, Projektmetadaten (z. B. Bibliotheksabhängigkeiten) an einem Punkt anzugeben (eine Datei namens pom.xml, die sich im Hauptverzeichnis des Projekts und natürlich in der Quellcodeverwaltung befindet). Es gibt Plugins, die dann IDE-Projektdateien aus der Maven-Konfiguration erstellen, und andere, die den Projekterstellungsprozess automatisieren oder so gut wie alles tun können. Manchmal fühlt es sich so an, als würde es die Dinge unnötig komplex machen und das Lernen dauert einige Zeit, aber die Vorteile sind es im Allgemeinen wert.
quelle
Dies hängt wirklich davon ab, welche Art von Informationen Sie im Repository haben möchten. Wenn Sie möchten, dass alles bis zu den Dateien funktioniert, die Sie zum Zeitpunkt des Commits geöffnet und bearbeitet haben, und Sie der einzige sind, der das Repository verwendet, schreiben Sie alles fest, wissen Sie jedoch, dass es möglicherweise nicht auf einem anderen Computer funktioniert .
Wenn Sie Ihren Code für andere Personen freigeben möchten, die möglicherweise nicht dieselbe IDE verwenden, schreiben Sie den Code selbst ohne projektspezifische Implementierung fest.
Wenn Sie wissen, dass jeder dieselbe IDE verwendet, können Sie wahrscheinlich alles einschließen, was nicht rechnerspezifisch ist, dh alle Einstellungsdateien / -ordner nur für die IDE selbst. Auf diese Weise können sie das Projekt bereits als das importieren IDE erwartet es.
quelle
Artefakte, die Ihrer Entwicklung helfen und für den Build / Release oder das Projekt selbst nicht von Nutzen sind, sollten nicht enthalten sein. Das Repo sollte sauber und ordentlich sein und nur die Dinge enthalten, die für das Projekt relevant sind, nicht Ihre Umgebung . Das Repo sollte Ihre Gewohnheiten nicht kennen. Und zweitens wird es Sie unnötig nerven, wenn Sie etwas Ähnliches tun
git status
... aber hey, ich habe nie Änderungen vorgenommen ... ahh, ignorieren Sie das.Lassen Sie mich ein praktischeres Beispiel geben (ich werde es
git
hier als Werkzeug verwenden):Sie möchten niemals, dass ein (rekursives) Submodul in Ihrem Haupt-Repo ein IDE-spezifisches Material enthält (dies kann auch die Hauptprojektumgebung beeinträchtigen), da Sie sich nur um den Code kümmern, der von jemand anderem (oder Ihnen) geschrieben wurde und ist der Verwendung innerhalb des aktuellen Projekts. Nicht die Umgebung, in der es entwickelt wurde. Sie wollen das wahrscheinlich auch nicht jemand anderem antun.
Um Ihre Einstellungen auf verschiedenen Computern verwenden zu können, empfehle ich, in Ihrer IDE zu stöbern und zu prüfen, welche Unterstützung sie für solche Dinge bietet. Emacs hat
init
und Emacs Server auch. Oder Sie können ein benutzerdefiniertes Makro oder Skript (.sh
) erstellen, das das Setup automatisch ausführt.quelle
Wenn es sich um ein persönliches Projekt handelt, speichere ich die Einstellungen in der Quellcodeverwaltung. Persönlich tötet nichts meine Motivation für ein Projekt mehr als das erneute Einrichten einer Entwicklungsumgebung.
Wenn mehr Leute involviert sind, setze ich diese Dinge nicht in die Quellcodeverwaltung ein. In meinem Team wird eine Mischung aus IntelliJ, Sublime Text und Eclipse verwendet. IDE-Dateien sorgen nur für Unordnung und führen dazu, dass Commits für eine IDE, die Sie nicht verwenden, von anderen Personen auf diese Dateien übertragen werden.
Außerdem sollte Ihr Projekt sowieso nicht von der IDE abhängig sein. Ein Build-Server startet Eclipse nicht, um Ihr Produkt zu kompilieren. Daher sollte es bereits IDE-frei sein. Ein kleinerer Punkt: Es beseitigt die persönliche Organisation innerhalb des Projekts. Zum Beispiel verwende ich in IntelliJ gerne viele Module in unserem Projekt. Niemand, der IntelliJ verwendet, macht sich darüber Sorgen, da wir die IML-Dateien (Moduldateien) nicht speichern.
Wenn Ihr Team dieselbe IDE verwendet, ist es besser, aber dann schreibt jemand einen fehlerhaften .classpath-Eintrag fest, weil er einen absoluten Pfad verwendet hat. Jetzt macht sich jeder, der die IDE verwendet, Sorgen.
Sicher, der Nachteil ist, dass es mehr Setup gibt, wenn jemand das Projekt auscheckt. Ich denke es lohnt sich. Wir verwenden Ivy für das Abhängigkeitsmanagement und verfügen über Informationen zu Einrichtung, Abhängigkeiten usw. Trotz dieser Vorabkosten halte ich es für sinnvoll, die IDE-Einstellungen außerhalb der Quellcodeverwaltung zu halten.
quelle