首页 > 代码库 > 转换QTP对象库xx.tsr文件为xx.xml文件以便git跟踪

转换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的配置。例如:

  1. 在仓库根目录下创建.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文件夹下。

转换QTP对象库xx.tsr文件为xx.xml文件以便git跟踪