Ich arbeite durch einen Text auf Scheme-Interpreter (EOPL1). Die meisten Probleme umfassen das Implementieren eines Features oder das Ändern einer vorhandenen Implementierung. Einige der Probleme sind von vorherigen abhängig.Arbeit mit Dolmetschertext - Wie verwalte ich Codeabhängigkeiten zwischen Übungen?
Ich möchte für jedes Problem Arbeitsdolmetscher und Testfälle haben, ohne den gesamten Interpreter für jede Übung kopieren zu müssen. Zuvor habe ich versucht, nur den vorherigen Code zu laden und dann verschiedene Funktionen neu zu definieren, aber das ist schlecht: es ist hässlich und schwer zu sagen, welcher Code gerade geladen ist, es eliminiert keine Codeverdopplung, wenn ich kleine Änderungen an einem Modul mache und es erzeugt Fehler (zB wenn struct
Definitionen neu definiert werden). Es wird ein wenig unüberschaubar.
Ich möchte keine monolithische Datei mit vielen #ifdefs oder gleichwertig machen. Ist das ein vernünftiger Anwendungsfall für (sehr viele) VCS-Niederlassungen? Wenn nicht, was soll ich tun?
(Entschuldigt, wenn die Tags für diese Frage nicht geeignet sind.)
Da ich kein Experte für Versionskontrolle bin, werde ich keine vollständige Antwort posten, aber es scheint ein perfekter Anwendungsfall für einen DVCS mit leichtem Verzweigen zu sein. Git erledigt das gut, aber es hat eine ziemlich steile Lernkurve (auf der ich immer noch stehe - daher eher der Kommentar als eine vollständige Antwort). Ich bin mir sicher, dass ein Git-Experte eine vollere Antwort geben kann. –