2010-01-19

群英汇 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
这条命令返回的是要从版本库工作区的某个目录,返回到版本库根路径要经过的路径。
  • 可能是空 —— 当前就是根
  • 可能是 ../  —— 在版本库的一级子目录中
  • 可能是 ../../ —— 在版本库的二级子目录中
  • 依次类推
于是很简单的,我们的改进就诞生了。诞生在 群英汇 Topgit 改进的 tg_patch_cdup 分支中,参见:
blog comments powered by Disqus