11

背景:编写一个自动发布脚本,将版本之间的更改文件从 SVN 导出并上传到远程服务器。

svn log 命令显示修改后的文件属性,但似乎无法区分内容修改和属性修改之间的详细输出。

我是不是读错了这个输出,或者有没有一种简单的方法来获取修订之间的更改文件列表,同时忽略道具更改

这是我的示例 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 日志或其他命令中获取/过滤掉内容更改。

4

5 回答 5

4

这是我刚刚编写的一个脚本,用于获取所有修订的详细日志,其中在当前 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
于 2011-02-01T11:18:20.107 回答
3

仅供参考,我在How to make 'svn log' ignore property changes? 上发布了一个 bash 脚本?这实现了 jeroenh 所暗示的...处理 svn log 的输出以驱动 svn diff 并过滤后者的输出。

于 2010-08-18T03:02:03.560 回答
1

我知道这个问题已经得到解答,但如果有人想要一个小指南,我已经写了这篇关于如何从 svn log/diff (包括 bash 脚本、xslt 和 oracle 数据库脚本)获取可查询数据的帖子。这样做使您可以针对视图运行各种有用的查询v_svnlog

此补丁中的“热”文件:

select path, count(*) num from v_svnlog
group by path
order by num desc, path asc

作者的大多数测试

select author, count(*) num from v_svnlog
where path like '%Test%'
group by author
order by num desc

等等...

于 2011-04-01T09:00:02.080 回答
1

我认为唯一的方法是实际解析每次修订的差异输出,尽管这看起来相当脆弱,而且可能非常缓慢......

这是 diff 条目如何查找仅具有更改属性的文件:

c:\test\wc>svn diff -c 3

Property changes on: test.txt
___________________________________________________________________
Added: test
   + test

这是 diff 条目如何查找具有更改的内容和更改的属性的文件:

c:\test\wc>svn diff -c 4
Index: test.txt
===================================================================
--- test.txt    (revision 3)
+++ test.txt    (revision 4)
@@ -1 +1,2 @@

+asdfads

Property changes on: test.txt
___________________________________________________________________
Added: someproperty
   + somepropertyvalue
于 2010-02-09T00:15:43.020 回答
0

这行得通吗?

svn log --xml --with-no-revprops
于 2010-02-09T00:08:21.850 回答