Dynamics NAVとGitを使用していますが、同時には使用していません。その理由を説明させてください。
Git自体はかっこいいですが(GitHubを使用するとさらに良くなります)、UNIXのようなコマンドラインに固執したくない場合を除いて、Windowsポートは貧弱です。これはmsysGitをセットアップするための推奨される方法だからです。残念ながら、WindowsのGUIツールは良くありません。
私にとって、上司に理解させるのは困難でした。分散バージョン管理を使用する方が通常のTFSよりも優れている理由です。ビジネス志向の人にとって、1つの大きな中央リポジトリはより安全で(私が支払う自分のサーバーであるため、アクセスを制御します)、より堅牢です(メンテナンス手順を実行するシステム管理者を雇いました)。
私はこの意志と戦わないことに決めました。ステージング領域として分散バージョン管理を使用しています。不安定な変更はすべてこの領域に保存され、チーム内でテストを行います。安定化が完了すると、オブジェクトは中央リポジトリにマージされます。みんな幸せそうです。
Gitについて:最近、次の理由により、別の分散バージョン管理に切り替えました—化石。
- Gitができることはすべて実行できます。
- 見た目、感触、動作はWindowsでネイティブです。
- Webインターフェイスが組み込まれており、ネイティブのWindowsサービスとして簡単に実行できます。
- 問題追跡が統合されているので、サードパーティのツールはもう必要ありません。
- リポジトリは単一のファイルなので、どこにでもペンドライブに入れて持ち運ぶことができます。
NAVソリューションについて。1000を超えるオブジェクト、サイズは20MBを超えます。
編集:コーディングの半年以上後のいくつかの更新。
gitに切り替えました。その自動マージは素晴らしいので。賭けに勝つために、私は4時間でソリューション(変更された標準オブジェクトと新しいオブジェクト)をNAV7CTP3からNAV7CTP5に移動しました。4人の開発者のチームが同じ結果を達成しましたが、ほぼ3週間の日常作業が必要でした。
Gitは本当に違いを生みます。他の分散バージョン管理システムでも同じ結果が得られると思います。
その理由は次のとおりです。Gitやその他の分散システムは、コミット中にTFSやSVNよりもはるかに多くの情報を保存します。通常の開発ではそれほど重要ではありませんが、マージに関しては、Gitからのこの「冗長な」情報すべてが違いを生みます。
マージ中に、Gitはブランチを開始した共通のリビジョンを見つけ、開発者がコードを変更したのと同じ方法で、両方のブランチからの変更をソリューション内のすべてのファイルに段階的に適用します。
両方のブランチで同じ行が変更された場合は、競合が表示されます。そうでない場合は、ファイルを作業フォルダーに保存して、コミットできるようにします。
ここにいくつかの統計があります:
- CTP3とCTP3の両方のコードベースで処理されるファイルの総数はそれぞれ約4000です。
- マージされたソリューションのオブジェクトの総数は1170です。
- 競合するファイルの総数は140です。
- 自動マージの成功率は約88%(1170 – 140)/ 1170 * 100 = 88%です。
- ほとんどの競合は、オブジェクトのバージョンの変更です—些細なことです。
- なし-約20個のファイルでの些細な競合。
- マージされたすべてのオブジェクトで簡単な検索と置換が行われました(RunFormOnRec-> RunPageOnRecなどを修正するため)。
- その結果、CTP5に基づく最新のソリューションオブジェクトの完全にインポート可能なセットが作成されます。
- インポート後のコンパイルエラーの数は約50です。
- これらのエラーのほとんどは、CTP3からCTP5に行われた標準オブジェクトの変更に関連しています。
- 障害のあるオブジェクトの割合は約4%(50/1170 * 100%= 4%)です。