- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我正在尝试查找自从过去一天在名为 feature-x 的长期分支(将在很久以后发布)上提交以来出现的错误的来源。
虽然有一个错误。我发现我的脚本没有预料到的行为可能已经在迄今为止的任何提交中引入,特别是因为 master 的特性在 feature-x 中大量使用,但在 Master 本身上使用得较少。
要测试此行为,我必须运行我的脚本 dependent.pl。但是当 bisect 跳到代码的一半时,我的脚本在 Master 上不存在,所以无法测试。
我相信这是因为 bisect 将你 pull 出到 headless 状态,但在这种情况下,我真的想处于另一个历史/变更集的上下文中,而不是漂浮在以太中。
在任何人跳起来敲响你做错了蜂鸣器之前,我们的团队喜欢在这些情况下 merge 分支,因为这个比喻适用于这种情况,而不是 rebase 。
我将通过创建示例存储库来对此进行演示:
git init
echo 'sub f { print $_; }' > main.pl
git add .
git commit -a -m "inital commit"
git branch feature-x
git checkout feature-x
echo 'main::f(1)' > dependent.pl
git add .
git commit -a -m "Starting work on feature X"
git tag dev-1.0
git checkout master
echo "sub f { return 1; }" > main.pl
git commit -a -m "sub f { return 1; }"
echo "sub f { return 2; }" > main.pl
git commit -a -m "sub f { return 2; }"
echo "sub f { return 3; }" > main.pl
git commit -a -m "sub f { return 3; }"
git tag release-1.0
git checkout feature-x
git merge master
echo 'print main::f();' > dependent.pl
git commit -a -m "Updating call to f"
现在你得到一个看起来像这样的 repo:
o Updating call to f ( Head of branch 'feature-x' )
o Merge branch master onto feature-x
|\
| o sub f { return 3; } (TAG release-1.0) ( Head of branch 'master' )
| o sub f { return 2; }
| o sub f { return 1; }
o | Starting work on feature X ( TAG 'dev-1.0' )
\|
o initial commit
所以我运行命令 git bisect start feature-x dev-1.0
希望我能够在 dependent.pl 中找到破坏我的代码的地方,我最终提交了 'sub f { return 2 }' 没有我从 feature-x 更改的历史记录(即,如果我运行 ls
,我看到的只是 main.pl 和 dependent.pl 丢失)。
这让我处于无法测试的状态。我不知道当前的提交是否破坏了我的工作,也不能说 master 上的提交破坏了它,所以我不能说这次提交是好是坏。
我如何测试是什么破坏了我当前的分支?
最佳答案
这里的问题是 git bisect 是 分支感知。当您告诉它“dependent”是好的,“test”是坏的,并且其中一个更改是 merge 提交时,它知道为了弄清楚问题是从哪里引入的,它必须查看提交 a、b 和 c - 否则,它只能告诉你它在 merge 提交时是否已损坏。
听起来您期望的是测试提交 b 与来自其他分支的更改的组合,这是任何提交中都不存在的内容,以及 git bisect
只让你测试提交!为了测试该内容,您必须进行一系列测试 merge - 检查 b, merge 依赖,让您测试,然后检查 a 或 c, merge 依赖,让您再次测试。你可以很容易地做到git merge --no-commit dependent
一旦它离开你在提交 b,然后做 git reset --hard
在运行前完成测试 git bisect good/bad
.
否则,如果我误解了你希望它不测试 merge 分支上的 任何 提交,而只测试 merge 提交本身(你不关心 a、b 或c 破坏了它),只需告诉它 merge 分支上的一切都很好。如果您知道 a、b 和 c 与它无关,那就更好了。然后你甚至不用测试就知道它们很好!
但是你无法预料的一件事是 git 会完全忽略提交 a、b 和 c。它绝对无法知道他们的更改是否与您的“错误”相关,并且他们的更改是您的好提交和坏提交之间差异的一部分。
关于git - 为什么 'git bisect' 分支不知道?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3673377/
根据我所见,Python 中的 bisect.bisect 和 bisect.bisect_right 似乎做同样的事情。是否存在任何导致名称差异的差异,或者它们是否具有相同的行为而只是名称不同? 显
我创建了一个列表: arraynums = [ 0.3888553 0.3898553 0.3908553 0.3918553 0.3928553 0.3938553 0.3948553
我正在尝试使用 git bisect 我确定错误的提交是: 2ac4ac0a46d902235a51216b24257a977877979a at 19 Oct 2016 我发现的第一个好的提交是:
当我尝试使用 git-bisect 查找 jquery git 存储库中的特定更改时,我遇到了一个奇怪的问题:bisect 命令似乎创建了修改后的文件,阻止了 bisect 过程继续进行。这些是我首先
假设我有这些修改: rev 1 引入了 bug #1 rev 2 可能引入错误#2 rev 3 可能引入错误 #2 rev 4 可能引入错误 #2 rev 5 修复了 bug #1 要验证错误 #2
我认为 git bisect 需要输入太多内容。 要检查我必须做的最后 N 次提交: user@host> git bisect start HEAD HEAD~10 user@host> git b
我遇到一个问题,两个版本的 Linux 内核之间的代码更改导致了问题。在使用 git bisect 时,我发现我无法缩小原始问题的范围,因为 linux 内核中的一个无关问题(图形损坏)使得无法追踪原
我在名为 redesign-test-fixes 的单独分支上运行 git bisect start。之后,我测试我的错误并运行 git bisect bad。终端不打印任何输出。然后我运行 git
如何在降序排序的列表上使用 bisect 模块?例如 import bisect x = [1.0,2.0,3.0,4.0] # normal, ascending bisect.insort(x,2
**摘要:**git bisect命令使用二分搜索算法来查找提交历史中的哪一次提交引入了错误。它几乎能让你闭着眼睛快速定位任何源码导致的问题,非常实用。 本文分享自华为云社区《利用好 git bise
据我所知,Python中的list是用数组实现的,而deque是用双链表实现的。在任何一种情况下,对某个值的二进制搜索都需要 O(logn) 时间,但是如果我们插入到该位置,则数组需要 O(n),而双
我正在寻找bisect Haskell 中的操作类似于 Python bisect_left()和 friend 。输入将是下限、上限、必须为下限和上限之间的所有整数定义的非递减函数 (Ord a)=
我有这段代码需要分析。这就是二分法。 哪些输入将导致转到第 18 行和第 19 行的分支? public class BiSectionExample { public double root
bisect.bisect_left((f(x) for x in range(pow(10, 6))), 0) 我正在尝试使用二分法二分搜索到满足f(x) >= 0的最小x。并且 f(x) 严格递增
正如Python文档所说,我认为bisect模块比列表内置方法、索引和插入要快得多,以将项目插入到长有序列表中。因此,我只是测量了 bisect_func() 和 insert_func() 这两个函
今天刚开始用boost,发现this post非常有帮助。我正在尝试使用 boost::bisect 来求解一系列值的参数方程。如果我想求解 0.8 的值,则以下方法有效: #include /
在下面两个列表中 l1 = [10, 33, 50, 67] l2 = [7, 16, 29, 65] 我使用 bisect 将两个列表中最接近的数字组合起来。我用这个代码 for s in l1
我有一个文件,其中每一行都按字母顺序排列。该文件是 12Gb,这意味着我不能简单地逐行读取它。数据如下所示: brown 0 1 0 1 2 fox 3
我被要求写一个二等分 k-means 算法,但我不明白这个算法。我知道 k-means 算法。 你能解释一下这个算法吗,但在academic language中没有 谢谢。 最佳答案 这个想法是迭代地
试图在 python3 中为我必须开发的 frotier 问题找到最佳数据结构,我刚刚意识到使用模块 bisect 来实现一个真正的问题的复杂性按时间排序的插入不是 O(nlog n),而是呈指数增长
我是一名优秀的程序员,十分优秀!