缘起
因为需要分析 tfs
提交日志,并按照一定条件(比如,提交信息或者用户名)分类整理,特意写了这个小工具。在使用过程中发现,某些情况下会花费很长时间才能返回处理结果,当时稍稍做了一些优化,已经能满足当时的应用场景了。但是在处理大文件的时候依然会花费很长时间。忍了这么久了,终于有机会做一次效率优化了。
实现逻辑介绍
整体实现逻辑并不复杂,这里稍微作下介绍:
打开需要处理的日志文件(通过 -t
参数传递,如果没指定就默认打开 tfs.txt
),然后按行读取,并通过 IsSplitter()
函数判断当前行是否是分割符(由很多 -
组成),如果是就继续读取相关的字段(变更集,用户,日期,注释,项 等),直到遇到下一个分隔符或者文件结尾。找出一条完整的提交记录后,会根据用户指定的过滤条件进行过滤分组,把结果输出到对应的文件中。整个过程完全是在主线程中完成的,没有用到辅助线程。
这里列出两个关键的结构定义:
class ItemInfo { public string status; public string path; public override string ToString() { StringBuilder sb = new StringBuilder(); sb.AppendFormat(@" {0} {1}{2 |