2012-04-07 1 views
2

私はSchemeインタプリタ(EOPL1)のテキストを使って作業しています。問題の大部分は、フィーチャの実装または既存の実装の変更です。いくつかの問題は以前の問題に依存しています。インタプリタの操作テキスト - 演習間のコードの依存関係を管理するにはどうすればよいですか?

私は、各問題のインタプリタとテストケースを、各エクササイズのインタプリタ全体をコピーして貼り付けることなく使用したいと思っています。以前は以前のコードをロードしてからさまざまな関数を再定義してみましたが、これは悪いことです:現在ロードされているコードを知るのは醜いですし、モジュールに小さな変更を加えるとコードの重複を排除しませんバグ(例えば、struct定義が再定義されるとき)。それは少し扱いに​​くいです。

#ifdefsまたはそれに相当するものがたくさんあるモノリシックファイルを作成したくありません。これはVCSブランチ(たくさんのたくさんの)VCSブランチの正式なユースケースですか?そうでない場合、私は何をすべきですか?

(謝罪この質問のためのタグが適切でない場合。)

+0

バージョンコントロールのエキスパートではありませんが、完全な回答は投稿しませんが、軽量な分岐を持つDVCSの完璧な使用例のようです。 Gitはこの問題をうまく処理しますが、それはやや急峻な学習曲線を持っています(私はまだそれがありますので、完全な答えではなくコメントです)。私はGitの専門家が完全な答えを与えることができると確信しています。 –

答えて

0

あなたはどの枝を必要とすべきではありません。シンプルなバージョン管理だけで十分です。このタイプの作業については、Mercurialをお勧めします。私にとっては、バージョンコントロールを使用するのが最もシンプルで簡単です。代わりにgit,perforce、またはsubversionとなります。 (明らかに、他にもたくさんあります)

必要に応じて追加してください。それはあなたのリビジョンを追跡します。必要に応じてブランチを作成することもできますし、別のエクササイズにタグ付けすることもできます。可能なワークフローはたくさんあります。ただ、あなたが今やっていることよりも何かが良いでしょう。

+0

拡張の多くは相互に排他的です。したがって、インタープリタコードを構築するだけでは不可能です。ベースインタープリタを何回もコピー&ペーストしたくないので、私はブランチについて疑問を抱いていました。あなたはブランチなしでこれをどのように解決しますか? – Fixnum

+0

まあ、私は正確にはわかりませんが、支部があなたに意味をなさければ、それは正しいアプローチだろう。私はスキームを書いたことがないので、あなたがやろうとしていることに慣れていません。 – jgritty

+0

また、コードを保持するために[bitbucket](https://bitbucket.org/)が本当に好きですし、コードを利用できるようにするには[github](https://github.com/)も別の方法ですどこでも。 – jgritty

関連する問題