问题标签 [git-bisect]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
git - 如何仅在一个分支的提交上“git bisect”?
在我目前正在进行的一个项目中,我们将每个功能保留其自己的分支,并在功能准备好时将其合并回主控。每个功能分支内的提交可能包括许多“WIP”和破坏其他功能的功能,直到它完整且稳定为止。
无论如何,由于主分支的提交是唯一(据说)稳定的,我只想git bisect
在那个分支上。
有没有办法git bisect
只限制一个分支?
algorithm - 查找一组 git 项目何时被破坏的算法?
假设我有N
git 项目,它们结合在一起定义了一个 release/repository R
。
当R
通过健全性测试时T
,我们将其命名为好R
,如果失败,我们将其命名为坏R
。
我想提出一个脚本,并在将来将其推送到google repo,它概括了git 项目定义的存储库的git bisect
机制。R
N
目的是找到最新的好R
名最好的R
。VonC 建议了一个带有子模块的解决方案,这很棒,但我正在为repo-google
包含N
git 项目(例如 Android)的基于存储库的解决方案/算法寻找解决方案/算法。
git - 在对分期间将当前提交标记为好或坏之前是否需要`git reset --hard`?
在我当前的工作流程中,我正在更新/重新定位一个古老的补丁以针对最新版本的项目。
在我当前的工作流程中,我使用 git bisect 来查找可用于干净地应用补丁的最新提交。
要检查补丁是否可以干净地应用,我需要修补文件并检查退出状态。此过程更改不再干净的工作目录。
在将当前提交应用为好或坏之前,我总是使用git reset --hard
,但这个任务很烦人。它是必需的还是git bisect
会为我处理的?
java - 如何在仅存在于 HEAD 中的测试上使用“二等分运行”?
我发现了一个错误,我想弄清楚它是从哪里引入的。我做的下一件事是创建一个当前失败但在修复错误后应该通过的单元测试。我在 HEAD 中创建了一个单元测试,可以从命令行运行它。但问题是,如果我检查除 HEAD 之外的任何内容,则该单元测试将不存在。即使它只存在于 HEAD 中,我如何才能在每次结账时对它进行 bisect 运行此单元测试?
以下是我的一些想法:
- 我可以让 bisect script 樱桃挑选(不提交)单元测试。
- 如果我避免提交测试,那么测试将被带到每次结帐时(我认为)。
有一个更好的方法吗?
编辑:我正在使用 Java。
git - 查找最近的良好提交以传递给 git bisect
假设我突然发现我的 Git 存储库出现了问题。但是我知道它在几次提交之前就可以工作,我只是不记得是哪个提交。而不是试图找到一个“好”的提交来做一个 git bisect,我想问 Git(可能使用 bash 脚本),最近的“好”提交是什么?
另一个不只是选择不久前的提交并将其作为好的提交的另一个原因是,在我的仓库中,有许多坏的和好的提交混合在一起。它不是线性的。
那么我该如何循环,从最近的提交开始并根据需要执行一个命令,如果不好则返回 1,如果好则返回 0?
git - 找到补丁适用的第一个或最后一个提交
假设补丁是从过去的特定提交中创建的,并且不再适用于 HEAD。
我怎样才能找到 HEAD 历史上的第一个或更好的最后一个提交,这个补丁适用于 "git apply" ?也许有 git bisect 的东西?但是哪个命令会告诉我补丁是否适用?
理想情况下,我想回到那个提交,应用补丁,然后基于原始 HEAD 或与原始 HEAD 合并,然后再次 diff 以创建新补丁,除非存在冲突。在此之后,我想回到原来的 HEAD,所以我可以继续做更多的补丁。
背景:有许多补丁需要重新发布......(是的,有些生态系统仍然存在补丁......)
git - `git bisect` 或 `git log -S --all` 找不到合并提交所做的更改
我对文件进行了修复,并将其提交到我的git
存储库。
过了一段时间,我发现它已经退步了。我想知道修复程序是在哪个提交中被删除的,所以我尝试了git bisect
and git log --all -S TERM
,其中“TERM”是我的修复程序添加的字符串,并且在项目的其他任何地方都没有出现。
我发现这git bisect
归咎于一个不相关的提交,我发现git log --all -S TERM
它只列出了我添加 TERM 的提交,并没有列出任何已删除它的提交,即使它不再在“master”的文件中。
经过一番手动搜索,我发现两个分支之间存在合并提交。一个分支有我的修复,一个没有。合并作者选择了没有我修复的分支(奇怪,因为文件中没有冲突)。
我的问题是:
- 为什么
git bisect
找不到合并更改?我在手册页中没有看到任何关于此限制的内容。是否有不同的使用方法可以在上述场景中找到错误的合并? - 为什么不
git log --all -S TERM
列出合并提交?手册页说它列出了“引入或删除”实例的提交。该合并提交不会删除我的字符串吗?是否有不同的使用方法可以在上述场景中找到错误的合并? - 如果在上述情况下无用,那么找到错误合并的有效方法是什么
git bisect
?git log -S
如果没有这些工具,我似乎需要很长时间才能追踪有问题的变化。
git - 平分一切,从最初的提交
假设我有一个带有非常快的测试脚本的小项目,我只想一分为二,从初始提交到当前提交。我怎样才能做到这一点?
澄清一下,我不想浪费时间来识别一个好的提交和一个坏的提交,所以我正在寻找一种快速的方法来将最新的提交标记为坏的,并将初始提交标记为好的。
cucumber - 有没有办法从 features 文件夹的父文件夹运行 Cucumber 测试?
我正在尝试git bisect
使用我们的自动化测试运行一段时间来检查提交是否是导致缺陷的提交。我们程序的结构是:
显然,这不是运行 Cucumber 测试的默认/标准文件夹结构,因为您希望该features
文件夹位于应用程序的顶层。这不是我的选择,也无法改变。
我可以运行测试cd
然后cucumber_test
运行。但是,为了运行git bisect
它必须与.git
文件夹处于同一级别。
我的问题是:有没有办法从 Cucumberfeatures
文件夹的父目录运行 Cucumber 测试?能够读取cucumber.yml
文件也将非常有益。
有没有办法告诉 Cucumber 你没有使用标准的文件夹结构?
编辑:我已经能够使用cucumber -r cucumber_tests/features cucumber_tests/features/main_features/first.feature
. 但是,它无法在测试的中途找到一些步骤定义。
看来黄瓜正在寻找app/features
文件app/cucumber_tests/features
git - 为什么 git bisect 命令的提交范围比指定的范围大得多?
我在一个随机的 git 存储库上做了以下操作:
我原本预计 git 会测试 100 次提交,但我得到的是 1000 次提交(多 10 倍)。我猜这必须有一个简单的解释,但我似乎找不到任何东西。
编辑:也许我不够清楚。我在要使用 git bisect 测试的范围内获得了 1000 次提交。这相当于大约要测试 9-10 个提交。
这会是什么原因?