60466


タイトルの通りですが、boostのライブラリ、includeファイルをコミットしようとすると、  
エラーが発生し、コミットできません。またエラーの意味もよくわかりませんので、対処ができないです。対処方法が分かる方教えていただけないでしょうか？


CC BY-SA 4.0
2019-11-12T07:05:24.170
60448
2019-11-13T04:07:41.403
31497
question
c++ boost svn
TortoiseSVNでコミットする際に「表現ヘッダが不正です」というエラーがでる。


subversionでは[Malformed representation
header](https://translations.launchpad.net/ubuntu/quantal/+source/subversion/+pots/subversion/ja/+filter?person=dev-
subversion&memo=200&start=200)に対して「不正な表現ヘッダです」という翻訳が割り当てられているので、おそらくこのエラーと推測いたします。

subversionサーバのデータ移行や復元または大量データのコミットなど何らかの要因でリビジョンとファイルに不整合が出ると上記のエラーが発生するようです。  
「泥臭い」方法ですが、サーバ側でdump他バックアップを取っておいて別のディレクトリやサーバで再構築することで解決できる見込みがあります。

エラーに直面した方がサーバにアクセスできない場合は、サーバ管理者に相談すると良いでしょう。  
クライアント側では何もできないような気がしますが、念のため下記の作業をしておきましょう。

  * 修正後のファイルをバックアップしておき、クリーンアップしてコミットする
  * それでだめなら新規ディレクトリにチェックアウトしてコミットを試みる
  * それでだめならTortoiseSVNのエラー画面と[本家の類似質問](https://stackoverflow.com/q/5543285)をメールか何かでサーバ管理者に送信する

本家の質問ではサーバでハードディスク障害が発生してデータ移行を行った後に同様のエラーが発生しましたが、質問者自身がsvnadminを使って[解決](https://stackoverflow.com/a/5600293)しています。

本家質問の奮闘記の要約

  1. サーバのディスク障害でリビジョン823が壊れてverifyすると`svnadmin: No such revision 823`が出る
  2. リビジョン823のファイルが無くなってる。けど直近のバックアップは該当リビジョンを含むからdumpからパッチ当てて復旧したい
  3. 新しいリポジトリ作ってdump当てたいけど移行元が`"linear" format 3`って古いフォーマットだからうまく行かない
  4. とりあえず新リポジトリにcpコマンドで愚直にコピペしてverifyしてみたらまだエラーが起こる

svnadmin: /build/buildd/subversion-1.6.12dfsg/subversion/libsvn_delta
/compose_delta.c:165: search_offset_index: Assertion `offset <
ndx->offs[ndx->length]' failed.

  5. その後svnadminコマンドで試行錯誤しても効果なし

  6. 考え方を変えて障害のリポジトリから「正常な(はずの)」リビジョン824以降をdumpしてバックアップに適用しよう。でもdumpとれない。incrementalにリビジョン指定してもdumpとれない

$ svnadmin dump -r 824 master/ >r824.dmp  
svnadmin: No such revision 823  
$ svnadmin dump --incremental -r 824:947 master/ > dump.txt  
svnadmin: No such revision 823

Update:

  1. バックアップから作ったリポジトリに、障害のリポジトリからバックアップ後のリビジョン(Rev.910-947)だけコピペでマージしよう  
`$ for a in $(seq 910 947) ; do cp master/db/revs/$a repos/db/revs ; cp
master/db/revprops/$a repos/db/revprops/ ; echo $a ; done`

  2. それ以外何もしてないのにリポジトリ破損で「不正な表現ヘッダです」って言われた

svnadmin: Corrupt representation '907 21815 45 30922
158d3e72732f45bf6f02919b22fc899a'  
svnadmin: Malformed representation header

本家回答の要約

手元に`master/`というRev.823が壊れていて最新Rev.947のリポジトリがある。  
そして`repos/`というRev.910までのバックアップから起こしたリポジトリを作った。  
結局`master/`からRev.911以降のリビジョンだけを吸い上げて`repos/`に当てて解決した。

[code]

    $ svnadmin dump --incremental -r 911:947 master/ > tail.txt
    $ cat tail.txt | svnadmin load repos/
    
[/code]


CC BY-SA 4.0
2019-11-13T04:07:41.403
60466
2019-11-13T04:07:41.403
9820
60448
answer