私のプロジェクトにはネットワークファイルシステム上にSubversionリポジトリがあり、新しいチームがGitを使用してそれにアクセスし、それにコミットして更新を取得できるようにしたいと考えています。
私が念頭に置いているのはgit-svn
、同じネットワークファイルシステム上にSubversionリポジトリの新しいベアクローンを作成し、2つのリポジトリが常に最新であることを確認することです。
これを行う方法は、おそらくSubversionと新しいGitリポジトリの両方にコミット後のフックを追加することです。これにより、それぞれが他方のリポジトリを更新します。
Subversionのコミット後フックにはgit svn rebase
、とGitが含まれますgit svn dcommit
。
問題は、コミットする前に常に同期している必要があるため、他のリポジトリもコミットしている間、どちらのリポジトリにもコミットしないようにするために、ある種のロックを使用する必要があることです。これにはいくつかの欠点があります。その中には、Subversionにコミットしたり、Gitリポジトリにプッシュしたりするのにかかる時間(フックが終了するのを待つ必要があります)や、一部のユーザーが実行できない可能性があるという事実がありますgit svn
(自分のマシンにインストールされていない)、つまり、コミット/プッシュ時に他のリポジトリを更新できないことを意味します。
どうすればこれらの問題を解決できますか?SubversionフックとGitフックはどのようになりますか?