19

1 つの作業コピーに対して 2 つのリポジトリを設定する方法を知りたいです。2 台の PC 間でチェックイン/チェックアウトできるように、サーバーに 1 つのリポジトリが必要です。diff の結果をすばやく確認できるように、ローカル PC に別のリポジトリが必要です (私の svn サーバーは低速の共有ホスト上にあります)。

どうやってやるの?

4

8 に答える 8

11

リポジトリの複製を見てください。

あるリポジトリから別のリポジトリに定期的に同期するように cron ジョブを設定できます。ただし、コミットが 2 つのうちの 1 つにのみ発生するようにする必要があります。

コミットが両方のリポジトリで行われる場合、gitBazaarMercurialなどの分散バージョン管理システムの方が適しているのではないでしょうか? たとえば、Git では、Subversion リポジトリから直接プルしたりプッシュしたりできます。

于 2009-02-24T04:14:02.860 に答える
7

Subversion は、差分操作にネットワーク アクセスを使用しません。これは、CVS に対する Subversion の大きな利点の 1 つです。したがって、なぜその特定の問題に遭遇するのかわかりません。

git-svn別の方法として、ローカル PC でGit を使用することもできます。リポジトリ履歴全体の完全なコピーをローカル マシンに取得し、履歴をローカルで比較および表示する機能を (Git が提供する他の多くの機能と共に) 使用できます。git-svn可能な限り、 Subversion リポジトリへのアクセスに使用しています。

于 2009-02-24T04:20:36.480 に答える
3

SVN を使用する必要がない場合は、Mercurial や Git などの分散バージョン管理システムを使用することをお勧めします。各 PC にはリポジトリの独自のコピーがあり、変更は PC 間で直接同期するか、中央サーバー上の別のコピーを介して同期できます。各 PC には完全なリポジトリがローカルに保存されているため、ネットワーク アクセスなしで diff やその他の操作を実行できます。

于 2009-02-24T04:21:33.093 に答える
1

svn の代わりにsvkをローカル クライアントとして使用してみてください。Svk は、svn リポジトリを使用した疑似分散バージョン管理システムです。

svk を使​​用してリポジトリのミラーをセットアップし、それを同期し、好きなだけリビジョンを戻すことができ、それはすべてローカルです。

ミラーリングされたリポジトリのブランチを作成して、それをチェックアウトとして使用することもできます。その後、コミットもローカルのみの操作になり、コミットのバッチの準備ができたら、それらをリモート svn リポジトリにプッシュします (そしてプルします)。 svn update コマンドと同様に、他のユーザーが元に戻しました)。

2 つの注意事項:

  1. コマンドラインを使用する準備をしてください。私の知る限り、TortoiseSVK やその他の GUI はありません。
  2. 私はLinuxでのみsvkを使用しました。Windows を使用している場合、クライアントがどれだけ優れているかはわかりません。

それ以外は、他の人が提案したように、bazaar、mercurial、または git を 2 番目に使用します。Bazaar はおそらく最も使いやすく、TortoiseBzr GUI を備えており、私の同僚はこれがかなりしっかりしていると言っています。

Git は最も使いにくいです。それは、長さよりも幅の方がほぼ広いスイスアーミーナイフのようなもので、小さなガジェットやドゥーダッドがすべて入っていてぶら下がっています。アウト。

于 2009-02-24T04:41:36.647 に答える
1

ローカル ボックスが Linux の場合、crontab エントリを作成して、X 分ごとに svn update を実行し、バックグラウンドでサーバーとの同期を維持できます。そこから、ローカルの svn サーバーに最新のコピーがあり、差分を取ることができます。

于 2009-02-24T04:14:28.943 に答える
1

SVN は本質的に、このようなユース ケースには適していません。あちこちで微調整する必要があります (cron の作成など)。そのようなユースケースに合わせてすぐに使えるものが必要な場合は、GIT を試してください。

于 2009-07-28T21:27:13.247 に答える
0

svn diffの結果は、サーバーへの接続速度に依存しません。これは完全にローカルな操作です。

于 2009-02-24T10:10:03.100 に答える
0

標準的なレポジトリのレプリケーションがあなたの望むものを提供するとは確信していません。その設定では、1 つのプロキシが常に読み取り専用であり、あなたの状況ではそうではないと思います。

チェックインの直前に、見ているリポジトリを切り替えるには、svn switch --relocate を実行する必要があります。ややエラーが発生しやすい。

あなたが求めているのは、write through proxyです。

ローカル マシンで apache と mod_svn_dav を使用してこれをセットアップすると、すべての更新を受信し、簡単に比較およびチェックアウトできるローカル リポジトリが作成されますが、すべての書き込みは他のすべての人が実行する実際のリポジトリに戻されます。を使用して更新を取得しています。

于 2009-02-24T08:35:22.267 に答える