1 つの作業コピーに対して 2 つのリポジトリを設定する方法を知りたいです。2 台の PC 間でチェックイン/チェックアウトできるように、サーバーに 1 つのリポジトリが必要です。diff の結果をすばやく確認できるように、ローカル PC に別のリポジトリが必要です (私の svn サーバーは低速の共有ホスト上にあります)。
どうやってやるの?
1 つの作業コピーに対して 2 つのリポジトリを設定する方法を知りたいです。2 台の PC 間でチェックイン/チェックアウトできるように、サーバーに 1 つのリポジトリが必要です。diff の結果をすばやく確認できるように、ローカル PC に別のリポジトリが必要です (私の svn サーバーは低速の共有ホスト上にあります)。
どうやってやるの?
Subversion は、差分操作にネットワーク アクセスを使用しません。これは、CVS に対する Subversion の大きな利点の 1 つです。したがって、なぜその特定の問題に遭遇するのかわかりません。
git-svn
別の方法として、ローカル PC でGit を使用することもできます。リポジトリ履歴全体の完全なコピーをローカル マシンに取得し、履歴をローカルで比較および表示する機能を (Git が提供する他の多くの機能と共に) 使用できます。git-svn
可能な限り、 Subversion リポジトリへのアクセスに使用しています。
SVN を使用する必要がない場合は、Mercurial や Git などの分散バージョン管理システムを使用することをお勧めします。各 PC にはリポジトリの独自のコピーがあり、変更は PC 間で直接同期するか、中央サーバー上の別のコピーを介して同期できます。各 PC には完全なリポジトリがローカルに保存されているため、ネットワーク アクセスなしで diff やその他の操作を実行できます。
svn の代わりにsvkをローカル クライアントとして使用してみてください。Svk は、svn リポジトリを使用した疑似分散バージョン管理システムです。
svk を使用してリポジトリのミラーをセットアップし、それを同期し、好きなだけリビジョンを戻すことができ、それはすべてローカルです。
ミラーリングされたリポジトリのブランチを作成して、それをチェックアウトとして使用することもできます。その後、コミットもローカルのみの操作になり、コミットのバッチの準備ができたら、それらをリモート svn リポジトリにプッシュします (そしてプルします)。 svn update コマンドと同様に、他のユーザーが元に戻しました)。
2 つの注意事項:
それ以外は、他の人が提案したように、bazaar、mercurial、または git を 2 番目に使用します。Bazaar はおそらく最も使いやすく、TortoiseBzr GUI を備えており、私の同僚はこれがかなりしっかりしていると言っています。
Git は最も使いにくいです。それは、長さよりも幅の方がほぼ広いスイスアーミーナイフのようなもので、小さなガジェットやドゥーダッドがすべて入っていてぶら下がっています。アウト。
ローカル ボックスが Linux の場合、crontab エントリを作成して、X 分ごとに svn update を実行し、バックグラウンドでサーバーとの同期を維持できます。そこから、ローカルの svn サーバーに最新のコピーがあり、差分を取ることができます。
SVN は本質的に、このようなユース ケースには適していません。あちこちで微調整する必要があります (cron の作成など)。そのようなユースケースに合わせてすぐに使えるものが必要な場合は、GIT を試してください。
svn diffの結果は、サーバーへの接続速度に依存しません。これは完全にローカルな操作です。
標準的なレポジトリのレプリケーションがあなたの望むものを提供するとは確信していません。その設定では、1 つのプロキシが常に読み取り専用であり、あなたの状況ではそうではないと思います。
チェックインの直前に、見ているリポジトリを切り替えるには、svn switch --relocate を実行する必要があります。ややエラーが発生しやすい。
あなたが求めているのは、write through proxyです。
ローカル マシンで apache と mod_svn_dav を使用してこれをセットアップすると、すべての更新を受信し、簡単に比較およびチェックアウトできるローカル リポジトリが作成されますが、すべての書き込みは他のすべての人が実行する実際のリポジトリに戻されます。を使用して更新を取得しています。