2012-04-27 3 views
1

テキストファイルを操作するスクリプトプログラム(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"の余分な親パスは、特に多くの素早い実験や結果のチェックを行う必要がある場合に、多くのディレクトリ遷移の混乱をもたらします。

他に提案がありますか?ありがとう。

答えて

2

2番目の方法 - 独自のdata/srcの下にプロジェクトを分けてください。

スクリプト、シンボリックリンク、エイリアスを簡単に使用することで、どんなものでも操作しやすくなります。

しかし、Svnでのあなたのディレクトリレイアウトが混乱の巨大なボールであると、あまりにも乱雑になると、それを解き放つのが非常に難しいでしょう。

だからあなたのレイアウトは、次のようになります。ここでは

/sources/ 
    /project1/ 
     script-for-proj-1 
     other-stuff-for-proj-1 
     data-for-proj1    --> /data/dataset24 
    /project2/ 
     script-for-proj2 
     other-stuff-for-proj-2 
     data-for-proj2    --> /data/dataset23 

、Subversionの中01​​生活の中ですべてのもの。 各プロジェクトディレクトリには、必要なデータディレクトリへのシンボリックリンクがあります。 しかし、すべてのデータは実際には/dataに存在し、どのツールでも意味があるものであれば を使用してアーカイブ/維持されます。

のデータはバージョン管理されていませんが、シンボリックリンクがあるため、プロジェクトに異なる入力が必要な場合は、 の内容を追跡できます。

+0

興味深い。あなたの提案によると、CDを避ける1つの方法は、データフォルダ内のすべてのスクリプトのシンボリックリンクを作成し、コードとデータが同じフォルダにあるかのようにデータフォルダで作業することです。 – Fashandge

+0

しかし私の上記の方法はまだ完全ではありません。バージョン管理を容易にするためにコード部分を区切ります。しかし、それはコードとデータのシンボリックリンクを混在させています。特にコードとデータの両方が複数レベルのディレクトリを持つ可能性がある場合は、コードとデータを分離してディレクトリの移行を最小限に抑える方法がありますか? – Fashandge

+0

@Fashandge - 完全な回答は編集を参照してください – ckhan

関連する問題