繁体   English   中英

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

[英]Subversion: Generate a full diff from every checkin that includes username

我有一位不太了解源代码控制的教授。 他要求我们使用注释来确定谁编写了每一行代码。 大多数班级都使用电子邮件作为版本控制,使用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系统上生成差异)

在我看来,您想要svn blame类的东西。

如果需要百分比,可能需要一些后期处理。 而且,您还必须担心修改会影响到最后接触该行的人。

要回答问题的第二部分,如果您知道Python(或类似的Python),您会发现可以为您处理SVN集成的库。 这比通过bash与SVN对话并尝试询问SVN可执行文件的输出要简单得多。

例如,参见Pysvn

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

对于每个文件,即类似于以下内容:

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的用户的唯一列表。

使用此列表和wc ,并for命令你可以尝试计算百分比...

祝好运!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM