1

Subversionのすべてのリビジョンをチェックする簡単な方法はありますか?現在、これを実行したい場合は、各リビジョンを個別にチェックする必要があります。

避けられない「なぜこれが必要なのか」に答えるために、私はオフラインのコンピューターで作業し、インターネットに接続せずに古いコードの状態をテストできるようにしたいと考えています。ずっと戻る必要はないかもしれませんが、そうする場合に備えて、すべてのリビジョンを残したいと思います。

4

5 に答える 5

6

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の既存のインストールで実行できるはずです。

于 2013-02-21T01:29:35.960 に答える
3

GITを利用することを強くお勧めします。

git-svnを利用することで、svnリポジトリのクローンを作成し、すべてのリビジョンを取得して、対応するGITリポジトリを作成できます。

すべてのバージョンを含むGITリポジトリを使用すると、そのオフラインコンピューターでやりたいことが何でもできます。

于 2013-02-21T01:08:54.553 に答える
2

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回程度で、バックアップリポジトリにまだ存在しない変更のみを取得します。初回はしばらく時間がかかりますが、バックアップリポジトリを実際のリポジトリと同期した後は、新しいリビジョンのみを同期する必要があるため、同期には数秒しかかかりません。

于 2013-02-21T01:30:07.203 に答える
0

質問に答える

オーダーの最初のフォームを使用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が可能になりますが、リモートリポジトリ用になります。

あなたの場合:

  • TortoiseSVNでローカルリポジトリを作成する
  • CG-repoのロードダンプ(おそらくトランク部分のみのフルダンプ)
  • svnadmin loadレポにダンプ
  • 現在のWCを新しいリポジトリに切り替えるか、ローカルから新しいWCにチェックアウトします(いずれの場合も、従来の方法で完全な履歴があります)

svnrdumpに関する最後の注意

Svnrdumpは、Subversion1.7.Xのクライアント側ツールの一部です。1.7クライアントは1.6サーバーと問題なく自由に通信できます

于 2013-02-21T07:22:54.103 に答える
0

ツールrsvndumpは、まさにこの目的を果たします。

于 2013-02-23T02:20:09.287 に答える