Code Swarm一个可以生成可视化项目代码贡献视频的软件,支持使用svn、cvs、git等代码管理工具提交的日志生成动画。
参考视频:豆瓣代码大爆炸视频
下面介绍svn的提交日志生成代码视频
环境需求
JAVA环境 http://www.python.org/download/
python环境 http://www.java.com/zh_CN/download/manual.jsp
下载之后安装并配置相应的环境变量,如果是windows安装过程中会自动帮你写入到环境变量中,所以不需要做其他配置
具体过程
CodeSwarm的svn地址:http://codeswarm.googlecode.com/svn/trunk
1、下载最新的CodeSwarm代码,仔细阅读目录下的README文件,按照里面的步骤配置好环境
windows详细过程:
下载Apache Ant http://ant.apache.org/bindownload.cgi ,解压到c盘下,然后配置环境变量,桌面右键我的电脑->高级->环境变量找到PATH变量将C:\apache-ant-1.7.0\bin;添加到内容的最后,1.7.0请修改为你相应的ant文件夹名字
2、cmd进入命令行模式,cd到codeswarm文件夹,执行ant命令编译生成可执行文件
3、将svn的提交日志文件(如svn_log.txt)复制到convert_logs目录,cmd命令行模式进入convert_logs目录,用以下命令生成codeswarm可识别的xml文件
convert_logs.py -s svn_log.txt -o sample-repevents.xml
4、将生成的sample-repevents.xml文件复制到data目录下,注意先备份原来的sample-repevents.xml文件
运行codeswarm根目录下的run.bat文件,enter键就可以看到代码视频了
注意
有的同学可能拿不到项目的svn服务器的日志文件,这里提供另外一种可以获得svn日志文件的方法
1、项目文件右键TortoiseSVN->显示日志->全部显示
2、选中第一条日志并拖动到最后按shift点击最后一条选中全部的日志,右键复制到剪贴板
3、新建txt文件并将日志粘贴到文件内
这时我们就有了全部的日志记录,但是这个日志文件内容格式还不是codeswarm能识别的文件,下面是一段php代码,用此代码处理后会生成新的文件,生成的文件才是codeswarm能识别的svn日志文件
$svnlogs = file_get_contents("svn_log.log");
$svnlogs = str_replace('
', '', $svnlogs);
$svnlogs = str_replace('版本: ', '
------------------------------------------------------------------------
r', $svnlogs);
$svnlogs = str_replace('作者: ', ' | ', $svnlogs);
$svnlogs = str_replace('日期: ', ' | ', $svnlogs);
$svnlogs = str_replace('信息:', ' | 100 lines
Changed paths:', $svnlogs);
$svnlogs = str_replace('已修改 :', '
M', $svnlogs);
$svnlogs = str_replace('已增加 :', '
M', $svnlogs);
$svnlogs = str_replace('已删除 :', '
D', $svnlogs);
$svnlogs = str_replace(' 星期一', '', $svnlogs);
$svnlogs = str_replace(' 星期二', '', $svnlogs);
$svnlogs = str_replace(' 星期三', '', $svnlogs);
$svnlogs = str_replace(' 星期四', '', $svnlogs);
$svnlogs = str_replace(' 星期五', '', $svnlogs);
$svnlogs = str_replace(' 星期六', '', $svnlogs);
$svnlogs = str_replace(' 星期日', '', $svnlogs);
$svnlogs = str_replace('年', '-', $svnlogs);
$svnlogs = str_replace('月', '-', $svnlogs);
$svnlogs = str_replace('日', '', $svnlogs);
file_put_contents('svn_log.txt', $svnlogs);
echo "<pre>".$svnlogs;
exit;