画像を分析するプロジェクトがあります。このプロジェクトのテストデータ-約15GBの画像。質問:複数のバージョンを保存する必要があり、開発者の大部分がこのデータを必要としていることを考えると、そのようなテストデータをどこに保存するのですか?
コードと同じリポジトリにありますか?外部参照のある別のリポジトリにありますか?
画像を分析するプロジェクトがあります。このプロジェクトのテストデータ-約15GBの画像。質問:複数のバージョンを保存する必要があり、開発者の大部分がこのデータを必要としていることを考えると、そのようなテストデータをどこに保存するのですか?
コードと同じリポジトリにありますか?外部参照のある別のリポジトリにありますか?
それらを別の参照に保存し、それらの種類のファイルにより適合させる必要があります。
ここで提案されているように、 Nexusのようなアーティファクトリポジトリを使用します。
Nexusから適切なバージョンを取得するために必要なスクリプトをDVCSリポジトリに追加します。
このようにして、ソースのクローンをすばやく簡単に作成し、必要に応じて2番目の参照からバイナリをダウンロードします。
これらのイメージが開発者またはテストを実行したい人々によってのみ必要とされる場合、それらはかなり大きいように見えるので、私はおそらくそれらをサブモジュールに入れるでしょう...
多くのオプションがありますが、ソリューションをgitリポジトリに適切に統合するように注意する必要があります。
Gitはリビジョン管理システムであり、より正確には、プロジェクトのスナップショットのリストを保存します。各スナップショットは、特定の時点でのプロジェクトを表します。
どのソリューションを選択しても、プロジェクトは、プロジェクト履歴の任意のスナップショットに存在していたテストデータを抽出できるはずです。
たとえば、各画像が固定URLに永続的に存在する場合、gitプロジェクトはすべてのURLを含むテキストファイルを保存するだけです。実行時に、スクリプトに各画像をフェッチさせます。プロジェクトが進化し、画像がテストセットに追加または削除されても、既存のURLスキームを変更しないでください。ポインタファイルを更新してコミットします。
もう1つの良いアイデアは、各URLで画像のmd5またはsha1ハッシュを記録することです。ダウンロードスクリプトは、実行時にチェックするために比較を行う必要があります。これにより、不整合があればアラートを受け取ることができます。