git bisect

bisect是git的一个参数,man里面介绍的是
"Find by binary search the change that introduced a bug."

我们还是用wine来举例子,从wine-1.1.24到wine-1.1.25之间,有303次变更,但是我们不确定是哪次变更导致Baidu HI无法使用了,如果要追查的话,就需要git bisect的帮忙了。

首先执行
git bisect start
命令,然后执行
git bisect good wine-1.1.24

git bisect bad wine-1.1.25
...
git reset


此时,就版本历史就定位到1.1.24和1.1.25中间的那个版本了,如果是提交了303次,应该就是151次或者152次那个版本,这时候如果编译,测试,通过的话,执行git bisect good,版本就变更到151 + (151 / 2),如果没有通过的话,就执行git bisect bad,版本就变更到151 - (151 / 2),完全就是二分查找的过程

如果最终找到了那个出问题的patch,git会给出类似下面的提示

b9f2f9d2265616286eb7a6271852cfdcc121ae90 is first bad commit
commit b9f2f9d2265616286eb7a6271852cfdcc121ae90
Author: Aric Stewart <aric@codeweavers.com>
Date:   Tue Jun 23 14:30:38 2009 +0900

wininet: Improve HTTP status 100 handling.

:040000 040000 a071c537a20a37299e6c1da7eab498c749cac58f 6204ea489fac6ceffc4f01464a4b64d24b9bb36f M      dlls

此时只需要执行git bisect reset,然后git show b9f2f9d2265616286eb7a6271852cfdcc121ae90 | patch -p1 -R,去掉这个patch,如果再次编译,测试通过的话,那就OK了,否则的话,可能就需要自己修改一下那个patch,然后提交给作者了

http://hi.baidu.com/leeight/blog/item/36e76960a2ac644deaf8f809.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值