私は定期的に大規模プロジェクト(ish)の計算流体力学(CFD)モデリングシミュレーションを行い、異なるファイルバージョンを管理するためのより良い方法を探しています。 gitとsvnでいくつかのワークフローを経験していますが、私の必要性をすべて満たしていないと確信しています。ファイル単位のバージョン管理
セットアップキャリブレーションシミュレーションのための初期ファイル:
典型的なワークフローは、このです。設定
微調整このファイルと再実行(リピートステップ1)
キャリブレーションに満足して、パラメータ
の最高のセットからセットアップ検証の実行を校正/検証がすべて完了し、デザイン実行のファイル: ie。シナリオA、シナリオB、シナリオCあなたが出力するシナリオCで重要な何かを忘れてしまった
おっと、あなたはわずかな変化をしなければならないとして再実行シミュレーション
現在の練習があります連続する各ラン001,002等の名前を変更する。これにより、「最良の」較正が最高のランナンバーでなかった場合には、不明確になる。いくつかのものをテストしましたが、必ずしも改善しませんでした。シナリオシナリオの最新の結果とシナリオAとシナリオBの両方を比較する必要がある場合は混乱しますが、シナリオCは002です。
バージョン管理システムでは、連続したコミットと古いバージョンとの比較を示します。ボーナスは支店の「ベスト」バージョンを追跡することができます。これまでのところ最高の較正シミュレーションが可能で、すぐにそのバージョンに戻すことができます。
第2に、既存のファイルの特定のバージョンのテンプレートから新しいファイルを作成する必要があります。つまりシナリオシミュレーションABとCのファイルを作成するときは、最新のキャリブレーション/検証設定のコピーを作成し、異なるシナリオ(異なるシミュレーション時間、異なるジオメトリなど)を定義してそれらのシナリオをコミットする変更を行います。次に、シナリオを迅速に比較し、共通のバージョンを確認することができます。
第3に、多くのシステムで使用される可能性がある最後の機能は、フォルダ内で複数のバージョンのファイルを一度にチェックアウトできることです。つまり週末の前に私はわずかに異なるパラメータで10回のシミュレーションを設定し、それらをすべてバッチで実行して、月曜日の朝に最高のものを選ぶことができ、ツリーを現在の最良のものに折り畳むことができます。
これは、最近のファイルの変更を見ることができ、1つのファイルの変更を個別にコミットし、最も重要なのは1つのファイルを以前のバージョンに個別に戻す素晴らしいGUI(Windowsの場合はgithubと考える)を持つことが理想的です。私は基本的に、校正、検証、シナリオA、B、およびCのファイルをいつでもフォルダに保存したいだけですが、いくつかのバージョンをチェックアウトして後で崩壊させるオプションがあります。
オンラインの周りを見て、そのようなニッチシステムdoesntが存在することを示唆し、私は自分自身を作成することに逆らっていません。しかし、誰かが既存のシステム(Git?)のために良い仕事をしていますか?私の要件のすべてまたは少なくともほとんどをカバーしていますか?あるいは、私が何らかの形で一緒に始めることができ、一緒にハックすることができる、おそらくどんなツールでも?または、すべての最高は、多くのことをカバー不思議システム...
私は理想的には、複数のブランチを1つのフォルダでいつでもチェックアウトしたいと思っています。シミュレーションは、多くの場合、バッチで実行されるか、Linuxクラスタ上で並列に実行されます。明らかに、異なるフォルダに複数のブランチ/クローンを持つことは可能です。しかし、仕事を提出することははるかに複雑になり、まったく新しいフォルダ構造が必要になります。 – TDevlin
@TDevlin - [Git-worktree](https://git-scm.com/docs/git-worktree)? http://stackoverflow.com/a/30185564/960558(Gitを使用せず、テスト済みのワークツリーではなく、読み込みのみ)、または[共有拡張](https://www.mercurial-scm.org/wiki)も参照してください。/ShareExtension)を変更しない場合**チェックアウトされたデータ –
@TDevlin - しかし私の選択(私は** Gitを憎み、純粋なバニラソリュートを使うことを好みます)は1) Mercurial 2)それぞれのセットを 'hg archive -r REV -tファイルdestname-%R'(repoでどのdirがどのリビジョンにあるかを区別するために%R)で準備する3)テストを実行する –