转换QTP对象库xx.tsr文件为xx.xml文件以便git跟踪
众所周知,Git仅能跟踪文本文件,而QTP所生成的对象库文件xx.tsr是一种二进制文件,不可以被git所跟踪。本文详细介绍了利用git的hooks特性,来将xx.tsr文件转换成xx.xml文件,以便跟踪对象库的版本历史。
首先,git的hooks特性是指在特定事件发生之前或者之后执行特定脚本代码的功能(从概念上类比,与监听事件、触发器等类似)。特定事件既是指git执行的特定事件,如commit,push,recieve等,以下是常见的git事件:
applypatch-msg
pre-applypatch
post-applypatch
pre-commit
prepare-commit-msg
commit-msg
post-commit
pre-rebase
post-checkout
post-merge
pre-receive
update
post-receive
post-update
pre-auto-gc
post-rewrite
在本文中,我们要用到的事件是 pre-commit和post-merge。其配置方法如下:
一)第一种方式:默认hooks目录
每个git仓库下都包含有.git/hooks目录,里面就是放置hooks(脚本)的地方,当git事件执行时,相应的hooks(脚本)就会自动执行。
注意:
git事件对应的hooks的脚本文件名"必须"与事件列表名一样(默认.git/hooks下的事例都是以.sample结尾,使用时要去掉后缀),例如写pre-commit事件的hooks时,文件名必须是pre-commit,而不是pre-commit.sample。
二)第二种方式:自定义hooks目录
创建一个.gitconfig文件,里面指定hooks目录地址,然后使用.gitconfig的配置。例如:
在仓库根目录下创建.gitconfig文件,并包含如下内容:
[core]
hooksPath=./libs/hooks
2. 运行如下命令来引用.gitconfig
#git config --local include.path ../.gitconfig
为了方便使用,我已经在我的GitHub上面创建了Sample仓库,大家可以clone下来直接使用。里面根据第二种方式配置了两个脚本:pre-commit和post-merge,用来实现commit前自动将xx.tsr转换成xx.xml文件以便跟踪,以及当pull下来并且merge后,再将xx.xml文件转换成QTP可使用的xx.tsr文件。
Github地址:https://github.com/TaoismLEE/Sample.git
注意:
1. clone下来后,一定记得运行git config --local include.path ../.gitconfig来引用配置;
2. 初次将xx.tsr文件放于libs文件夹下。