什么是确定何时财产上的文件或文件夹设置最简单的方法? 基本上,我在寻找“SVN指责”,关于性工作的等效。
日志子命令使一个获得一个文件或文件夹,当属性已被修改,包括的完整历史。 但是,它不是一个属性修改和其他类型的修改,当然这也意味着它不会告诉你有关特定属性的历史什么区别。
status命令属性和其他类型的修改的区分,但只适用于工作副本。
怪,本身只支持文件,而不是目录,它的工作原理上的内容,而不是性能。
想法?
什么是确定何时财产上的文件或文件夹设置最简单的方法? 基本上,我在寻找“SVN指责”,关于性工作的等效。
日志子命令使一个获得一个文件或文件夹,当属性已被修改,包括的完整历史。 但是,它不是一个属性修改和其他类型的修改,当然这也意味着它不会告诉你有关特定属性的历史什么区别。
status命令属性和其他类型的修改的区分,但只适用于工作副本。
怪,本身只支持文件,而不是目录,它的工作原理上的内容,而不是性能。
想法?
我能想到的最好的是编写使用了svn propget子命令转储当前属性值到一个文本文件,一个脚本或应用程序,然后通过修改反倾销财产到另一个文本文件,并比较两个走回来。 当它检测到变化,它打印出的版本号与谁犯它的用户一起(实际上是进行了更改后的版本号)。
这里有一个例子命令转储的svn:在修订80忽略字典目录属性:
svn propget -r 80 svn:ignore dictionary
获得当一个给定文件夹的属性已经改变列表的一种方法是:
svn log -v . |grep " M /trunk/datacenter$" -B2
这给下面的输出:
r963 | someuser | 2013-08-26 20:32:37 +0200 (Mon, 26 Aug 2013) | 4 lines
Changed paths:
M /trunk/datacenter
--
r908 | someotheruser | 2013-08-15 12:15:03 +0200 (Thu, 15 Aug 2013) | 1 line
Changed paths:
M /trunk/datacenter
--
r413 | someuser | 2013-04-26 09:02:08 +0200 (Fri, 26 Apr 2013) | 1 line
Changed paths:
M /trunk/datacenter
然后你可以看一下各个版本,看看有什么变化:
$ svn diff -c963
在底部:
...
Property changes on: .
___________________________________________________________________
Modified: svn:ignore
## -22,3 +22,5 ##
.idea
.classpath
+
+dev-config.groovy
缺点:
注:不知道-B2是在所有的情况下足够了,行了“M /中继/数据中心”可能不是第一线
#!/bin/bash
# This is not a great solution, but it works for gathering the data
CURRENT_REVISION=95300
OLDEST_REVISION=93000
URL="file:///home/svn/repo/project/dir/target.c"
PROPERTY_NAME="svn:externals"
for i in `seq $OLDEST_REVISION $CURRENT_REVISION`
do
svn -r$i propget "$PROPERTY_NAME" "$URL" | sed -e "s/^/$i\t/"
done
我的SVN的扩展工具箱现已svn-prop-annotate
和(作为专业化) svn-mergeinfo-annotate
的命令。 他们表现不佳(因为它们运行svn log
和svn diff
每个潜在的变化),并且可能仍有一些依赖性和perculiarities我特别的工作作风,但尝试一下,如果你有足够的绝望。
下面是一些示例输出:
$ svn-mergeinfo-annotate --author karkat -l 5
67645 ingo.karka Merged /branches/1.50/foobar:r67488
67423 ingo.karka Merged /branches/1.50/foobar:r67315,67331
67339 ingo.karka Merged /branches/1.50/foobar:r67279
53320 ingo.karka Merged /branches/foo-1.01:r53317