与えられた:
Repository_1-ソース
Repository_2-宛先
Svnadminとsvndumpfilterの組み合わせを使用してRepository_1/Folder1のダンプファイルを作成しました
Repository_1/Folder1からRepository_2/Truckにダンプファイルからロードする場合はすべて問題ありません[〜#〜] but [〜#〜]
Repository_1/Folder1/Sub-folder(このために別のダンプを作成しました)からRepository_2/trunkにロードすると、次のエラーが発生します。
svnadmin: File not found: transaction '267-89', path 'trunk/Folder1/Sub-folder'
誰か説明できますか?
宛先の構造(空のフォルダー)を事前に作成する必要があることがわかりました。したがって、これを実行したい場合:
Repository_1/Folder1/Sub-folder(このために別のダンプを作成)からRepository_2/trunkにロードする場合
この構造をsvnで作成する必要があります
Repository_2/trunk/Folder1
注:フォルダ自体ではなく、親を作成するだけでよいので、作成しないでくださいRepository_2/trunk/Folder1/Sub-folder
最近のサーバーのアップグレードとsvnadmin dump/load
サイクルに起因するこのエラーが発生しました。問題は、リポジトリが作成されたディレクトリとは別のディレクトリにリポジトリを設定していたことでした。
古いマシンでは、inetd.conf
を使用してsvnserve
を実行していました。
svnserve -r /var/svn/main
リポジトリは/ var/svn/mainにありました
ただし、新しいマシンでは、inetd.conf
が/var/svn
を指しています。
svnserve -r /var/svn
古いサーバーからのチェックアウトがすでにあったので、URLに別のコンポーネントを誤って追加したために宛先パスをコミットしようとしたときに存在しなかったため、svn://Host/source/trunk
はsvn://Host/main/source/trunk
になりました。
ディレクトリを移動することで修正できたかもしれませんが、代わりにsvn switch --relocate
を使用して作業コピーのURLを書き換えることを選択しました。
注:これが問題であるかどうかを確認するための簡単な診断は、作業コピー内のディレクトリーに変更し、svn info
と入力してリポジトリーURLを取得してから、svn ls <myUrl>
と入力することです。これでNo repository found
エラーが発生した場合は、これが原因であることがわかります。
誰かがtrunk/Folder1からtrunk/Folder1/Sub-folderに何かをコピーした場合、このエラーが発生します。ダンプにtrunk/Folder1/Sub-folderのみを含めたため、trunk/Folder1から必要なファイルを見つけることができなくなり、このエラーで停止します。
これを解決するには、コピーのソースであるすべてをダンプに含める必要があります。
このスレッド に記載されているように、svnrdump
はsvndump
とは動作が異なります。
svndump
+ svndumpfilter
:
svnrdump
:
svndumpfilter include
と同等の処理を行う場合は、サブパスが必要です。たとえば、svnrdump https://server.example.com/svn/repo/branches/1.4
は、/ branchs /1.4に影響するすべてのリビジョンを取得します。| svndumpfilter include / --drop-all-empty-revs --renumber-revs
が必要になる場合があります。結論:svnrdump
の方がおそらくうまくいくでしょう。
trunk/Folder1
の作成がsvndumpfilterによってフィルタリングされたため、ダンプのロードは失敗します。 このブログ投稿 によると、これらの手順はダンプで必要です:
ダンプ自体を編集し、最初のリビジョンに次のブロックを追加することで、ダンプにtrunk/Folder1を作成できます。
Node-path: trunk/Folder1
Node-action: add
Node-kind: dir
Prop-content-length: 10
Content-length: 10
PROPS-END
このブロックは、最初のリビジョンの小道具ブロックに挿入する必要があります。
次に、ダンプをsvnadminでロードできます。