これを試してください(これを理解しただけです)
1) 同期しているリポジトリの作業コピーをチェックアウトします
2a) ソース リポジトリから svn diff -rcurrent:next を使用してパッチを生成します (つまり、current が現在のリビジョンで、next が次の壊れたリビジョンです)。
2b) または、同期しているリポジトリにダミー ファイルを追加してタグを付ける (何かをチェックインできるようにする)
3) svn ci -m 'syncfix' を実行すると、同期先のリポジトリがバンプされます
4) この後、ほとんどの場合、svnsync 同期が続行されます
5) ときどき、HEAD が将来の 1 つのリビジョンであると不平を言うことがあります。これを修正するには、/db/revprops/0 に移動して 0 ファイルを編集し、chmod +w 0 リビジョンをバンプします。
....
svn:sync-last-merged-rev
V 4
8499 <--- this one, add one to it so 8500 in this example
END
6) この後、svnsync 同期が続行されます
7) 以下は、私がバンプを乗り越えるために作成したスクリプトです。最終結果はおそらく完璧ではありませんが、ほとんどのものを取得できます。その後、リポジトリの HEAD からエクスポートすることで最終結果を修正できます。から同期しています。
set -x
SYNC_REPO=/repo/reelbox.org-sync
SRC_WD=/src/Multimedia/Reelbox/reelbox.org
SYNC_WD=/src/Multimedia/Reelbox/reelbox.org-sync
bumpRevision()
{
SYNC_REPO_FILE=$SYNC_REPO/db/revprops/0/0
cd $SYNC_WD
svn update
CUR_REV=`svn update | awk '{print $3}' | sed s/\.$//`
echo $CUR_REV
NEXT_REV=`expr $CUR_REV + 1`
echo $NEXT_REV
cd $SRC_WD
echo svn diff -r$CUR_REV:$NEXT_REV, >>SYNCLOG
svn diff -r$CUR_REV:$NEXT_REV 2>>SYNCLOG >$SYNC_WD/patch.in
echo >>SYNCLOG
LOG=`svn log -r$NEXT_REV`
cd $SYNC_WD
patch -p0 < patch.in
RESULT=`svn diff`
echo $LOG
echo $RESULT
if [ -n "$RESULT" ]; then
echo patched
svn ci -m "syncfix:$LOG"
else
echo not patched
if [ ! -f FIXFILE ]; then
echo $NEXT_REV > FIXFILE
svn add FIXFILE
else
echo $NEXT_REV >> FIXFILE
fi
svn ci -m "syncfix:nothing patched:$LOG"
fi
}
doSync()
{
svnsync sync file://$SYNC_REPO
STATUS=$?
if [ $STATUS == 1 ]; then
ECODE=`svnsync sync file://$SYNC_REPO 2>&1 | awk '{print $2}' | sed s/:$//`
echo $ECODE
case $ECODE in
E000022)
exit 1
;;
esac
fi
return $STATUS
}
# bumpRevision
doSync
while [ $? == 1 ]; do
bumpRevision
doSync
done
オンドレイ・ポップ