我有一个 SVN 存储库,其中存储了很多子项目。现在在我post-commit
的机器上,我只是循环遍历机器上所有可能的文件夹并svn update
在每个文件夹上运行:
REPOS="$1"
REV="$2"
DIRS=("/path/to/local/copy/firstproject" "/path/to/local/copy/anotherproject" ... "/path/to/local/copy/spam")
LOGNAME=`/usr/bin/whoami`
for DIR in ${DIRS[@]}
do
cd $DIR
sudo /usr/bin/svn update --accept=postpone 2>&1 | logger
logger "$LOGNAME Updated $DIR to revision $REV (from $REPOS) "
done
问题是,当我只是提交其中一个项目的子文件夹时,这是缓慢且多余的。我想知道是否有更好的方法来确定我应该使用哪个 DIRS 并只更新那个。
有什么办法可以做到这一点?据我所知,无法确定 repo 的哪一部分已提交,因此需要更新哪个目录。
为每个项目创建单独的存储库是唯一的选择吗?(可能应该从一开始就这样做,如果是这样......)
svnlook dirs-changed
是你要找的:尝试这样的事情:
根据 quanta 的帮助,这是我最终使用的脚本:
请注意,我必须添加的一件大事是这
declare -A PROJECTS
条线。出于某种原因,关联数组/哈希在我这样做之前不会起作用。