Das Mercurial-Repository liegt auf dem Server hg.javaproject.de. Entwickler können dort einen SSH-Zugang bekommen. Das Home-Verzeichnis des Benutzers kann frei benutzt werden. Dort kann man auch für eigene Zwecke eigene Klone des Repositories machen etc. Im Grunde dürft ihr auf dem Rechner arbeiten, wie ihr wollt. ''(Verboten ist alles, was irgendwie nach Hacken riecht. Also bitte keine neugierigen Spaziergänge ins Filesystem oder ins Netzwerk. Danke!)''
Keine Angst, Platz sollte dort genug sein, ich nehme mir bei Platzproblemen im Extremfall das Recht heraus, Dateien zu löschen, die nicht zum offiziellen Repository gehören, an denen keine Erklärung dransteht, warum man die behalten sollte und die seit mehr als einem halben Jahr nicht mehr benutzt worden sind. Nett für den Fall wäre, wenn ihr Eure Backups z.B. in ein Verzeichnis "Trashcan" kopiert, dann weiss ich, was im Notfall wegkann.
Repositories, die für mehrere Benutzer gedacht sind, lege ich immer nach /home/groups/mercurial/repos/' (bzw. '../mercurial/repos/ aus dem Home-Verzeichnis). Dort gibt es dann ein Verzeichnis wie z.B. LugFramework mit dem eigentlichen Repository. Ich mache mir selber immer einen Softlink in meinem Homeverzeichnis, z.B. so:
ln -s ../mercurial/repos/ .
Dadurch kann ich von aussen mit folgender URL darauf zugreifen, um z.B. das Repository auf meinen eigenen Rechner zu klonen:
hg clone ssh://tbayen@hg.javaproject.de:2222/LugFramework
Wenn man normal per SSH in seinem eigenen Verzeichnis auf dem Mercurial-Server eingeloggt ist, kann man mit
hg clone LugFramework LugFramework-tbayen
einen Klon des Haupt-Repositories erstellen. Man kann beliebig viele Klone für verschiedene Zwecke erstellen. Allerdings haben wir vereinbart, daß das Verzeichnis, das obiger Konvention genügt (also "LugFramework" + "-" + Benutzername) das offizielle Ausgangsverzeichnis eines Benutzers ist, in das er Dinge legt, die die anderen sich anschauen sollen.
Wir haben dazu folgende Regeln besprochen:
Der Hauptklon wird von Thomas Bayen verwaltet, weil dieser sich mit Mercurial am besten auskennt. Andere Benutzer dürfen dort auch schreiben. Allerdings ist größte Vorsicht angezeigt, wenn man mit merges zu tun bekommt. Diese sollten auf jeden Fall besser vorher zu Hause durchgeführt werden! Wenn man etwas mit "push" eincheckt, muss man auf jeden Fall unmittelbar vorher zuerst mit "pull" eventuelle Änderungen von anderen Benutzern abholen, weil man sonst mehrere Heads produziert.
Für die meisten Arbeiten sollte vom Hauptklon eine Kopie mit hg clone erzeugt werden, auf der man dann arbeitet.
Ausnahmen zu der Schreibbeschränkung sind kurze und knappe Änderungen. Insbesondere TODO-Zeilen finde ich einerseits sehr wichtig, damit alle wissen, was anderen am Code aufgefallen ist und andererseits sind einzeilige Änderungen auch relativ unempfindlich beim mergen.
Ein paar Tips zu Mercurial gibts im LUG-Wiki.