テキストファイルを操作するスクリプトプログラム(Perl、Shellなど)を使って、自然言語処理に関連するプロジェクトを適切にバージョンコントロールする方法について考えています。スクリプトは、通常、テキストデータファイルを入力として読み込み、何らかの処理を行い、結果を再びテキストファイルとして出力します。だから、たくさんのコードとデータファイルがテキスト形式である。プロジェクトのバージョン管理にsvnコードとデータファイルの両方が含まれています
明らかに、私はデータファイルが大きなサイズである可能性があるので、バージョンコントロールコードファイルのみです。そして私はコードの分岐を維持して、異なる方法を試す必要があります。
(1)バージョン管理の私の現在のソリューションは、単一のディレクトリ「PROJ」と同じレベルにコードとデータファイルを混合することである。
CODE1、...、codem、DATA1、...、 datan
ブランチで作業する場合、上記の「フラット」ディレクトリ構造を維持するために、「branchi」サブフォルダ内ではなく、「proj」の下の「branchi」のすべてのファイルをチェックアウトする必要があります。
私の現在の解決策の長所は、ディレクトリ遷移のオーバーヘッドを最小限に抑えることです。コードとデータは、スクリプトを呼び出し、同じディレクトリにあるとの結果を検討すると、「CD」の最小量を必要とするので:
SCRIPT1データイン時に数
VI
DATAOUT短所があるDATAOUTコードとデータファイルの数が増えると、 "proj"フォルダ内の長いファイルリストに面倒に見えます。"PROJ/SRC" と "PROJ /データ":
は(2)もう一つの方法は、異なるディレクトリの下にコードとデータを置くことです。
賛否両論は、解決策(1)とちょうど反対です。私は、より洗練されたディレクトリ構造を得ることができます。短所は、スクリプトや見直しの結果を呼び出すときに、私は、ディレクトリの遷移の多くを実行する必要があります:
SCRIPT1 ../data/data-in ../data/data-out
VI ../data /データアウトまたはcd ../data; viデータ出力
srcフォルダ内の場合。したがって、データファイル "../data"の余分な親パスは、特に多くの素早い実験や結果のチェックを行う必要がある場合に、多くのディレクトリ遷移の混乱をもたらします。
他に提案がありますか?ありがとう。
興味深い。あなたの提案によると、CDを避ける1つの方法は、データフォルダ内のすべてのスクリプトのシンボリックリンクを作成し、コードとデータが同じフォルダにあるかのようにデータフォルダで作業することです。 – Fashandge
しかし私の上記の方法はまだ完全ではありません。バージョン管理を容易にするためにコード部分を区切ります。しかし、それはコードとデータのシンボリックリンクを混在させています。特にコードとデータの両方が複数レベルのディレクトリを持つ可能性がある場合は、コードとデータを分離してディレクトリの移行を最小限に抑える方法がありますか? – Fashandge
@Fashandge - 完全な回答は編集を参照してください – ckhan