私の元の質問は以下でした。それ以来、これを機能させることができるかどうかを確認するために、いくつかのことを試しました。
次のような小さなシェルスクリプトがあります。
svnadmin dump -r108917 ./repo \
| svndumpfilter include /KeyManagement \
--drop-empty-revs \
--skip-missing-merge-sources \
--renumber-revs > km.svndump \
while read rev
do
svnadmin dump -r$rev --incremental ./repo \
| svndumpfilter include /KeyManagement \
--drop-empty-revs \
--skip-missing-merge-sources \
--renumber-revs >> km.svndump
done << km.revs.txt
km.revs.txt
/KeyManagment
プロジェクトへの変更を含むリビジョンのみを含むテキスト ファイルです。
最初にこれを行ったとき、後でフィルタリングを行うと思っていました。ただし、最初にダンプされたリビジョンではkm.svndump
、サイズが 68 ギガバイトを超えました。おっと。2 回目の試行では、プロジェクトを でフィルタリングしていsvndumpfilter
ます。
これはかなり長い間実行されました(私はこれを実行しnohup
、時々チェックしました)。終了するとkm.svndump
、UUID、最初のリビジョン、およびメモリ不足エラーが表示されました。どうやら、私のスクリプトはダンプされる最初のリビジョンに渡されませんでした。
続行する方法はありますか?
リポジトリの残りの部分とはまったく互換性のない特別なプロジェクトを含むリポジトリがあります。リポジトリ全体は、LDAP グループ内のすべてのユーザーが見ることができますDevelopment
。ただし、あるプロジェクトには、そのプロジェクトに携わっている人だけに見せたい情報が含まれています。(当社の KeyManagement プロジェクト)。レポのレイアウトは次のようになります。
/trunk
- レポの残りのトランク/branches
- レポの残りのブランチ/tags
- レポの残りのタグ/KeyManagement
- 特別なキー管理プロジェクト。
のぞき見を防ぐために、svn_acces ファイルを使用して、これを見ることができるユーザーを指定します。KeyManagement
これにより、メンテナンスで多くの問題が発生しました。私は、独自の LDAP アクセス グループを持つ別のリポジトリを作成したいと考えています。(独自の LDAP グループを持つ複数のリポジトリが既にあります)。
問題は、リポジトリに 175,000 を超えるリビジョンがあり、それらのリビジョンのうち 124 のみが KeyManagement プロジェクトに関係していることです。175,000 のリビジョンをすべてダンプするには、約 30 時間以上かかります。必要なリビジョンだけをダンプできれば、ダンプ全体を数時間で完了できます。
他の問題はこれです:
$ svn log -r108917:108918 -v $REPO
------------------------------------------------------------------------
r108917 | svnadmin | 2011-03-23 00:46:04 -0500 (Wed, 23 Mar 2011) | 1 line
Changed paths:
A /KeyManagement
New folder KeyManagement
------------------------------------------------------------------------
r108918 | svnadmin | 2011-03-23 00:47:18 -0500 (Wed, 23 Mar 2011) | 1 line
Changed paths:
A /KeyManagement/trunk (from /trunk/KeyManagement:108917)
D /trunk/KeyManagement
Move the KeyManagement
------------------------------------------------------------------------
どうやら、KeyManagement
かつては下にもあったらしい/trunk
。ダンプとロードを使用した以前の経験でsvndumpfilter
は、ダンプとロードの両方/KeyManagement
を/trunk/KeyMangement
同時に行う必要があります。/trunk/KeyManagement
正直なところ、アプリケーションは完全に作り直されており、誰もコードを気にしていないので、私は気にしません。
ダンプの最初のリビジョンが完全なリビジョンであることを理解しています。私がこのようなことをすることは可能ですか:
$ svnadmin dump -r108917:108918 old_repo > dump_file
$ svnadmin dump -r108103 --incremental old_repo >> dump_file #Revision with KeyManagement
$ svnadmin dump -r107429 --incremental old_repo >> dump_file #Revision with KeyManagement
...
$ svnadmin load --parent-dir new_repo < dump_file
KeyManagement に関係するリビジョンをダンプするだけです。の下のバージョンは気にしません/trunk
。それ以来、プロジェクトは完全に改訂されていました。リビジョンを知っているので、これを行うためのシェル スクリプトを簡単に作成できます。KeyManagement に関係するリビジョンには、他のプロジェクトが絡んでいるものはありません。
これを行うのに40時間以上かかりたくありません。