svnsync エラー「svnsync: Revision being currently copied~」

svnsync の同期でエラーとなり同期できないなった場合の対処方法

svbversionのバックアップで定期的にsvnsync で同期をとってバックアップしています。最近、実行すると以下のエラーになりました。

$ svnsync sync file:///home/admin/svnrepo
svnsync: Revision being currently copied (1014), last merged revision (1012), and destination HEAD (1013) are inconsistent; 
have you committed to the destination without using svnsync?

エラーとなった原因を調べてみると、以下の原因が考えられるようです。

  • 同期先リポジトリに直接コミットされた場合
  • 不正な操作でsvn:sync-*プロパティに不正値が設定された場合

リポジトリの初期化

解決方法は色々とやりましたがうまくいかないので、リポジトリの初期化して再同期することにしました。まずは初期化の手順を以下となります

1.新しい空のリポジトリを作成する
エラーとなっているリポジトリは、一旦リネームでバックアップしてから、新しいリポジトリを作成します。

# 以前のリポジトリはリネームして、再度同じディレクトリを作成
$ mv /home/admin/svnrepo /home/admin/svnrepo_bak
$ mkdir /home/admin/svnrepo

# 新しいリポジトリを作成
$ svnadmin create /home/admin/svnrepo

2.リポジトリを初期化
下記のコマンドでリポジトリの初期化を実行します。

# 【書式】svnsync init [コピー先URL, ディレクトリ] [コピー元URL, ディレクトリ]
$ svnsync init file:///home/admin/svnrepo https://example.com/svnrepo

3.フックスクリプトの設定
リポジトリのフックスクリプトを設定します。

$ echo '#!/bin/sh' > /home/admin/svnrepo/hooks/pre-revprop-change
$ echo 'exit 0' >> /home/admin/svnrepo/hooks/pre-revprop-change
$ chmod +x /home/admin/svnrepo/hooks/pre-revprop-change

初期化したレポジトリの再同期の実行

初期化が正常に行われたら、下記のコマンドで再同期を実行します。全リビジョンをコピーするのでリポジトリが大きいとすごく時間がかかります

$ svnsync sync file:///home/admin/svnrepo

 

スポンサーリンク

0
0