web-dev-qa-db-ja.com

dumpfileからのSvnadminロードにより、「ファイルが見つかりませんエラー」が発生します。助けて?

与えられた:

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'

誰か説明できますか?

27
Chicago

宛先の構造(空のフォルダー)を事前に作成する必要があることがわかりました。したがって、これを実行したい場合:

Repository_1/Folder1/Sub-folder(このために別のダンプを作成)からRepository_2/trunkにロードする場合

この構造をsvnで作成する必要があります

Repository_2/trunk/Folder1

注:フォルダ自体ではなく、親を作成するだけでよいので、作成しないでくださいRepository_2/trunk/Folder1/Sub-folder

34
Chicago

最近のサーバーのアップグレードと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/trunksvn://Host/main/source/trunkになりました。

ディレクトリを移動することで修正できたかもしれませんが、代わりにsvn switch --relocateを使用して作業コピーのURLを書き換えることを選択しました。

注:これが問題であるかどうかを確認するための簡単な診断は、作業コピー内のディレクトリーに変更し、svn infoと入力してリポジトリーURLを取得してから、svn ls <myUrl>と入力することです。これでNo repository foundエラーが発生した場合は、これが原因であることがわかります。

1
the_mandrill

誰かがtrunk/Folder1からtrunk/Folder1/Sub-folderに何かをコピーした場合、このエラーが発生します。ダンプにtrunk/Folder1/Sub-folderのみを含めたため、trunk/Folder1から必要なファイルを見つけることができなくなり、このエラーで停止します。

これを解決するには、コピーのソースであるすべてをダンプに含める必要があります。

1
stmax

このスレッド に記載されているように、svnrdumpsvndumpとは動作が異なります。

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の方がおそらくうまくいくでしょう。

1
Chris Jones

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でロードできます。

0
CharlesB