群英汇 TopGit 改进 (3): 更灵活的 tg patch
命令 tg patch 命令,就类似 Hg/MQ 的 hg qdiff 命令,用于查看当前特性分支所有改动。
这个命令很常用,但是很快就发现这个命令的一个问题:即只能在代码库的根下执行,在任何子目录中执行 tg patch,显示的结果为空!有好几次都因为这个问题被骗了。这是什么原因呢?
用 tg patch 查看补丁,可以运行在任意目录下
命令 tg patch,是在 Topgit 的代码 tg-patch.sh 中完成的。经过分析代码(shell脚本)很快就定位到问题所在,只要在执行特定的命令前,切换到版本库的根目录就可以了。可是如何判断当前路径和版本库根路径的关系呢?答案就在:git rev-parse --show-cdup这条命令返回的是要从版本库工作区的某个目录,返回到版本库根路径要经过的路径。
- 可能是空 —— 当前就是根
- 可能是 ../ —— 在版本库的一级子目录中
- 可能是 ../../ —— 在版本库的二级子目录中
- 依次类推