Subversion:从包含用户名的每个签到生成完整差异

时间:2009-04-22 12:43:39

标签: svn diff

我有一位不太了解源控制的教授。他要求我们使用注释来确定谁编写了每行代码。大多数类使用电子邮件作为版本控制,Visual C ++作为语言导致一堆评论,插入符号和生成的代码。我的小组正在使用subversion和C#,我更愿意从存储库中获取历史记录,而不是在每一行都添加注释来混淆代码。

我需要一种方法来生成所有签到的可查看历史记录,以显示每个用户修改了多少来源。

像这样的格式会很好

Andy
/trunk/doc/file.txt (57%)
/trunk/project/app.h (100%)

Brian
/trunk/doc/file.txt (43%)
/trunk/project/app.cpp (60%)

Jeff
/trunk/project/app.cpp (40%)

我该怎么做? BASH有足够的力量做到这一点还是应该使用python? (我会在linux系统上生成diff)

3 个答案:

答案 0 :(得分:5)

在我看来,你想要像svn blame这样的东西。

如果您想要百分比,可能需要一些后期处理。此外,您还必须担心修改计数到最后一个接触该线路的人。

答案 1 :(得分:1)

要回答问题的第二部分,如果您了解Python(或类似),您将找到为您处理SVN集成的库。这比通过bash与SVN交谈并尝试查询SVN可执行文件的输出更简单。

e.g。见Pysvn

答案 2 :(得分:1)

它尚未准备好使用解决方案,但我留给您:)

对于每个文件,即类似于:

for i in `ls -1`; do svn blame...; done

运行:

svn blame full_svn_path_to_file |tr -s '\040' |tr '\040' ';'|cut -d \; -f 3|sort -u

这将为您提供更改文件full_svn_path_to_file的唯一用户列表。

使用此列表以及wcfor命令,您可以尝试计算百分比......

祝你好运!