{"id":6651,"date":"2015-10-30T06:33:37","date_gmt":"2015-10-30T05:33:37","guid":{"rendered":"https:\/\/www.herr-rau.de\/wordpress\/?p=6651"},"modified":"2023-09-01T10:30:29","modified_gmt":"2023-09-01T08:30:29","slug":"subversion-mit-bluej-die-fortsetzung","status":"publish","type":"post","link":"https:\/\/www.herr-rau.de\/wordpress\/2015\/10\/subversion-mit-bluej-die-fortsetzung.htm","title":{"rendered":"Subversion mit BlueJ, die Fortsetzung"},"content":{"rendered":"<div style='text-align:right;'><small>(<a href='https:\/\/www.herr-rau.de\/wordpress\/2015\/10\/subversion-mit-bluej-die-fortsetzung.htm#comments'>9 Kommentare.<\/a>)<\/small> <\/div>\n<p>Ich habe vor ein paar Jahren <a href=\"https:\/\/www.herr-rau.de\/wordpress\/2012\/06\/subversion-mit-bluej-mit-beispielprojekt-sequenzdiagramm.htm\">schon mal \u00fcber Subversion mit BlueJ geschrieben,<\/a> inzwischen habe ich das mit Sch\u00fclern weiter erprobt und mit Peter Brichzin einen Workshop dazu auf der INFOS15 gehalten. Subversion: So hei\u00dft ein verbreitetetes System, mit dem verschiedene Autoren gleichzeitig an einem aus vielen Dateien bestehenden Progammierprojekt arbeiten k\u00f6nnen, so dass jeder jeweils die aktuelle Fassung der anderen Teammitglieder zur Verf\u00fcgung hat.<br>\nF\u00fcr den Workshop habe ich eine kleine Brosch\u00fcre gemacht (ich mag Brosch\u00fcren), hier ist deren Inhalt, falls mal jemand danach sucht.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Teil 1 &#8211; Auschecken<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Teamarbeits-Men\u00fc einschalten<\/h3>\n\n\n\n<p>Bevor man den in BlueJ integrierten SVN-Client benutzen kann, muss man ihn frei\u00adschalten. Dazu muss man im Men\u00fc unter &#8222;Werkzeuge &gt; Einstellungen\u2026 &gt; Inter\u00adface&#8220; ein H\u00e4kchen setzen bei &#8222;Teamarbeitswerkzeuge anzeigen&#8220;.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Erstmalig ein BlueJ-Projekt aus einem Reposito\u00adry aus\u00adchecken<\/h3>\n\n\n\n<p>Es ist egal, ob man an dieser Stelle mit einem bereits ge\u00f6ffneten BlueJ-Projekt arbeitet oder nicht, die neu heruntergeladenen Dateien werden auf jeden Fall als neues, eige\u00adnes BlueJ-Projekt gespeichert.<\/p>\n\n\n\n<p>Nach Auswahl des Men\u00fcpunkts &#8222;Werkzeuge &gt; Teamarbeit &gt; Arbeitskopie erstel\u00adlen&#8230;&#8220; muss man die Serverangaben eingeben:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"379\" height=\"452\" src=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/svn_anmelden.png\" alt=\"svn_anmelden\" class=\"wp-image-6652\" srcset=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/svn_anmelden.png 379w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/svn_anmelden-126x150.png 126w\" sizes=\"auto, (max-width: 379px) 100vw, 379px\" \/><\/figure>\n\n\n\n<p>Das Passwort braucht man bei \u00f6ffentlichen Repositories nur f\u00fcr das Hochladen; aller\u00addings verlangt BlueJ auf jeden Fall die Eingabe eines (auch beliebigen) Benutzerna\u00admens.<\/p>\n\n\n\n<p>Danach kann man sich mit dem Knopf &#8222;Anzeigen&#8220; die unter dieser Adresse gespei\u00adcherten BlueJ-Projekte zeigen lassen:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"523\" height=\"285\" src=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/svn_projektauswahl.png\" alt=\"svn_projektauswahl\" class=\"wp-image-6653\" srcset=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/svn_projektauswahl.png 523w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/svn_projektauswahl-150x82.png 150w\" sizes=\"auto, (max-width: 523px) 100vw, 523px\" \/><\/figure>\n\n\n\n<p>Nach der Auswahl des BlueJ-Projekts, das man herunterladen m\u00f6chte, wird man gebe\u00adten, einen Speicherort daf\u00fcr anzugeben. Das hei\u00dft, die Dateien werden auf jeden Fall in einem neuen BlueJ-Projekt gespeichert.<\/p>\n\n\n\n<p><strong>Tipps:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Das Auschecken erfolgt \u00fcblicherweise nur einmal am Anfang. Da\u00adnach l\u00e4dt man nicht mehr das ganze Projekt neu vom Server herunter, sondern aktualisiert nur die auf dem Server ge\u00e4nderten Dateien oder f\u00fcgt eigene \u00c4nde\u00adrungen der Version auf dem Server hinzu.<\/li>\n\n\n\n<li>Ausnahme: Wenn sp\u00e4ter einmal irgendetwas mit dem eigenen BlueJ-Projekt nicht funktioniert oder zu kompliziert wird, dann ist es manchmal einfacher, die Datei\u00aden wieder ganz neu vom Server auszuchecken und mit einem neuen BlueJ-Pro\u00adjekt weiterzuarbeiten. Man muss nur daran denken, das alte zu l\u00f6schen.<\/li>\n\n\n\n<li>Fehlerquelle: Beim Speichern reicht ein Laufwerksbuchstabe nicht, man muss einen Ordner angeben, in den dann der BlueJ-Projektordner gespeichert wird. Wenn man den Namen eines bereits existierenden BlueJ-Projekts angibt, kann das dazu f\u00fchren, dass ein BlueJ-Projekt innerhalb eines anderen gespeichert wird (als package), was alles nur komplizierter macht.<\/li>\n<\/ul>\n\n\n\n<p><em>Aufgabe: Checken Sie beliebige Projekte aus dem Server aus, aber auf jeden Fall das BlueJ-Projekt &#8222;SVN Aufgabe 1&#8220; f\u00fcr den n\u00e4chsten Schritt.<\/em><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Teil 2 &#8211; Erstes Arbeiten<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Benutzername und Passwort eingeben<\/h3>\n\n\n\n<p>Checken Sie das BlueJ-Projekt &#8222;SVN Aufgabe 1&#8220; aus.<\/p>\n\n\n\n<p>Bisher waren Benutzername und Passwort egal, aber ab diesem Zeitpunkt m\u00fcssen Sie konkrete Daten eingeben. W\u00e4hlen Sie dazu im Men\u00fc &#8222;Werkzeuge &gt; Teamarbeit &gt; Teamarbeitseinstellungen&#8230;&#8220; und erg\u00e4nzen Sie die fol\u00adgenden Informationen:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"379\" height=\"452\" src=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/svn_teamarbeitseinstellungen.png\" alt=\"svn_teamarbeitseinstellungen\" class=\"wp-image-6654\" srcset=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/svn_teamarbeitseinstellungen.png 379w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/svn_teamarbeitseinstellungen-126x150.png 126w\" sizes=\"auto, (max-width: 379px) 100vw, 379px\" \/><\/figure>\n\n\n\n<p>Der Benutzer ist \u201efortbildung\u201c, das Passwort erfahren Sie m\u00fcndlich.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Aktualisieren (update) und Abgeben (commit)<\/h3>\n\n\n\n<p><em>Aufgabe: Legen Sie in &#8222;SVN Aufgabe 1&#8220; eine neue Klasse an, die das Interface &#8222;Tier&#8220; implemen\u00adtiert. Die Klasse &#8222;Loewe&#8220; kann als Beispiel dienen. Sie machen es sich etwas einfacher, wenn Sie ein exotisches Tier w\u00e4hlen, weil Sie dadurch Konflikte mit anderen Projekt\u00admitarbeitern vermeiden.<\/em><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"561\" height=\"326\" src=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/svn_aufgabe1.png\" alt=\"svn_aufgabe1\" class=\"wp-image-6655\" srcset=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/svn_aufgabe1.png 561w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/svn_aufgabe1-150x87.png 150w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/svn_aufgabe1-550x320.png 550w\" sizes=\"auto, (max-width: 561px) 100vw, 561px\" \/><\/figure>\n\n\n\n<p>Schritt 1: Bevor Sie Ihre Klasse hochladen, sollten Sie schauen, ob es inzwischen viel\u00adleicht schon Beitr\u00e4ge anderer Projektmitarbeiter gibt. W\u00e4hlen Sie dazu im seitlichen Men\u00fc unten &#8222;Aktualisieren\u2026&#8220; (englisch: &#8222;Update\u2026&#8220;). Wenn inzwischen jemand an\u00adderes die Klasse &#8222;Kakapo&#8220; angelegt hat (ein flugunf\u00e4higer Papagei auf Neuseeland), wird Ih\u00adnen folgender Dialog angezeigt:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"388\" height=\"294\" src=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/svn_aktualisieren_kakapo.png\" alt=\"svn_aktualisieren_kakapo\" class=\"wp-image-6656\" srcset=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/svn_aktualisieren_kakapo.png 388w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/svn_aktualisieren_kakapo-150x114.png 150w\" sizes=\"auto, (max-width: 388px) 100vw, 388px\" \/><\/figure>\n\n\n\n<p>Wenn Sie das Aktualisieren best\u00e4tigen, wird der Kakapo Ihrem BlueJ-Projekt hinzuge\u00adf\u00fcgt.<\/p>\n\n\n\n<p>Schritt 2: Laden Sie jetzt Ihre eigenen \u00c4nderungen (Ihre Klasse \u201ePinguin\u201c zum Beispiel) hoch. W\u00e4hlen Sie dazu im seitlichen Men\u00fc unten &#8222;Abgeben\u2026&#8220; oder &#8222;Commit\u2026&#8220; Darauf erscheint eine Liste der von Ihnen ge\u00e4nderten Dateien. F\u00fcgen Sie einen Kom\u00admentar hinzu und geben Sie die \u00c4nderungen ab:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"384\" height=\"435\" src=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/svn_abgeben_pinguin.png\" alt=\"svn_abgeben_pinguin\" class=\"wp-image-6657\" srcset=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/svn_abgeben_pinguin.png 384w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/svn_abgeben_pinguin-132x150.png 132w\" sizes=\"auto, (max-width: 384px) 100vw, 384px\" \/><\/figure>\n\n\n\n<p><em>Aufgabe: F\u00fchren Sie einige Updates und Commits durch. Wenn Sie auf Konflikte sto\u00dfen, ignorieren Sie sie bis zum n\u00e4chsten Schritt.<\/em><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Grunds\u00e4tzliche Reihenfolge beim Arbeiten<\/h3>\n\n\n\n<p>Nach dem erstmaligen Auschecken des Projekts sieht das Arbeiten immer so aus:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Update, um zu sehen, ob sich am Server etwas ge\u00e4ndert hat.<\/li>\n\n\n\n<li>Eigenen Code erg\u00e4nzen und testen.<\/li>\n\n\n\n<li>Commit &#8211; der findet nur statt, wenn es keine Konflikte mehr gibt.<\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"588\" height=\"387\" src=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/svn_arbeitszyklus.png\" alt=\"svn_arbeitszyklus\" class=\"wp-image-6658\" srcset=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/svn_arbeitszyklus.png 588w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/svn_arbeitszyklus-150x99.png 150w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/svn_arbeitszyklus-550x362.png 550w\" sizes=\"auto, (max-width: 588px) 100vw, 588px\" \/><\/figure>\n\n\n\n<p><strong>Tipps und Regeln f\u00fcrs Arbeiten mit Sch\u00fclerinnen und Sch\u00fclern:<\/strong><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Einen Commit nur dann durchf\u00fchren, wenn alle Klassen im BlueJ-Projekt fehlerfrei \u00fcbersetzt werden.<\/li>\n\n\n\n<li>Um Konflikte zu vermeiden, sollte klar sein, welches Team oder welche ein\u00adzelne Sch\u00fclerin f\u00fcr welche Klasse oder Klassen zust\u00e4ndig sind. Und die Sch\u00fcler m\u00fcssen die Finger von den Klassen anderer Sch\u00fcler lassen.<\/li>\n\n\n\n<li>Wenn eine Datei ganz gel\u00f6scht wurde, kann sie mit BlueJ nicht mehr aus dem Repository erg\u00e4nzt werden. Man muss dann das Projekt komplett neu aus\u00adchecken und damit weitermachen, oder die fehlende Datei von dort erg\u00e4nzen.<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Teil 3 &#8211; Konflikte<\/h2>\n\n\n\n<p>Wenn mehrere Bearbeiter unabh\u00e4ngig von einander an einer Klasse arbeiten, kommt es zu einem Konflikt. Das SVN-System kann einfache Konflikte selbstst\u00e4ndig aufl\u00f6sen, bei den meisten muss aber ein Benutzer entscheiden, welche der in Konflikt stehenden Versionen gelten soll.<\/p>\n\n\n\n<p><em>Aufgabe: Checken Sie das Projekt &#8222;SVN Aufgabe 2&#8220; aus und erg\u00e4nzen Sie eine noch nicht vorhandene getter- oder setter-Methode f\u00fcr ein Attribut der Klasse &#8222;Held&#8220;. F\u00fchren Sie dann einen Commit durch (bzw. vorher ein eventuell einge\u00adfordertes Update).<\/em><\/p>\n\n\n\n<p>Fall 1: Die entstehenden Konflikte lassen sich automatisch l\u00f6sen. Dann zeigt BlueJ &#8211; nach dem Aktualisieren &#8211; folgende Meldung, mit der man das automatische Zusammenf\u00fchren best\u00e4tigen kann:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"404\" height=\"216\" src=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/svn_konflikt1.png\" alt=\"svn_konflikt1\" class=\"wp-image-6659\" srcset=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/svn_konflikt1.png 404w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/svn_konflikt1-150x80.png 150w\" sizes=\"auto, (max-width: 404px) 100vw, 404px\" \/><\/figure>\n\n\n\n<p>Fall 2: Der Konflikt l\u00e4sst sich nicht automatisch l\u00f6sen, weil Attribute der Klasse be\u00adtroffen sind oder die \u00c4nderungen eine Methode betreffen. Dann meldet BlueJ den Kon\u00adflikt so:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"324\" height=\"164\" src=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/svn_konflikt2.png\" alt=\"svn_konflikt2\" class=\"wp-image-6660\" srcset=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/svn_konflikt2.png 324w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/svn_konflikt2-150x76.png 150w\" sizes=\"auto, (max-width: 324px) 100vw, 324px\" \/><\/figure>\n\n\n\n<p>Daraufhin l\u00e4sst man sich die Konflikte anzeigen. Die in Konflikt stehenden Codestellen werden beide in einem BlueJ-Editorfenster angezeigt. Von den Zeichen &lt;&lt;&lt;&lt;&lt;&lt;&lt; bis ======= steht die eine Fassung (die des aktuellen Benutzers), von den Zeichen ======= bis &gt;&gt;&gt;&gt;&gt;&gt;&gt; steht die andere Fassung (die aktuell auf dem Server befindli\u00adche). Der aktuelle Benutzer muss den Konflikt manuell l\u00f6sen.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"550\" height=\"464\" src=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/svn_konflikt3-550x464.png\" alt=\"svn_konflikt3\" class=\"wp-image-6661\" srcset=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/svn_konflikt3-550x464.png 550w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/svn_konflikt3-150x127.png 150w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/svn_konflikt3-660x557.png 660w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/svn_konflikt3.png 748w\" sizes=\"auto, (max-width: 550px) 100vw, 550px\" \/><\/figure>\n\n\n\n<p><strong>Tipp:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Im Rahmen eines Workshops sind Konflikte schwer zu l\u00f6sen: Wenn es einen Kon\u00adflikt gibt, und mehrere Teilnehmer versuchen gleichzeitig, ihn zu l\u00f6sen, gibt das nur noch mehr Durcheinander.<\/li>\n\n\n\n<li>Beim Arbeiten mit Sch\u00fclerinnen und Sch\u00fclern ist es besser, wenn sich die Grup\u00adpen auf einzelne Klassen spezialisieren, so dass Konflikte ganz vermieden werden.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Teil 4 &#8211; Der Server<\/h2>\n\n\n\n<p>Man kann einen SVN-Server lokal im Netz installieren (etwa den Visual SVN Server https:\/\/www.visualsvn.com\/server\/ f\u00fcr Windows), aber eigentlich m\u00f6chte man einen \u00fcber das WWW erreichbaren Server. Daf\u00fcr gibt es verschiedene kostenlose Anbieter, die aber alle das Problem haben, dass a) die Projekte \u00f6ffentlich einsehbar sind (Vorteil: Keine Registrierung zum Aktualisieren n\u00f6tig, Nachteil: Urheberrecht und Daten\u00adschutz) und b) die Projektarbeiter alle eine Registrierung brauchen, wenn sie Commits durchf\u00fchren sollen.<br>\nUnsere Projekte sind bei sourceforge.net gehostet. Ein SourceForge-Projekt kann man allerdings nicht so einfach wieder l\u00f6schen, man muss eine Nachricht an einen Admi\u00adnistrator schicken, der die L\u00f6schung einleitet. Die Inhalte des SourceForge-Projekts, also die BlueJ-Projekte, kann man nat\u00fcrlich jederzeit ver\u00e4ndern.<\/p>\n\n\n\n<p>Vorgehen:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\n<p class=\"western\">Registrierung bei SourceForge (einmalig) unter Angabe einer E-Mail-Adresse und eines Benutzernamens; das Passwort kann frei gew\u00e4hlt werden. Werden f\u00fcr Sch\u00fcler Dummy-Accounts erstellt, besteht nat\u00fcrlich die M\u00f6glichkeit, dass sie E-Mail und Passwort \u00e4ndern.<\/p>\n<\/li>\n\n\n\n<li>\n<p class=\"western\">Anmelden bei SourceForge und Anlegen eines neuen Projekts. Dabei enth\u00e4lt die voreingestellte Auswahl als Versionskontrolle <i>nicht<\/i> Subversion, sondern das j\u00fcngere Git. Au\u00dferdem kann man w\u00e4hlen, ob man ein Wiki, ein Forum, ein Ticketsystem oder andere Features haben m\u00f6chte:<br>\n<img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-6662\" src=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/svn_sourceforge-550x251.png\" alt=\"svn_sourceforge\" width=\"550\" height=\"251\" srcset=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/svn_sourceforge-550x251.png 550w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/svn_sourceforge-150x68.png 150w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/svn_sourceforge-1024x467.png 1024w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/svn_sourceforge-660x301.png 660w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/svn_sourceforge.png 1158w\" sizes=\"auto, (max-width: 550px) 100vw, 550px\" \/><\/p>\n<\/li>\n\n\n\n<li>\n<p class=\"western\">Das SourceForge-Projekt ist zu Beginn ganz leer. \u00dcblicherweise gibt es bei Subversion auf der obersten Ebene die Ordner &#8222;branches&#8220;, &#8222;tags&#8220; und &#8222;trunk&#8220;; nur in letzterem werden die aktuellen Dateien gespeichert. Die anderen Ordner betreffen Subversion-Features, die von BlueJ nicht genutzt werden. Man kann also auf sie verzichten. Dann muss man nur:<br>\n1. Ein neues BlueJ-Projekt anlegen.<br>\n2. &#8222;Werkzeuge &gt; Teamarbeit &gt; Projekt gemeinsam nutzen&#8230;&#8220; ausw\u00e4hlen, Benutzername, Passwort und Serveradresse des SourceForge-Projekts eingeben. Das war&#8217;s schon.<\/p>\n<\/li>\n\n\n\n<li>\n<p class=\"western\">&nbsp;Will man dennoch mit den Ordnern &#8222;branches&#8220;, &#8222;tags&#8220; und &#8222;trunk&#8220; arbeiten, etwa um in Zukunft die M\u00f6glichkeiten anderer Subversion-Clients zu nutzen, muss man einen externen SVN-Client benutzen; mit BlueJ alleine geht das nicht.<br>\n1. Kommandozeilen-SVN-Client bei Linzux: Die bei SourceForge angegebenen Befehle eingeben.<br>\n2. Mit einem anderen externen SVN-Client (etwa TortoiseSVN) eine tempor\u00e4\u00adre lokale Kopie des &#8211; vorerst noch leeren &#8211; Repository anlegen. Dann die drei Order lokal anlegen und auf den Server hochladen (\u201ecommit\u201c). laden. Danach wird die tempor\u00e4re Kopie gel\u00f6schgt; die Ordner werden nur auf dem Server gebraucht.<\/p>\n<\/li>\n<\/ol>\n\n\n\n<p><em>Aufgabe: Legen Sie ein neues BlueJ-Projekt an und f\u00fcgen Sie es mit &#8222;Werkzeuge &gt; Teamarbeit &gt; Projekt gemeinsam nutzen&#8230;&#8220; dem SourceForge-Projekt svn.code.sf.net\/p\/fortbildung\/code\/ hinzu.<\/em><\/p>\n\n\n\n<p><strong>Tipps:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Jeder Projektmitarbeiter braucht einen eigenen Benutzernamen und ein eigenes Passwort, eventuell Dummy-Accounts f\u00fcr Sch\u00fcler anlegen.<\/li>\n\n\n\n<li>Ein m\u00f6glichst kurzer Projektname erleichtert das Eingeben der Serveradresse in BlueJ.<\/li>\n\n\n\n<li>Eine im Repository angelegte Datei (also auch Code) kann man nicht einfach wieder l\u00f6schen. Grunds\u00e4tzlich bleiben alle bisherigen Versionen von Textda\u00adteien erhalten &#8211; man soll bei Subversion auch auf fr\u00fchere Versionen zur\u00fcckgrei\u00adfen k\u00f6nnen soll, auch wenn BlueJ diese Funktion nicht unterst\u00fctzt.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Teil 5 &#8211; Workflow f\u00fcr die Lehrkraft<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Tortoise SVN &#8211; Update, Commit<\/h3>\n\n\n\n<p>Wenn man als Lehrkraft mehrer Projekte verwalten m\u00f6chte, ist der in BlueJ integrierte SVN-Client umst\u00e4ndlich, es empfiehlt sich die Verwendung eines eigenen SVN-Clients, f\u00fcr Windows z.B. TortoiseSVN (http:\/\/tortoisesvn.net\/).<\/p>\n\n\n\n<p>Damit kann man z.B. einen Ordner mit verschiedenen gesammelten BlueJ-Projekten mit einem SVN-Repository verkn\u00fcpfen.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"357\" height=\"328\" src=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/svn_tortoise_verzeichnisse.png\" alt=\"svn_tortoise_verzeichnisse\" class=\"wp-image-6663\" srcset=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/svn_tortoise_verzeichnisse.png 357w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/svn_tortoise_verzeichnisse-150x138.png 150w\" sizes=\"auto, (max-width: 357px) 100vw, 357px\" \/><\/figure>\n\n\n\n<p>Nach Belieben markiert man einige der Verzeichnisse darin mit TortoiseSVN als &#8222;add to ignore list&#8220;, so dass diese Verzeichnisse eben nicht hochgeladen werden. Im Bild lie\u00adgen nur die gr\u00fcnen Verzeichnisse auf dem Server und werden damit synchronisiert.<\/p>\n\n\n\n<p>Man aktualisiert die BlueJ-Projekte jetzt nicht mehr von BlueJ aus (und kann das auch gar nicht), sondern \u00fcber den eigenen Client, der sich in das Windows-Kontektmen\u00fc integriert:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"550\" height=\"341\" src=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/svn_tortoise_update-550x341.png\" alt=\"svn_tortoise_update\" class=\"wp-image-6664\" srcset=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/svn_tortoise_update-550x341.png 550w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/svn_tortoise_update-150x93.png 150w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/svn_tortoise_update.png 611w\" sizes=\"auto, (max-width: 550px) 100vw, 550px\" \/><\/figure>\n\n\n\n<p>Das Men\u00fc bietet noch weitere M\u00f6glichkeiten von Subversion, die f\u00fcr das Arbeiten in der Schule und mit BlueJ aber alle nicht n\u00f6tig sind:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"478\" height=\"550\" src=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/svn_tortoise_contextmenu-478x550.png\" alt=\"svn_tortoise_contextmenu\" class=\"wp-image-6665\" srcset=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/svn_tortoise_contextmenu-478x550.png 478w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/svn_tortoise_contextmenu-130x150.png 130w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/svn_tortoise_contextmenu-660x759.png 660w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/svn_tortoise_contextmenu.png 882w\" sizes=\"auto, (max-width: 478px) 100vw, 478px\" \/><\/figure>\n\n\n\n<p><strong>Tipps:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Wenn die Lehrkraft mit TortoiseSVN arbeitet, kann sie nicht wie die Sch\u00fcler mit BlueJ arbeiten. Bei den Sch\u00fclern hat jedes BlueJ-Projekt seine eigene .svn (ein verstecktes Verzeichnis mit SVN-Daten), bei der Lehrkraft gibt es ein .svn f\u00fcr das Verzeichnis mit den BlueJ-Projekten.<\/li>\n\n\n\n<li>Will die Lehrkraft sich ein BlueJ-Projekt aus Sch\u00fclersicht betrachten, muss sie das Projekt erst aus BlueJ heraus auschecken und kann das daraufhin neu ge\u00adspeicherte Projekt dann auch mit BlueJ committen. Das ist dann aber nicht das Projekt im eigentlichen zentralen BlueJ-Ordner des Lehrers.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Tortoise SVN &#8211; Eine lokale Kopie des Repository<\/h3>\n\n\n\n<p>Ganz am Anfang steht das Anlegen einer lokalen Kopie des Repository:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Optional: Legen Sie ein leeres Repository auf einem Server an.<\/li>\n\n\n\n<li>Legen Sie ein Verzeichnis an f\u00fcr alle Projekte, die Sie zum Beispiel mit einer Schulklasse nutzen wollen, etwa &#8222;Klasse_10a&#8220;.<\/li>\n\n\n\n<li>W\u00e4hlen Sie f\u00fcr das Verzeichnis im Kontextmen\u00fc &#8222;SVN Checkout&#8230;&#8220;<br>\n<img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-6666\" src=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/svn_tortoise_checkout-550x113.png\" alt=\"svn_tortoise_checkout\" width=\"550\" height=\"113\" srcset=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/svn_tortoise_checkout-550x113.png 550w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/svn_tortoise_checkout-150x31.png 150w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/svn_tortoise_checkout.png 649w\" sizes=\"auto, (max-width: 550px) 100vw, 550px\" \/><\/li>\n\n\n\n<li>Geben Sie danach die URL des eben angelegten oder bereits existierenden Repository an:<br>\n<img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-6667\" src=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/svn_tortoise_checkout2.png\" alt=\"svn_tortoise_checkout2\" width=\"529\" height=\"469\" srcset=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/svn_tortoise_checkout2.png 529w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/svn_tortoise_checkout2-150x133.png 150w\" sizes=\"auto, (max-width: 529px) 100vw, 529px\" \/><\/li>\n\n\n\n<li>Danach werden alle Verzeichnisse und Dateien im Repository &#8211; also in der Regel alle BlueJ-Projekte dort &#8211; in das gew\u00e4hlte Verzeichnis \u00fcbertragen.<\/li>\n\n\n\n<li>Ab jetzt kann das gew\u00e4hlte Verzeichnis mit dem Repository synchronisiert werden. Das geschieht \u00fcber &#8222;SVN Update&#8220; beziehungsweise &#8222;SVN Commit&#8230;&#8220; im Kontextmen\u00fc.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Teil 6 &#8211; Erfahrungen<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">R\u00fcckmeldung aus der Praxis<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Kommt bei Sch\u00fclern sehr gut an.<\/li>\n\n\n\n<li>Die Aktualisierung bestehender BlueJ-Projekte ist leichter als sie etwa bei Moodle aktuell zu halten<\/li>\n\n\n\n<li>Am Anfang unbedingt im Computerraum gemeinsam machen; zu Hause kommt kaum einer allein zurecht<\/li>\n\n\n\n<li>Gelegentlich gibt es ein unerkl\u00e4rtes write lock auf lokalem Projekt. Dann ein\u00adfach neu auschecken und den bisher verwendeten BlueJ-Projekt-Ordner l\u00f6\u00adschen.<\/li>\n\n\n\n<li>Interessierte Sch\u00fcler gehen ins Repository und bl\u00e4ttern dort. (&#8222;Wer hat die Da\u00adtei gel\u00f6scht?&#8220;)<\/li>\n\n\n\n<li>F\u00fcr Projektarbeit enorm hilfreich. Der Austausch und die Koordination gehen sehr viel schneller und fehlerfreier als beim manuellen Dateienaustausch zwi\u00adschen Teammitgliedern. Im Computerraum verst\u00e4ndigt man sich durch kurzes Zwischenrufe &#8222;Habt ihr schon Update gemacht&#8220; usw.<\/li>\n\n\n\n<li>Oft arbeiten Sch\u00fcler mit dem Account eines anderen Sch\u00fclers, weil die Ab-\/Anmeldung ihnen zu umst\u00e4ndlich erscheint oder nicht alle ihre Zugangs\u00addaten dabei haben.<\/li>\n\n\n\n<li>Es ist vielleicht hilfreich, wenn Sch\u00fclerinnen und Sch\u00fcler erst einige Zeit lang nur BlueJ-Projekte auschecken (Aufgaben, Musterl\u00f6sungen), und erst, wenn sie damit vertraut sind, Commits durchf\u00fchren.<\/li>\n\n\n\n<li>Sch\u00fclerinnen und Sch\u00fcler denken selten daran, einem Commit einen Kommen\u00adtar hinzuzuf\u00fcgen.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Typische Probleme<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Eingabe der korrekten Daten in BlueJ (Benutzername, Passwort) f\u00fcr manche schwierig, das Passwort wird vergessen oder nicht richtig aufgeschrieben &#8211; Sch\u00fcler m\u00fcssen sich ihre Zugangsdaten aufschreiben und jedesmal mitbringen.<\/li>\n\n\n\n<li>Tats\u00e4chlich werden Sch\u00fcler immer die Zugangsdaten ihrer Mitsch\u00fcler nutzen. Das hat den Nachteil, dass man eventuelle Zugangsprobleme erst sp\u00e4t feststellt.<\/li>\n\n\n\n<li>Manche Sch\u00fcler hatten Schwierigkeiten, zu Hause die Teamarbeitseinstellun\u00adgen in BlueJ einzuschalten, weil sie den Men\u00fcpunkt nicht gefunden haben, eventuell ist das Interface bei BlueJ auch auf englische Sprache eingestellt.<\/li>\n\n\n\n<li>Die Arbeit mit dem in BlueJ integrierten und einem externen SVN-Client muss getrennt bleiben. Wenn der externe Client eine .svn-Datei in einem BlueJ-Pro\u00adjekt entdeckt, f\u00fchrt das zu Problemen.<\/li>\n\n\n\n<li>Gelegentlich kommt es aus irgendwelchen Gr\u00fcnden zu SVN-Fehlermeldungen des BlueJ-Clients (wie einem write lock, einem von BlueJ nicht genutzten und ansprechbaren SVN-Feature). Dann einfach das Projekt ganz neu auschecken, das alte lokale l\u00f6schen und eventuelle Codeerg\u00e4nzungen noch einmal durch\u00adf\u00fchren.<img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-6676\" title=\"If that doesn't fix it, git.txt contains the phone number of a friend of mine who understands git. Just wait through a few minutes of 'It's really pretty simple, just think of branches as...' and eventually you'll learn the commands that will fix everything.\" src=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/svn_git_xkcd.png\" alt=\"Cartoon http:\/\/xkcd.com\/1597\/\" width=\"330\" height=\"478\" srcset=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/svn_git_xkcd.png 330w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/svn_git_xkcd-104x150.png 104w\" sizes=\"auto, (max-width: 330px) 100vw, 330px\" \/><br>\n<small>Randall Munroe\/xkcd, <a href=\"http:\/\/creativecommons.org\/licenses\/by-nc\/2.5\/\">Creative Commons Attribution-NonCommercial 2.5<\/a><\/small><\/li>\n\n\n\n<li>Enth\u00e4lt ein Verzeichnis Bilddateien, f\u00fcgt Windows oft eine versteckte Datei &#8222;thumbs.db&#8220; hinzu, die dann mit synchronisiert wird.<\/li>\n<\/ul>\n\n\n\n<p><strong>Zur Erinnerung und als \u00dcbersicht:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Checkout &#8211; macht man meist einmalig und l\u00e4dt dabei alle Inhalte aus einem Repository in ein lokales Verzeichnis.<\/li>\n\n\n\n<li>Update &#8211; f\u00fchrt man regelm\u00e4\u00dfig und insbesondere vor Beginn eigenen Arbeitens durch. Dabei werden lokale Fassungen eventuell durch aktuellere aus dem Repository ersetzt. Kann zu Konflikten f\u00fchren.<\/li>\n\n\n\n<li>Commit &#8211; f\u00fchrt man unmittelbar nach dem eigenen Arbeiten durch. Wenn inzwischen neuere Fassungen im Repository liegen, wird man stattdessen zu einem Update und anschlie\u00dfender Konfliktl\u00e4sung gezwungen. Danach kann man den Commit noch einmal versuchen.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Teil 7 &#8211; Beispiele<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Einfaches Tic-Tac-Toe mit Model-View-Controller<\/h3>\n\n\n\n<p>Als Finger\u00fcbung vor der eigentlichen Projektarbeit sollte ein Tic-Tac-Toe-Spiel pro\u00adgrammiert werden. Dazu wurde in einer Stunde ein Klassendiagramm erstellt, ange\u00adfangen vom Model (was muss gespeichert werden?) \u00fcber den View (was muss der er\u00adfahren, um den Spielstand darstellen zu k\u00f6nnen?) bis hin zum Controller.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/svn_mvc_tictactoe.png\"><img loading=\"lazy\" decoding=\"async\" width=\"550\" height=\"388\" src=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/svn_mvc_tictactoe-550x388.png\" alt=\"svn_mvc_tictactoe\" class=\"wp-image-6668\" srcset=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/svn_mvc_tictactoe-550x388.png 550w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/svn_mvc_tictactoe-150x106.png 150w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/svn_mvc_tictactoe-1024x723.png 1024w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/svn_mvc_tictactoe-660x466.png 660w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/svn_mvc_tictactoe-200x140.png 200w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/svn_mvc_tictactoe.png 2028w\" sizes=\"auto, (max-width: 550px) 100vw, 550px\" \/><\/a><\/figure>\n\n\n\n<p>Dann wurden drei Teams eingeteilt (Alpha, Bravo, Charlie); in jedem Team waren je\u00adweils zwei bis drei Sch\u00fclerinnen und Sch\u00fcler f\u00fcr die konkrete Umsetzung der drei ab\u00adstrakten Klassen zust\u00e4ndig. So konnten \u00fcber zwanzig Sch\u00fcler weitgehend unab\u00adh\u00e4ngig von den anderen arbeiten.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"550\" height=\"489\" src=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/svn_mvc_bluej1-550x489.png\" alt=\"svn_mvc_bluej1\" class=\"wp-image-6669\" srcset=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/svn_mvc_bluej1-550x489.png 550w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/svn_mvc_bluej1-150x133.png 150w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/svn_mvc_bluej1-660x587.png 660w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/svn_mvc_bluej1.png 960w\" sizes=\"auto, (max-width: 550px) 100vw, 550px\" \/><\/figure>\n\n\n\n<p>Am Schluss sah das Projekt so aus, alle drei Model-, View- und Controller-Implementierungen konnten untereinander ausgetauscht werden:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"550\" height=\"489\" src=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/svn_mvc_bluej2-550x489.png\" alt=\"svn_mvc_bluej2\" class=\"wp-image-6670\" srcset=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/svn_mvc_bluej2-550x489.png 550w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/svn_mvc_bluej2-150x133.png 150w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/svn_mvc_bluej2-660x587.png 660w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/svn_mvc_bluej2.png 960w\" sizes=\"auto, (max-width: 550px) 100vw, 550px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Gr\u00f6\u00dferes Programmierprojekt<\/h3>\n\n\n\n<p>Danach folgten acht Wochen Programmierprojekt in drei Gruppen zu jeweils 7-8 Mit\u00adgliedern. Jede Gruppe arbeitete in einem eigenen BlueJ-Projekt.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"550\" height=\"281\" src=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/svn_team_alpha-550x281.png\" alt=\"svn_team_alpha\" class=\"wp-image-6671\" srcset=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/svn_team_alpha-550x281.png 550w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/svn_team_alpha-150x77.png 150w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/svn_team_alpha.png 600w\" sizes=\"auto, (max-width: 550px) 100vw, 550px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"550\" height=\"373\" src=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/svn_team_bravo-550x373.png\" alt=\"svn_team_bravo\" class=\"wp-image-6672\" srcset=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/svn_team_bravo-550x373.png 550w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/svn_team_bravo-150x102.png 150w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/svn_team_bravo.png 600w\" sizes=\"auto, (max-width: 550px) 100vw, 550px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"550\" height=\"470\" src=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/svn_team_charlie-550x470.png\" alt=\"svn_team_charlie\" class=\"wp-image-6673\" srcset=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/svn_team_charlie-550x470.png 550w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/svn_team_charlie-150x128.png 150w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/svn_team_charlie.png 600w\" sizes=\"auto, (max-width: 550px) 100vw, 550px\" \/><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>Nachtrag: F\u00fcr kommende Versionen von BlueJ ist Git-Unterst\u00fctzung angek\u00fcndigt; Git ist ein etwas j\u00fcngeres System, das \u00e4hnliche W\u00fcnsche wie Subversion erf\u00fcllt. F\u00fcr Mebis ist, wenn auch nicht in unmittelbarer Zukunft, FTP-Zugang angek\u00fcndigt und die M\u00f6glichkeit, gemeinsam an Dokumenten zu arbeiten, &#8222;mit Versionskontrolle&#8220;. Ich kann mir nicht vorstellen, dass das Versionskontrolle im Sinn von Git oder Subversion ist &#8211; aber das w\u00e4re schon sch\u00f6n.<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/ssl-vg03.met.vgwort.de\/na\/08b1ea87f0754bffad98b54310b8af37\" alt=\"\" width=\"1\" height=\"1\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>(9 Kommentare.) Ich habe vor ein paar Jahren schon mal \u00fcber Subversion mit BlueJ geschrieben, inzwischen habe ich das mit Sch\u00fclern weiter erprobt und mit Peter Brichzin einen Workshop dazu auf der INFOS15 gehalten. Subversion: So hei\u00dft ein verbreitetetes System, mit dem verschiedene Autoren gleichzeitig an einem aus vielen Dateien bestehenden Progammierprojekt arbeiten k\u00f6nnen, so [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":6652,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[25],"tags":[227,233],"class_list":["post-6651","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-informatik","tag-informatik","tag-programmierprojekte"],"jetpack_featured_media_url":"https:\/\/www.herr-rau.de\/wordpress\/archiv\/svn_anmelden.png","jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/www.herr-rau.de\/wordpress\/wp-json\/wp\/v2\/posts\/6651","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.herr-rau.de\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.herr-rau.de\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.herr-rau.de\/wordpress\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.herr-rau.de\/wordpress\/wp-json\/wp\/v2\/comments?post=6651"}],"version-history":[{"count":3,"href":"https:\/\/www.herr-rau.de\/wordpress\/wp-json\/wp\/v2\/posts\/6651\/revisions"}],"predecessor-version":[{"id":60132,"href":"https:\/\/www.herr-rau.de\/wordpress\/wp-json\/wp\/v2\/posts\/6651\/revisions\/60132"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.herr-rau.de\/wordpress\/wp-json\/wp\/v2\/media\/6652"}],"wp:attachment":[{"href":"https:\/\/www.herr-rau.de\/wordpress\/wp-json\/wp\/v2\/media?parent=6651"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.herr-rau.de\/wordpress\/wp-json\/wp\/v2\/categories?post=6651"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.herr-rau.de\/wordpress\/wp-json\/wp\/v2\/tags?post=6651"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}