写代码的,版本控制工具已经成为日常开发必备。版本控制系统(version control system)不要太多,早有svn、ClearCase,后有Git、Mercurial。毫无疑问,Git已是主流。本文只讲Git相关的小工具。
Git bash
即git工具的命令行,下面讲的所有工具全部都是建立对在git bash的封装之上,调用git bash命令行完成其功能。安装好Git之后,在任意目录下面右键即可看到Git bash 和Git GUI。这个需要记住一些基本的命令行即可。
Git GUI
IDEA Version Control
实际上,使用IDEA自带的Version Control就已足够应付日常开发需求;且随着IDEA版本的升级,每次都会看到一些新的功能或者改进。不得不赞赏JetBrains公司的产品称得上匠艺制作。
基本使用看图如下,应该能够明白绝大多数的操作。
TortoiseGit
最早是有TortoiseSVN这个工具的,看到svn大势已去,适时推出TortoiseGit这个应用于Git的GUI工具。工作第一年用过。后面觉得完全必要,遂弃之。
sourcetree
可以说是最强大的Git GUI工具。
关于 sourcetree:
分支共有5种类型
- master,最终发布版本,整个项目中有且只有一个
- develop,项目的开发分支,原则上项目中有且只有一个
- feature,功能分支,用于开发一个新的功能
- release,预发布版本,介于develop和master之间的一个版本,主要用于测试
- hotfix,修复补丁,用于修复master上的bug,直接作用于master
当开发中需要增加一个新的功能时,可新建feature分支,用于增加新功能,并且不影响开发中的develop源码,当新功能增加完成后,完成feature分支,将新功能合并到develop中,更新develop上的代码。
git log
- 统计个人代码量:
git log --author="johnny" --pretty=tformat: --numstat | awk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "added lines: %s, removed lines: %s, total lines: %s\n", add, subs, loc }' -
- 贡献值统计:
git log --pretty='%aN' | sort -u | wc -l
- 查看排名前 5 的贡献者:
git log --pretty='%aN' | sort | uniq -c | sort -k1 -n -r | head -n 5
git_stats
安装git_stats
:sudo gem install git_stats
运行:git_stats generate
打开git_stats
目录下面生成的HTML文档:cd git_stats && open index.html
Windows版本?
cloc
cloc (Count Lines Of Code),用于统计开发到一定阶段的代码库的代码规模,类数,代码行等统计信息。cloc之前托管于SourceForge,后来迁移开源到GitHub-cloc。使用perl语言开发,故而可以在任何系统安装使用,支持各种主流语言。
安装
对于Windows系统而言,从这里下载得到老版的exe文件,或者强烈建议去GitHub repo的release页面直接下载最新版本。不需要双击exe文件执行安装。打开命令行即可cloc-1.80.exe
回车即可看到工具的使用help文档。
也可以这样安装:npm install -g cloc
简单使用:
cloc [options] <file(s)/dir(s)/git hash(es)>
Count physical lines of source code and comments in the given files (may be archives such as compressed tarballs or zip files) and/or recursively below the given directories or git commit hashes.
cloc [options] --diff <set1> <set2>
Compute differences of physical lines of source code and comments between any pairwise combination of directory names, archive files or git commit hashes.
cloc [options] <file(s)/dir(s)/git hash(es)> | <set 1> <set 2> | <report files>
实例
作用于单个文件:cloc-1.80.exe 'E:\GitHub\test\pom.xml'
作用于单个目录:cloc-1.80.exe 'E:\GitHub\test'
作用于多个目录:cloc src/ include/ main.c
输出统计信息到文件,支持其他形式的文本文件:cloc-1.80.exe 'E:\GitHub\test\pom.xml' --out 1.txt
排除特性语言的文件:cloc-1.80.exe --include-lang=js 'E:\GitHub\test'
比较:cloc --diff Python-3.5.tar.xz python-3.6/
具体使用参考文档:
- 命令行
cloc-1.80.exe
输出的 help 信息,超级详细,跟随版本走; - http://cloc.sourceforge.net/ 可能有些过时;
- GitHub README,最新文档。
参考
Git代码统计