Subversionのすべてのリビジョンをチェックする簡単な方法はありますか?現在、これを実行したい場合は、各リビジョンを個別にチェックする必要があります。
避けられない「なぜこれが必要なのか」に答えるために、私はオフラインのコンピューターで作業し、インターネットに接続せずに古いコードの状態をテストできるようにしたいと考えています。ずっと戻る必要はないかもしれませんが、そうする場合に備えて、すべてのリビジョンを残したいと思います。
Subversionのすべてのリビジョンをチェックする簡単な方法はありますか?現在、これを実行したい場合は、各リビジョンを個別にチェックする必要があります。
避けられない「なぜこれが必要なのか」に答えるために、私はオフラインのコンピューターで作業し、インターネットに接続せずに古いコードの状態をテストできるようにしたいと考えています。ずっと戻る必要はないかもしれませんが、そうする場合に備えて、すべてのリビジョンを残したいと思います。
svnsyncを使用して、リポジトリをローカルに複製できます。svnsyncは、既存のものよりも追加のレベルのアクセスを必要とせず、リポジトリの完全なコピーが作成されます。リポジトリが大きい場合、これには時間がかかる可能性があることに注意してください。
svnsyncは、ここのsvnbookに文書化されています: http ://svnbook.red-bean.com/en/1.7/svn.ref.svnsync.html
一般的なプロセスは次のようになります。
新しいリポジトリを作成します。
svnadmin create mirror
同期を初期化します(URLはGoogleコードリポジトリのルートです)。
svnsync initialize file://`pwd`/mirror $URL --source-username user --source-password pass
次に、同期を更新して、現在のリポジトリを次のものと一致させることができます。
svnsync synchronize file://`pwd`/mirror
URLでコマンドを使用しているファイルは、pwd
必要に応じてフルパスを使用できるため、必ずしも同じディレクトリにとどまる必要はありません。
次に、既存の作業コピーを再配置して、ローカルミラーを使用できます(ここで、WCは作業コピーパスであり、URLはGoogleコードリポジトリへのURLです)。
svn switch --relocate $URL file://`pwd`/mirror $WC
Google Codeリポジトリに戻るのは、次のように簡単です(URLはGoogleコードリポジトリへのURLです)。
svn switch --relocate file://`pwd`/mirror $URL $WC
Googleコードリポジトリから同期を続行したい場合は、コミットしません。ただし、更新する意図がない場合は、コミットしてsvnadmin dump
から、ローカルリポジトリで変更したバージョンに限定して実行svnrdump load
し、それらをGoogleコードサーバーに送信するために使用できます。
git-svnは別のオプションです。ただし、上記は、SVNの既存のインストールで実行できるはずです。
GITを利用することを強くお勧めします。
git-svnを利用することで、svnリポジトリのクローンを作成し、すべてのリビジョンを取得して、対応するGITリポジトリを作成できます。
すべてのバージョンを含むGITリポジトリを使用すると、そのオフラインコンピューターでやりたいことが何でもできます。
Adrian Shumのソリューションほど優れたソリューションではありませんが、本当にSVNを使い続けたい場合は、svnsyncを使用することもできます。stackoverflowに関するStefanの回答から:
まず、ホームマシンに新しいリポジトリを作成します。
svnadmin create c:\backuprepo
次に、pre-revprop-change.batという名前のファイルを作成します。
echo exit 0 > c:\backuprepo\hooks\pre-revprop-change.bat
次に、同期を初期化します。
svnsync init file:///c:/backuprepo https://url/of/your/repository
その後、あなたは単に実行することができます
svnsync sync file:///c:/backuprepo
1日1回程度で、バックアップリポジトリにまだ存在しない変更のみを取得します。初回はしばらく時間がかかりますが、バックアップリポジトリを実際のリポジトリと同期した後は、新しいリビジョンのみを同期する必要があるため、同期には数秒しかかかりません。
質問に答える
オーダーの最初のフォームを使用svn export
して、任意のリビジョンのリポジトリのバージョン管理されていないツリー状態にエクスポートできます。からsvn help export
export [-r REV] URL[@PEGREV] [PATH]
...
Exports a clean directory tree from the repository specified by
URL, at revision REV if it is given, otherwise at HEAD, into
PATH.
最も単純なスクリプトを簡単にコーディングできます。このスクリプトは、リポジトリ内のすべてのリビジョンにまたがって実行され、宛先パスを変更する変更へのエクスポートを実行します。
質問されていない質問「リモートリポジトリのクローンを作成する方法」に回答する
Subversion 1.7。*では、新しい管理ツールが追加されました。svnrdump
これにより、実行svnadmin dump|load
が可能になりますが、リモートリポジトリ用になります。
あなたの場合:
svnadmin load
レポにダンプsvnrdumpに関する最後の注意
Svnrdumpは、Subversion1.7.Xのクライアント側ツールの一部です。1.7クライアントは1.6サーバーと問題なく自由に通信できます
ツールrsvndumpは、まさにこの目的を果たします。