Ich unterrichte den dritten erforderlichen Einführungskurs in einer CS-Abteilung. Bei einer meiner Hausaufgaben werden die Schüler gebeten, den Code zu beschleunigen, den sie für eine frühere Aufgabe geschrieben haben. Faktor-Zehn-Beschleunigungen sind Routine; Faktoren von 100 oder 1000 sind keine Seltenheit. (Für einen Faktor von 1000 müssen Sie mit malloc () Anfängerfehler gemacht haben.)
Programme werden durch eine Sequenz kleiner Änderungen verbessert. Ich bitte die Schüler, jede Änderung und die daraus resultierende Verbesserung aufzuzeichnen und zu beschreiben.
Während Sie ein Programm verbessern, ist es auch möglich, es zu brechen. Wäre es nicht schön, zurückzutreten?
Sie können sehen, wohin ich damit gehe: Meine Schüler würden enorm von der Versionskontrolle profitieren. Es gibt jedoch einige Einschränkungen:
- Unsere Computerumgebung ist gesperrt. Alles, was von einem zentralen Repository abhängt, ist verdächtig.
- Unsere Schüler sind unglaublich überlastet. Nicht nur Unterricht, sondern auch Jobs, Sport, Musik. Damit sie ein neues Tool verwenden können, muss es unglaublich einfach sein und offensichtliche Vorteile haben.
- Unsere Schüler arbeiten meistens paarweise. Das Hin- und Herwechseln von Bits zwischen Konten ist problematisch. Könnte dieses Problem auch durch verteilte Versionskontrolle gelöst werden?
- Komplexität ist der Feind. Ich weiß, dass das Einrichten eines CVS-Repositorys zu verwirrend ist. Ich selbst habe immer noch Probleme, weil ich es nur einmal im Jahr mache. Mir wurde gesagt, SVN ist noch schwieriger.
Hier sind meine Kommentare zu bestehenden Systemen:
- Ich denke, eine zentrale Versionskontrolle (CVS oder SVN) ist ausgeschlossen, da unsere Schüler nicht über die erforderlichen Administratorrechte verfügen, um ein Repository zu erstellen, das sie mit einem anderen Schüler teilen können. (Wir haben keine Unix-Dateiberechtigungen.) Außerdem ist die Einrichtung unter CVS oder SVN zu schwierig.
- darcs ist sehr einfach einzurichten, aber es ist nicht offensichtlich, wie Sie Dinge teilen. darcs send (um Patches per E-Mail zu senden) scheint vielversprechend, aber es ist nicht klar, wie man es einrichtet.
- Die Einführungsdokumentation für Git ist nichts für Anfänger. Wie beim CVS-Setup habe ich selbst Probleme damit.
Ich bitte um Vorschläge, welche Quellcodeverwaltung für Anfänger verwendet werden soll. Ich vermute, wir können Ressourcen finden, um ein dünnes Furnier über ein vorhandenes System zu legen und die vorhandene Dokumentation zu vereinfachen. Wir haben wahrscheinlich keine Ressourcen, um neue Dokumentationen zu schreiben.
Also, was ist wirklich einfach zu Setup , verpflichten , revert , und teilen Änderungen mit einem Partner , aber muß nicht einfach sein , zu fusionieren oder zur Arbeit in großem Umfang?
Eine wichtige Einschränkung besteht darin, dass Programmierpaare in der Lage sein müssen, die Arbeit untereinander und nur untereinander zu teilen , und dass sich die Paare jede Woche ändern . Unsere Infrastruktur ist Linux, Solaris und Windows mit einem NetApp-Filer. Ich bezweifle, dass meine IT-Mitarbeiter für jedes Schülerpaar eine Unix-Gruppe erstellen möchten. Gibt es eine einfachere Lösung, die ich übersehen habe?
(Vielen Dank für die akzeptierte Antwort, die die anderen aufgrund ihres hervorragenden Verweises auf Git Magic sowie der hilfreichen Kommentare übertrifft.)