Zeitgleiches Arbeiten am Code mit mehreren Personen?

  • Themenstarter beginnerproject
  • Beginndatum
B

beginnerproject

Mitglied
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!
 
L

LimDul

Top Contributor
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?
 
kneitzel

kneitzel

Top Contributor
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, ....
 
L

LimDul

Top Contributor
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
 
W

White_Fox

Top Contributor
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.
 
mrBrown

mrBrown

Super-Moderator
Mitarbeiter
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?
 
bueges

bueges

Mitglied
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
 
W

White_Fox

Top Contributor
ist doch das gleich wie git (und andere), nur in Grün mit mehr Magie und weniger Kontrolle?
Nein, git mußt du selber einchecken. Das was ich meine aktualisiert sich automatisch, sofern es mögich ist. Arbeiten auf einem Snapshot nur dann, wenn nix aktuelleres da ist. Und es ist auch keine Versionskontrolle.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Erste Schritte Sinvolle Architektur und paketübergreifendes Arbeiten Java Basics - Anfänger-Themen 2
L Brauche Hilfe beim arbeiten mit Konstruktoren Java Basics - Anfänger-Themen 20
F Arbeiten mit Arrays Java Basics - Anfänger-Themen 2
B Kann man eine Tabelle in Eclipse erzeugen und damit arbeiten? Java Basics - Anfänger-Themen 8
P Erste Schritte Arbeiten mit Klassen Java Basics - Anfänger-Themen 8
K Interface: wie damit arbeiten Java Basics - Anfänger-Themen 4
G Graphische Darstellung (Arbeiten mit einem Window) Java Basics - Anfänger-Themen 1
N Mit der gleichen BlockingQueue in zwei Klassen arbeiten Java Basics - Anfänger-Themen 12
M Neuen Ordner im Überverzeichnis erstellen, und dadrin arbeiten Java Basics - Anfänger-Themen 4
M Input/Output Arbeiten mit extrem vielen Dateien Java Basics - Anfänger-Themen 8
A Mit Enums in Methoden arbeiten Java Basics - Anfänger-Themen 8
D Wie mit Bibliotheken ohne API arbeiten? Java Basics - Anfänger-Themen 16
S Arbeiten mit einer CSV Datei und Überprüfen von einem Datum in einem Textfeldern Java Basics - Anfänger-Themen 4
M Erste Schritte Arbeiten mit SuM (Stifte und Mäuse) Java Basics - Anfänger-Themen 20
S Arbeiten mit arrays Java Basics - Anfänger-Themen 4
D Arbeiten mit Twitter4J Java Basics - Anfänger-Themen 2
R mit klassen-instanzen arbeiten in packages Java Basics - Anfänger-Themen 10
H Arbeiten mit Properties Java Basics - Anfänger-Themen 8
hdi Worst-Performance-Award für Arbeiten mit ListModel Java Basics - Anfänger-Themen 7
G Mit Javadoc arbeiten Java Basics - Anfänger-Themen 13
L Arbeiten mit Vectoren in einer Hashtable Java Basics - Anfänger-Themen 2
Y Mit Interface arbeiten Java Basics - Anfänger-Themen 9
G mit Threads arbeiten Java Basics - Anfänger-Themen 2
N Herangehensweise - mit vielen Variablen arbeiten Java Basics - Anfänger-Themen 6
M Arbeiten mit ArrayList Java Basics - Anfänger-Themen 9
G mit Strings arbeiten Java Basics - Anfänger-Themen 7
G in Java mit Schnittstellen arbeiten Java Basics - Anfänger-Themen 5
G Arbeiten mit einem Fenster Java Basics - Anfänger-Themen 11
G erstes Arbeiten mit Collections Java Basics - Anfänger-Themen 17
G erstes Arbeiten mit Packages Java Basics - Anfänger-Themen 2
C Arbeiten mit MDI Java Basics - Anfänger-Themen 2
J Arbeiten mit Strings Java Basics - Anfänger-Themen 5
E Aus Datei einlesen und weiter mit arbeiten! Java Basics - Anfänger-Themen 15
Z In Bild-dateien(jpg) zeichnen und arbeiten. Java Basics - Anfänger-Themen 4
A Arbeiten mit mehreren Klassen Java Basics - Anfänger-Themen 4
I Erklärung zum Java Code Java Basics - Anfänger-Themen 2
T Programmablaufsplaninterpretation in Code umformen Java Basics - Anfänger-Themen 1
dieter000 Kurze Frage kann mir ejmand kurz diesen Code erklären, bzw wie man die zeilen erklärt und so Java Basics - Anfänger-Themen 1
AlexVo String zu Java Anweisung getString("*** java code ***") Java Basics - Anfänger-Themen 19
M ISBN-Code Java Basics - Anfänger-Themen 26
S Wie kann ich bei diesem Code erreichen, das als Ergebnis hier 15 herauskommt? Java Basics - Anfänger-Themen 23
N Kann man den Code vereinfachen? Java Basics - Anfänger-Themen 25
marcooooo Code erklären Java Basics - Anfänger-Themen 28
marcooooo Code erklären Java Basics - Anfänger-Themen 4
S Advent of Code Day4 Java Basics - Anfänger-Themen 4
B Nach eingefügtem Code erkennt Compiler keine Instanzvar und meldet SyntaxError Java Basics - Anfänger-Themen 2
Gaudimagspam Caesars Code entziffern in Java Java Basics - Anfänger-Themen 8
Lukasbsc Wie kann ich meinen Code optimieren? Java Basics - Anfänger-Themen 4
NeoLexx equals()-Methode Verständnis Frage anhand Code Beispiel Java Basics - Anfänger-Themen 22
I Input/Output Code wird doppelt ausgeführt Java Basics - Anfänger-Themen 3
T Main startet nicht bei vorgegebenen Code Java Basics - Anfänger-Themen 41
B Frage zum Code verständnis im Resultat Java Basics - Anfänger-Themen 10
J Fehler im Code, aber ich weiß nicht wieso! Java Basics - Anfänger-Themen 6
S Mehrere Probleme im Code Java Basics - Anfänger-Themen 7
M Code nur für Cracks? Crack the Passwort Übung Java Basics - Anfänger-Themen 7
parrot Code entferneJedeZweiteZiffer Java Basics - Anfänger-Themen 6
G Code kürzen Java Basics - Anfänger-Themen 5
Bluedaishi Source Code Signieren Java Basics - Anfänger-Themen 22
L Best Practice Code Refactoring für Methoden mit fast gleicher Aufbau Java Basics - Anfänger-Themen 6
L Best Practice Code refactern Java Basics - Anfänger-Themen 30
G code kürzen Java Basics - Anfänger-Themen 16
A Code umschreiben Java Basics - Anfänger-Themen 6
Torsten.E JavaFX mit Visual Studio Code verwenden Java Basics - Anfänger-Themen 1
C Beispiel-Code mit Pair wird nicht compiliert. Java Basics - Anfänger-Themen 8
X Reverse algorithm engineering (Java code) Java Basics - Anfänger-Themen 6
T Bufferedwriter code Nullpointerexception Java Basics - Anfänger-Themen 4
V Switch Methode macht Code kaputt Java Basics - Anfänger-Themen 18
R Was muss ich an meinem Code ändern? Java Basics - Anfänger-Themen 2
S Bewertet meinen Code - Part 1 Java Basics - Anfänger-Themen 8
M Java Code Verständnis Java Basics - Anfänger-Themen 4
M Java Code Verständnis Java Basics - Anfänger-Themen 2
J Ich brauche Hilfe bei einem Code (Variablen speichern) Java Basics - Anfänger-Themen 29
F Hierarchi im code darstellen Java Basics - Anfänger-Themen 11
S Struktogramm zu Code Java Basics - Anfänger-Themen 4
F Code kürzen Java Basics - Anfänger-Themen 9
J Fragen zum Code aus dem Buch "Schrödinger programmiert Java 2.te Ausgabe" Java Basics - Anfänger-Themen 6
S Hilfe bei meinem Code [Schleife]? Java Basics - Anfänger-Themen 5
S Brauche hilfe in Java [Fehler in mein Code]? Java Basics - Anfänger-Themen 2
J Array eintrag mit möglichst wenig code lösen Java Basics - Anfänger-Themen 16
N SelectionSort ; Code erläutern Java Basics - Anfänger-Themen 13
B HTML Datei einlesen und HTML Code in String wandeln Java Basics - Anfänger-Themen 19
B Prüfen, ob Country Code in Europa ist? Java Basics - Anfänger-Themen 24
KopaCoda Getter mehrfach aufrufen -> ist das guter code? Java Basics - Anfänger-Themen 3
B UML Klassen Diagramm zu Java Code Programmieren und ausführen Java Basics - Anfänger-Themen 21
O I/O Code Gerüst vorgegeben Java Basics - Anfänger-Themen 30
R Dieser Code sagt mir nichts... Java Basics - Anfänger-Themen 4
C Klassendiagramm aus Java-Code entwickeln Java Basics - Anfänger-Themen 3
A Eine Krone in der Textausgabe - Mein Code Java Basics - Anfänger-Themen 11
B HTML Code in XML speichern Java Basics - Anfänger-Themen 3
J Variablen Hilfe bei diesem Code Java Basics - Anfänger-Themen 6
H projekt 1 code schöner schreiben. Java Basics - Anfänger-Themen 25
R Code Verkürzen? Java Basics - Anfänger-Themen 19
B Interpreter-Fehler Code verstehen und Compilerfehler Java Basics - Anfänger-Themen 2
H Interface Hilfe mit Code Java Basics - Anfänger-Themen 4
C Verbesserungsvorschlag für effizienteren Code - (Project Euler10) Java Basics - Anfänger-Themen 26
D Erste Schritte Code verstehen - HashSet Java Basics - Anfänger-Themen 8
B HTML Code / Seite auslesen und JAVA Objekte erstellen Java Basics - Anfänger-Themen 12
C unverständlicher Code Attribute ohne Datentyp, wie geht das? Java Basics - Anfänger-Themen 8
H Code erläutern Java Basics - Anfänger-Themen 35
T Java Code erklären Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Anzeige

Neue Themen


Oben