[英]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.