Zeitgleiches Arbeiten am Code mit mehreren Personen?

Ich und mein Kommilitone suchen nach einer IDE, mit der wir kollaborativ, gleichzeitig und unabhängig vom Verfügbarkeitsstatus eines Hosts arbeiten können.

Da die Voraussetzung für eure Hilfe ist, dass sich der Themenstarter darum bemüht hat, selbst eine Lösung zu finden, berichte ich folgend über meine Bemühungen:

Mit IDE IntelliJ haben wir unseren Bearbeitungsstatus in Github hochgeladen.
Der große nicht akzeptable Nachteil ist, dass uns nicht bekannt ist, dass mehrere Personen eine Codepassage gleichzeitig bearbeiten.
Beim Zusammenführen der Dateien muss entschieden werden, welcher Code übernommen werden soll.

Mit IDE Visual Code Studio können wir zwar Änderungen der anderen Person in Echtzeit sichten, aber der Zugriff auf die Daten ist nur möglich, wenn der Host online ist. Sollte der Host die IDE "VS Code" schließen haben alle anderen Personen keinen Zugriff mehr.

Ich bitte um Ratschläge / Vorschläge / Ideen bzgl. meines Gesuchs nach Etwas (z.B. ein AddOn, PlugIn, Tool, IDE, Web-IDE) mit dem kollaboratives gleichzeitiges Arbeiten an Java Code ermöglich wird (ohne die oben beschriebenen Einschränkungen).

Vielen Dank!
 
Du wirst da ein paar Dinge durcheinander.

Variante a) Zwei oder mehr Leute entwickeln gleichzeitig an einem Projekt. Dafür sind so Sachen wie GIT da. Das ist dann aber normal, wenn mehrere Leute die gleiche Codestelle bearbeitet haben, dass es Konflikte gibt, die gelöst werden sollen

Variante b) Zwei Personen entwickeln gemeinsam an einer Codestelle - Pair Programming. Dann ist es aber logischerweise notwendig dass beide gleichzeitig online sind. Da gibt es mehrere Möglichkeiten, von klassischen Screensharing Tools wie Teamviewer über Lösungen wie https://www.codetogether.com/ (da gibt es auch Plugins für die meisten IDEs).

Was genau willst du von diesen beiden Varianten?
 
Also noch als Ergänzung:
Mehrere Leute arbeiten an einer Code-Passage ist ein normales Pattern. Das Merging gehört einfach mit dazu.

Man hat diverse andere Ansätze wie z.B. das Locking. Das geht aber nur, wenn es einen zentralen Master gibt. SVN, TFS, ... Das wären so Kandidaten, die das auch unterstützen ...

Aber das ist eher unschön. Bei git gibt es das nicht, denn git kennt keinen zentralen Master. Git kennt einfach nur Repositories ...

==> Beschäftigt euch im Detail mit dem Thema Merging. Und das hindert euch natürlich nicht daran, eure Aufgaben so zu planen, dass es möglichst wenig gleichzeitige Änderungen gibt ...

Gleichzeitiges Arbeiten an Source Code wo der eine sieht, was der andere macht: Da gibt es tatsächlich auch diverse Lösungen zu, aber bei sowas greife ich am liebsten immer zu Screen Sharing. Denn es kommt regelmäßig dazu, dass man dann was anderes zeigen will. Wenn Du nur den Code siehst, dann kann ich bei einer Frage nicht schnell im Browser was zeigen und so ...

Und Lösungen gibt es genug ... gerade im privaten Bereich. Teamviewer, AnyDesk, ... das wären freie Lösungen. Aber auch Kommunikationslösungen wie Skype bieten da einiges ... Oder die typischen Online Meetings wie Google Meet, Webex, ....
 
Rand-Notiz: Dank Corona kam mir übrigens beim Pair Programming gar nicht mehr in den Sinn, dass man am besten gemeinsam an einem Rechner sitzt
 
Aber das ist eher unschön. Bei git gibt es das nicht, denn git kennt keinen zentralen Master. Git kennt einfach nur Repositories ...
Git kennt aber das Cherry Picking. Gerade weil git nur Repositorys kennt, ist das behandeln gemeinsam bearbeiteter Codeteile umso wichtiger. Aber die unterschiedlich, möglicherweise durchaus gegensätzlich, bearbeiteten Codestellen wieder zusammenzuflicken ist sowieso eine Sache wo ich nicht sehe, wie man die automatisieren können sollte. Nehmen wir mal an, zwei Entwickler haben Passage a und b eingefügt, beide ändern den Wert einer Variable, die vorher schon da war. Welcher Abschnitt soll zuerst kommen, welcher als zweiter? Oder muß noch eine dritte Änderung (z.B. eine Kopie des Variableninhalts) eingebaut werden, um beide Passagen benutzen zu können? Das kann man nicht automatisieren, ohne daß der Computer Code verstehen und produzieren kann (aber dann bräuchte man die zwei Programmierer nicht mehr).

@beginnerproject
Du suchst keine andere IDE. Mach einfach mal folgendes: Öffne in der IDE deiner Wahl eine Datei, schreib was herein, und speichere sie. Während die Datei in der IDE geöffnet ist, nimmst ein anderes Programm (z.B. Notepad++ oder halt den nächstbesten Editor), öffnest die Datei ebenso (allein daß das überhaupt funktioniert, in früheren Zeiten hätte es eine Warnung vom Betriebssystem gegeben), schreibst irgendwas rein und speicherst. Anschließend siehst du dir die Datei wieder in der IDE an.
Bei jeder halbwegs modernen IDE sollte jetzt eine Meldung kommen, daß die Datei extern bearbeitet wurde, verbunden mit der Frage ob die Datei neu geladen werden soll.

Was ich damit zeigen will: Eine IDE ist vornehmlich ein Bearbeitungswerkzeug. Bearbeiten und Versionieren sind jedoch zwei verschiedene Dinge.

Ich würde es wie folgt versuchen: Vergeßt es, euch auf eine IDE zu einigen. Es hat sowieso jeder andere Vorlieben, und solche organisatorischen Dinge sind auch nicht unbedingt an eine IDE gebunden. Viele IDEs unterstützen z.B. auch eine individuelle Codeformatierung. Manche mögen es, mich aber macht es vollkommen wahnsinnig, wenn z.B. die öffnende '{' in einer neuen Zeile steht.
Und dann setzt euch einen Server auf oder nutzt einen Repositoryhost wie Gitlab. Git würde ich (auch wenn ich selber noch nie damit gearbeitet habe wie ich zugeben muß) bevorzugen, da es für solche Kollaborationen und nebenläufige Entwicklungsstränge ein paar nette Dinge anbietet. Es wird ja nicht umsonst z.B. in der Linuxentwicklung eingesetzt bzw. sogar dort entwickelt.
Jenkins würde ich mir auch mal ansehen. Ich habe bisher nur alleine programmiert, nie mit anderen zusammen, deshalb rede ich hier ein wenig wie ein Blinder von der Farbe.

Ich kann dir aber sagen, daß du da gerade ein sehr weites Feld aufmachen willst. Arbeitsabläude und deren Organisation sind Dinge, mit denen sich in großen Firmen ganze Abteilungen befassen. Und die klügste Entscheidung fordert auch hier Erfahrung und Kenntnis über Werkzeuge, deren Benutzung und das Vorhaben an sich.

Es gibt (für andere Bereiche als Softwareentwicklung) Systeme, da arbeitet man zwar normalerweise auf einer Datenbank, wenn diese jedoch nicht verfügbar ist hat man einen Snapshot des letzten bekannten Standes, mit dem man weiterarbeiten kann. Ich weiß nicht ob Jenkins so etwas mitbringt, aber es würde mich sehr wundern wenn es so etwas für SW-Entwicklung nicht gäbe. Das wäre das erste Mal, das Elektronik/Mechanik der Programmiererei mal irgendwo vorraus wären.
 
Git kennt aber das Cherry Picking.
cherrypick ist aber noch mal was anderes, das ist ja ganz explizit kein Mergen der beiden gesamten Änderungen, sondern nur ein Auswählen eines einzelnen Änderung. Sollte man nur nutzen, wenn es sich nicht vermeiden lässt, für einen „normalen“ Workflow braucht man das eher nicht.


Es gibt (für andere Bereiche als Softwareentwicklung) Systeme, da arbeitet man zwar normalerweise auf einer Datenbank, wenn diese jedoch nicht verfügbar ist hat man einen Snapshot des letzten bekannten Standes, mit dem man weiterarbeiten kann. Ich weiß nicht ob Jenkins so etwas mitbringt, aber es würde mich sehr wundern wenn es so etwas für SW-Entwicklung nicht gäbe. Das wäre das erste Mal, das Elektronik/Mechanik der Programmiererei mal irgendwo vorraus wären.
ist doch das gleich wie git (und andere), nur in Grün mit mehr Magie und weniger Kontrolle?
 
Hallo zusammen,
ich verwende als IDE auch Intellij. Da wir auch Corona bedingt im HomeOffice arbeiten müssen, verwenden wir das Plugin CodeWithMe. Ich verwende allerdings die Ultimate Variante von Intellij. Kann als nicht sagen ob es auch mit der Community Version funktioniert
 

Neue Themen


Zurück
Oben