Subversion IDE und SVN

P

ProDevelopi

Gast
Was ist best practice im Umgang mit IDEs und SVN?
Die IDE mit in das SVN hochladen so das jeder eine fertig konfigurierte Entwicklungsumgebung nach dem auschecken vorfindet? Die Vorteile liegen dabei ja auf der Hand.
 
M

maki

Gast
IDEs gehören nicht ins SVN.
Eclipse braucht 2 Plugins (subversive + connectors) um mit SVN umgehen zu können, ist schnell erledigt.
 
P

ProDevelopi

Gast
Hmm... aber wie soll man das denn dann machen mit den IDEs? Wenn man sie nicht einchecken soll in das SVN?

Zum Beispiel wenn die Projekte Abhängigkeiten haben.
Mit einer eingecheckten IDE hat doch jeder sofort das Workspace, die IDE Einstellungen mit Code Formatting und alle anderen möglichen Libs und Projekte. (z.B. log4j.jar).
 

tfa

Top Contributor
Die Projekte gehören ins Repository. Abhängigkeiten untereinander, verwendete Libs usw. sind Bestandteile der Projekte und landen natürlich auch im SVN.
 
P

ProDevelopi

Gast
Ok, also eine IDE soll man also nicht einchecken? Aber das verstehe ich nicht, denn es sollte doch jeder möglichst mit der selben IDE arbeiten um Komplikationen zu vermeiden, oder? Ich kann da wenig Nachteile erkennen.

Die Libs aber also schon einchecken? Also checke ich dann immer log4j etc. in einen lib Ordner für jedes Projekt ein.
Ich habe da mal was gelesen wo gemeint wurde, dass auch Libs nicht in das SVN gehören aber wie soll man das denn sonst machen? Jeder müsste ja dann die Abhängigkeiten selbst besorgen.
Wie machen das die großen OpenSource Projekte? Laden die dann ihre Abhängigkeiten ebenfalls mit hoch? Soll man die Versionsnummer dabei entfernen? Ansonsten müsste man bei einem Versionswechsel ja sehr viel anpassen.

Sehe ich das aber dann richtig, dass wenn man Projekte eincheckt man dann auf jeden Fall die IDE Dateien mit eincheckt?
Also die .settings, .classpath und .project natürlich bei Eclipse.
 
B

bygones

Gast
ich glaub du vermischst hier IDE und Projekte...

die Projekte gehören ins SVN, in den Projekten stehen auch die Abhängigkeiten und ihre Struktur.

Die IDE ist nur die "hülle" für deine Projekte... jeder startet die IDE, holt sich aus dem SVN die oder das Projekt(e) und kann dann in seiner IDE arbeiten.
 
P

ProDevelopi

Gast
Achso, ok, danke bygones.
Wo in Projekten stehen die Abhängigkeiten? Meinst du in der .classpath? Die .classpath hat aber ja nicht jede IDE die machen das ja unterschiedlich.
Hm...
 
B

bygones

Gast
ein team sollte mit der selben ide arbeiten....

und zb bei Nutzung von maven stehen die Abhängigkeiten in der pom, und die ist ebenso Teil des Projekts und somit im SVN
 

schalentier

Gesperrter Benutzer
ein team sollte mit der selben ide arbeiten....

Ach ach, ne gute IDE kann auch problemlos mit Eclipse .classpath/.project Files arbeiten. Die gehoeren natuerlich ins SVN. Alternativ nur die pom, wobei ich grad nicht weiss, wie gut Eclipse damit klarkommt.

Die Libs sollten schon irgendwie mit ins SVN, WENN man kein vernuenftiges Abhaengigkeitsmanagement benutzt (Maven oder ivy).
 
M

maki

Gast
Ach ach, ne gute IDE kann auch problemlos mit Eclipse .classpath/.project Files arbeiten. Die gehoeren natuerlich ins SVN. Alternativ nur die pom, wobei ich grad nicht weiss, wie gut Eclipse damit klarkommt.

Die Libs sollten schon irgendwie mit ins SVN, WENN man kein vernuenftiges Abhaengigkeitsmanagement benutzt (Maven oder ivy).
Eine pom.xml mit dem m2eclipse Plugin reicht, .settings, .classpath & .project sollten nicht eingecheckt werden bei Maven Projekten.

Dann ist es auch nicht wichtig welche IDE verwendet wird, jeder Entwickler könnte mit seiner lieblings IDE arbeiten, Eclipse & Netbeans sind kein Problem IME ;)
 
P

ProDevelopi

Gast
Danke für die zahlreichen Antworten, aber bisher hat niemand mir beantworten können, warum genau man nicht die IDE einchecken sollte.
Dadurch würde man nämlich alle Probleme lösen.

Gibt es einen ganz bestimmten Grund warum man die IDE nicht einchecken soll?
 
B

bygones

Gast
Danke für die zahlreichen Antworten, aber bisher hat niemand mir beantworten können, warum genau man nicht die IDE einchecken sollte.
Checkst du auch Windows ins Repostory ein, damit jeder das selbe Windows hat ?

Repositories sind SOURCE Verwaltungssysteme... dort haben programm etc nix zu suchen.
 

kama

Top Contributor
Hallo,

Checkst du auch Windows ins Repostory ein, damit jeder das selbe Windows hat ?
Wenn man Software Konfigurations Management konsequent betreibt macht man genau das...ob ich dafür nun Subversion nutzen würde ist wieder eine andere Frage...

Klar die Sourcen, aber dazu gehört auch die Doku eines Projektes, Benutzer Handbücher, Test Pläne + Test Daten, Projekt Pläne etc.
Dazu gehören auch die Compiler (z.B. bei Java das JDK), Werkzeuge (z.B. Maven, Ant, Gradle oder Make oder was auch immer zum Bauen Verwendung findet), Das Repository (z.B. Nexus im Falle von Maven und Konsorten), die IDE's gehören auch dazu....(Die Frage ist hier: kriegt man das Projekt gebaut auch OHNE IDE? Wenn ja, dann braucht man die IDE nicht), und in letzter Konsequenz auch das Betriebssystem....ich kenne nur sehr wenige Firmen die das tatsächlich machen....

Das wichtige Stichwort bei der ganzen Geschichte ist "Reproduzierbarkeit"....

Repositories sind SOURCE Verwaltungssysteme... dort haben programm etc nix zu suchen.
Also da wiederspreche ich jetzt mal ganz heftig....Die Programme von denen Du sprichst sind "Versionskontroll Systeme"...

Gruß
Karl Heinz Marbaise
 

schalentier

Gesperrter Benutzer
Gibt es einen ganz bestimmten Grund warum man die IDE nicht einchecken soll?

Was genau ist denn "die IDE"? Wenn du das Eclipseverzeichnis meinst, in dem auch die eclipse.exe liegt, dann spricht im Grunde nicht viel dagegen - allerdings auch nix dafuer, denn dort werden meines Wissens nach keine projektspezifischen Dinge abgelegt.

Wenn du den kompletten Workspace meinst, hast du auf jeden Fall das Problem, dass dort auch benutzerspezifische Sachen drinne liegen, wie z.B. Fensterpositionen, Perspektiveneinstellungen usw. Da ich kein Eclipse benutze, kann ich grad nicht genau sagen, aber vermutlich liegen dort auch binaere Dateien (z.B. zips) drinne, mit denen SVN nur sehr bescheiden umgehen kann.

Wenn du nun solch einen Workspace auscheckst, aendern sich diese Dateien dort, wenn du irgendwas im Eclipse tust und du hast sofort Outgoings. Werden die wieder eingecheckt, bekommen die anderen im Team Probleme beim Update, was insbesondere bei binaeren Dateien oder irgendwelchen Konfigdateien meistens einfach nur nervig ist.

Ich bin der Meinung, ins Versionskontrollsystem gehoeren nur soviele Sachen, wie unbedingt notwendig sind, um einen beliebigen Stand (tag, branch, whatever) auschecken und uebersetzen zu koennen. Natuerlich muesste man dann auch ueber JDK und die ganzen Buildtools (ant, maven, etc) nachdenken, aber dafuer reicht imho eine aktuelle README.build Datei. Eclipse + Workspace gehoeren da eindeutig nicht dazu.
 

slawaweis

Bekanntes Mitglied
@ProDevelopi
theoretisch kann man alles ins Subversion einchecken, wenn man es will. Ein Elektriker kann auch seine ganze Werkstadt in einen Bus einbauen und damit zu seinen Auftraggebern fahren. Die Erfahrung lehrt aber, dass es normalerweise nicht notwendig ist. Ich spüre, dass Du noch keine große Erfahrung mit IDEs oder Subversion hast und versucht alles in einem großen Haufen zu halten, um keine Fehler aus dem Unwissen zu machen oder die Probleme einfach zu anderen zu verschieben.

Man kann die ganze IDE einchecken, es würde auch funktionieren. Nur mit der Zeit wirst Du merken, falls Du dran bleibst, dass es so nicht einfacher wird. SVN ist eine Versionskontrolle für häufig und in kleinen Schritten veränderten Textdateien. SVN kann auch binäre Dateien verwalten, aber das ist nicht der Haupteinsatzzweck. Um die Flexibilität in der Entwicklung zu erhöhen, sollte man nur die Kernfragmente, welche sich häufig ändern und woran verschiedene Personen arbeiten, eines Projektes ins SVN einchecken. Wichtig ist auch eine Anleitung, wie man ein Projekt bei sich aufsetzt und daran teilnimmt. Das wäre z.B. eine geordnete Checkliste vom allem was man brauchen würde, wie IDE, IDE-Plugins, Libs, Tools, Aus-/Einchecken, Vorgehensweisen, Style Guide, Testprozeduren, Build-Prozesse usw. Das gehört in die Projektdokumentation. Jeder beteiligte Entwickler könnte sich dann seine IDE selber aufsetzen. Zusätzlich könnte man anhand dieser Anleitung den Entwicklungsprozess mit der Zeit verbessern.

Weiterhin sollte ein Projekt am besten unabhängig von einer IDE sein. Damit fällt es später leichter von einer IDE auf eine andere umzusteigen, falls die Anforderungen sich ändern. Das selbe gilt für Compiler, Programmbibliotheken und Hilfswerkzeuge.

Slawa
 
P

ProDevelopi

Gast
Checkst du auch Windows ins Repostory ein, damit jeder das selbe Windows hat ?
Das könnte man doch über eine VM lösen, oder? Also eine VM mit Windows und den eingerichteten Entwicklungsumgebungen? So sind dann auch die System Umgebungsvariablen die selben.

@maki:
Die Probleme mit Abhängigkeiten z.B.
Und auch wird die Zeit die ein Entwickler damit verbringt seine Entwicklungsumgebung einzurichten drastisch verkürzt.

Danke an all eure Antworten. Sehr interessante dabei und man sieht, dass bereits in diesem kleinen Kreis ein paar unterschiedliche Ansätze vorhanden sind.
Ich werde mir Gedanken über eure Ratschläge machen und sicherlich den ein oder anderen befolgen.
 
M

maki

Gast
@maki:
Die Probleme mit Abhängigkeiten z.B.
Und auch wird die Zeit die ein Entwickler damit verbringt seine Entwicklungsumgebung einzurichten drastisch verkürzt.
Welche "Abhängigkeiten" denn?
Musst da schon genauer werden, für APIs/Jars nimmt man zB. Maven, IDE einchecken bringt da gar nix.
Einrichten dauert bei mir zwischen 15 und 30 Minuten (Eclipse + Subversive Plugin & Maven Plugin, Source auschecken, bauen), ich habe die Zeit verkürzt in dem ich die richtigen Tools einsetze, dazu bin ich noch unabhängig von der IDE, Netbeans hat die Plugins schon vorinstalliert, da kann ich direkt auschecken und bauen.

Die IDE miteinchecken bringt Probleme mit sich, zB. werden die Plugin Konfigurationen teilweise im Workspace gespeichert, der Workspace hat oft aber auch hardcodierte Pfade enthalten, da kommt dann das nächste Problem, ein IDE Updatze ist plötzlich sehr aufwändig, etc. pp.

Beschreibe doch erstmal das Problem dass du lösen willst ;)
Habe ich nämlich immer noch nicht verstanden, was du mit "Abhängigkeiten" meinst...
 
Zuletzt bearbeitet von einem Moderator:

tfa

Top Contributor
Und auch wird die Zeit die ein Entwickler damit verbringt seine Entwicklungsumgebung einzurichten drastisch verkürzt
In meinem Projekt gibt es sozusagen eine eigene "Distribution" der IDE. Das heißt einer setzt sich hin, installiert Eclipse, alle nötigen Plugins, die Targetplattform, Subversion-Repositories etc. Das wird dann gezippt und auf ein allgemein verfügbares Netzlaufwerk gelegt. Jeder Entwickler nimmt sich dann diese Distribution und kann sich eventuell noch nach eigenen Wünschen weiter konfigurieren (Schriftgröße und sowas).
Die Idee, das über ein VM-Image zu machen, das man irgendwo archivieren kann, ist sicherlich auch nicht schlecht. Man muss ja kein SVN-Repository dafür verwenden.
 

Wildcard

Top Contributor
In meinem Projekt gibt es sozusagen eine eigene "Distribution" der IDE. Das heißt einer setzt sich hin, installiert Eclipse, alle nötigen Plugins, die Targetplattform, Subversion-Repositories etc. Das wird dann gezippt und auf ein allgemein verfügbares Netzlaufwerk gelegt. Jeder Entwickler nimmt sich dann diese Distribution und kann sich eventuell noch nach eigenen Wünschen weiter konfigurieren (Schriftgröße und sowas).
Dafür gibt es übrigens schon jede Menge fertiger Lösungen, man muss das nicht von Hand erledigen.
Yoxos OnDemand - Get your personalized Eclipse
Try Yoxos 5 - EclipseSource
Equinox/p2/Installer - Eclipsepedia

Den p2 Installer gibt es AFAIR auch als Webstart Version. Damit kannst du dann einfach einen Link ins Firmen Wiki setzen mit dem sich per Webstart der p2 Installer öffnet und genau das Eclipse installiert das du vorher (deklarativ) zusammengestellt hast.

Wenn keins der Tools deinen Anforderungen entspricht kannst du dir auch selbst eines bauen, mit dem p2 Director geht das sehr einfach.
Wenn das immer noch nicht reicht und du zB gleichzeitig noch den Workspace mit allem benötigtem Arbeitsmaterial füllen möchtest, dann lässt sich das gut mit Buckminster koppeln (Buckminster kann übrigens auch Eclipse Installation zusammen bauen wenn das auf eure Infrastruktur besser passt als direkt p2 zu verwenden).
 

tfa

Top Contributor
@Wildcard: Yoxos kenne ich. Ist ganz praktisch, wenn man mal Sachen ausprobieren will. Ich hatte dann aber Schwierigkeiten irgendwelche speziellen Plugins zum Laufen zu bekommen, sodass ich doch lieber beim einfachen Eclipse blieb.

Den p2 Installer gibt es AFAIR auch als Webstart Version. Damit kannst du dann einfach einen Link ins Firmen Wiki setzen mit dem sich per Webstart der p2 Installer öffnet und genau das Eclipse installiert das du vorher (deklarativ) zusammengestellt hast.
Aber wahrscheinlich werden nur Plugins installiert. Eine detaillierte Konfiguration kriegst du so nicht hin.

Wenn keins der Tools deinen Anforderungen entspricht kannst du dir auch selbst eines bauen,
Ich seh das ganz pragmatisch. Den Job, so eine neue Eclipse-Installation zusammenzustellen, muss man ca. einmal im Jahr machen. Dafür braucht man jeweils etwa eine Stunde. Wie lange dauert es, sich in p2 und Buckminster einzuarbeiten, bis ich das hinkriege, was ich haben will? Wahrscheinlich armortisiert sich das erst in 50 Jahren und da bin ich schon in Rente ;-)
Ich weiß, dass wir recht lange an Hudson/Buckminster rumgebastelt haben, bis unser CI endlich lief.
 

Wildcard

Top Contributor
Aber wahrscheinlich werden nur Plugins installiert. Eine detaillierte Konfiguration kriegst du so nicht hin.
Also, soweit ich weiß kann man mit p2 so ziemlich alles machen ausser das Betriebssystem installieren :)
Ich habe den p2 Installer noch nicht verwendet, aber da es sich wohl nur um ein Frontend auf den p2 Director handelt kannst du praktisch beliebige Konfiguration realisieren.
Ich würde mal vermuten das du erstmal nur eine Liste mit IUs benötigst um den Installer zu initialisieren.
IUs können plugins, products, features und beliebige andere Artefakte sein.
Wenn du also zB eine eigene Product Konfiguration hast, dann brauchst du dem Installer wohl nur diese IU zu übergeben

Du kannst dir auch mal das hier anschauen:
EPP Wizard Preview EclipseSource Blog
 

Neue Themen


Oben