2011-07-07 14 views
0

現在、ほとんどの場合、よく定義されたワークフローを持つSVNユーザーです。 中央の/ミラーリングされたreposを使用して、バイナリアーチファクトの偶発的な同時編集、コードの定義された方法での分岐/マージを防ぐ。Mercurialでバイナリ成果物(ドキュメントなど)を処理する方法

いくつかの実験でhgとgitを使用した非常に素晴らしい。私たちは実際のプロジェクトでそれらをより広範に活用したいと考えています。

さまざまなツールや画像などのドキュメントのように、バイナリアーチファクトをマージするのは難しい/不可能ですがどうすればよいですか?

ユーザーがさまざまなリポジトリでそのようなアイテムを変更することを防ぎ、あとで厳密な手動変更の調整プロセスを回避するために推奨されるワークフローはありますか?

答えて

0

バイナリデータの種類に依存するので、バイナリファイルを簡単にマージすることは不可能だと思います。したがって、特定のファイル形式を処理できるアプリケーションで手動で行う必要があります。

一般に、ユーザーが同時にいくつかのアイテムを変更できないようにするには、ロック機構を実装する必要があります。正しいロックは、すべてのクライアントが何かがロックされていることを知っている場合にのみ成し遂げられます(たとえば、中央サーバーに接続するか、質問がロックされているかどうかをブロードキャストするなど)。現時点では、特殊なソフトウェア(アクションや常時実行されているバックグラウンドプロセスなど)を記述することなく、これをどのように達成するかについては、私は考えていません。

バイナリファイルが他のソースコードのコンパイルされた出力にすぎない場合は、それらを.hgignoreに追加してリポジトリで処理しないこともできます。

+0

"...ロック機構を実装する必要があります..." ..正確に。ですから、hg/gitの巨大な取り込みと、地理的に分散したチームでのそれらの使用を考えれば、非生成、非マージブルバイナリ成果物を扱う現在のベストプラクティスは何かと思います。プロジェクトの一部であり、バージョニングが必要な、さまざまなタイプのイメージやバイナリ「ドキュメント」のようなもの。 SVNでは、ロックを必要とするように設定しました。十分な解決策です。私はむしろすべての車輪を再発明していないので、確かに既存の解決策が必要でしょうか? – liamf

+0

うーん、何について:http://mercurial.selenic.com/wiki/LockExtension? – gw0

+0

興味深いです... – liamf

関連する問題