背景:编写一个自动发布脚本,从SVN导出版本之间更改的文件并上传到远程服务器。
svn log 命令显示修改的文件and属性,但似乎没有区分内容修改和属性修改之间的详细输出。
我是否错误地读取了此输出,或者是否有一种简单的方法可以获取修订之间已更改文件的列表,同时忽略道具更改
这是我的示例 cmd:
#: svn log "someurl" -r 2210:HEAD -v -q
Output:
------------------------------------------------------------------------
r2211 | author | 2010-02-08 12:36:56 +1300 (Mon, 08 Feb 2010)
Changed paths:
M /branches/project/release-v1-r-maintenance
M /branches/project/release-v1-r-maintenance/offroot/
M /branches/project/release-v1-r-maintenance/offroot/test.config
------------------------------------------------------------------------
前两项只是道具更改(合并信息、忽略等),而第三项是实际的内容编辑,这是我想要抓住的真实项目,以避免导出整个根。
无论如何,是否可以从 svn 日志或其他命令中获取/过滤掉内容更改。
这是我刚刚编写的一个脚本,用于获取所有修订的详细日志,其中当前 svn 目录中的属性更改已完成。只需将正确的开始和结束版本放置在您猜测发生属性更改的位置即可。它不是很快,但是很有效。
#!/bin/bash
# Show the verbose log of the revisions, where svn properties
# inside the current folder where added/removed
startrev=4600
endrev=4620
for i in $(eval echo {$startrev..$endrev})
do
svn diff -c $i 2>/dev/null | grep "Property changes on" 1>/dev/null
if [ $? == 0 ]; then
echo "Property change in revision $i:"
svn log -r $i --verbose
fi
done
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)