在没有新修订的情况下修复svnsync'd副本中的svn:externals属性?

时间:2012-02-07 02:59:49

标签: svn bash svnsync

如果我对(svn:externals'd)存储库的本地副本拥有管理员权限,如何修复现有修订版的svnsync属性?

让我用一个名为fixup.sh的脚本来展示这个想法,并放在本地存储库根路径中(包含conf/db/,{{1的文件夹等等):

hooks/

请注意,除非转义,否则该脚本不适用于包含空格的路径。

不幸的是,这种修改会产生新的修改,这反过来又无法从原始远程仓库逐步更新本地仓库。

我希望在#!/usr/bin/env bash CURRBASENAME=$(dirname $(readlink -e $0)) svn propget -R svn:externals "file://$CURRBASENAME"|while read extrnls; do [[ -n "$extrnls" ]] || continue LOC=$(echo "$extrnls"|cut -f 1 -d ' ') NME=$(echo "$extrnls"|cut -f 3 -d ' ') REV=$(echo "$extrnls"|cut -f 4 -d ' ') [[ "${REV:0:2}" == "-r" ]] || REV='' [[ -z "$REV" ]] && EXT=$(echo "$extrnls"|cut -f 4 -d ' ') [[ -n "$REV" ]] && EXT=$(echo "$extrnls"|cut -f 5 -d ' ') LOCALIZED="^/${EXT##*/svn/}" svnmucc -n -m "Adjusting svn:externals $NAME to: $LOCALIZED $REV" propset svn:externals "$NME $REV $LOCALIZED" "$LOC" done 阶段期间执行此操作,例如通过钩子。提出的“解决方案”here更像是一个解决方案,而不是解决方案,因为这意味着我必须在同步后每次都重写历史记录,实际上必须保留两个单独的副本:一个修改后,一个“原始” (好吧,除了次要的sync修正)。

注意:我正在处理回购,而不是工作副本。另请注意,svnsync 是revprop!

0 个答案:

没有答案