只有在没有冲突的情况下自动完成合并时,rebaseif mercurial扩展才会自动执行该过程.(如果存在要手动解决的冲突,则不会进行rebase,让您准备手动合并两个分支.)当开发人员在代码的不同部分工作时,这会简化并线性化历史记录,尽管任何rebase都会抛出当开发人员开始工作时,远离一些关于世界状况的信息.我倾向于喜欢争执同意这个和这个,在一般情况下,垫底是不是一个好主意,但我觉得底垫,如果理念呼吁非冲突情况.虽然我明白当代码的不同部分发生变化时仍然存在逻辑错误的风险(并且rebaseif扩展的作者已经认为这是一个坏主意.)
我最近经历了一个复杂而痛苦的二等分,我认为在我们的存储库中有大量的短分支合并是bisect没有达到其隐含的O(lg n)承诺的主要原因.我发现自己需要多次运行"bisect --extend",将范围扩展到合并之外,一次进行几个变更集,主要是将二等分O(n).我还发现,跟踪bisect的进展情况以及了解到目前为止我获得的信息非常复杂,因为在查看存储库的图表时我无法遵循分支.
是否有更好的方法来使用bisect(以及查看和理解修订历史),或者我是否正确,如果我们在开发中使用了更多的rebaseif,那么这个过程会更顺畅.或者,您是否可以帮助我更具体地了解在非冲突情况下使用rebase可能出现的问题:是否可能导致应该避免的问题?
我更普遍地标记这个(不仅仅是mercurial)因为我认为rebaseif匹配更典型的git工作流:git用户可能已经看到了陷阱.
假设我正在执行git bisect,并且在运行git bisect bad命令后,我的git bisect会像这样被打断:
$ git bisect bad
Bisecting: 0 revisions left to test after this (roughly 1 step)
error: Your local changes to the following files would be overwritten by checkout:
app/app.iml
Please commit your changes or stash them before you switch branches.
Aborting
Run Code Online (Sandbox Code Playgroud)
我可以通过运行以下命令消除该文件:
git checkout -- app/app.iml
Run Code Online (Sandbox Code Playgroud)
这将使我的git的状态下,再次清洁..但我不知道如何继续以后(即让git的开张继续平分)。我相信,我已经做了git bisect bad之前和它种跳过一个台阶或做了一件我没想到。我只是想恢复我的git bisect操作..该怎么做?
我想使用 bisect 模块,但当我尝试执行以下操作时出现此错误import bisect:
NameError: global name 'bisect_left' is not defined
Run Code Online (Sandbox Code Playgroud)
当我尝试时出现此错误from bisect import bisect_left:
ImportError: cannot import name bisect_left
Run Code Online (Sandbox Code Playgroud)
我尝试使用 python 文档中的这个函数:
def index(a, x):
'Locate the leftmost value exactly equal to x'
i = bisect_left(a, x)
if i != len(a) and a[i] == x:
return i
else:
return False
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
当我正在运行hg bisect时,有时候我想"向前看"剩下的东西,看看是否有任何明显的罪魁祸首我可以在一个相当慢的二分测试运行时检查.
因为我跑了
> hg bisect -g
Testing changeset 15802:446defa0e64a (8 changesets remaining, ~2 tests)
Run Code Online (Sandbox Code Playgroud)
如何查看剩余的8个变更集?
在python 3之前,我使用bisect将用户定义的对象插入到列表中.bisect对此很满意,因为我的用户定义对象有一个__cmp__定义如何比较对象的def .我已经阅读了在python 3中不支持cmp的理由,我对此很好.我认为我的旧代码的修复方法是通过将其转换为元组来"装饰"我的用户定义对象
(integer, user-defined object).
Run Code Online (Sandbox Code Playgroud)
但是,如果我有一个我的元组列表,并尝试...
i = bisect_left([list_of_tuples], (integer, user-defined object))
Run Code Online (Sandbox Code Playgroud)
然后我收到错误"builtins.TypeError:unorderable types ..."
那么,(在python 3中)我如何使用bisect作为完全不具有自然排序顺序的项目列表?
有人可以解释一下 bisect 库中的 bisect_left 函数实际上是做什么的吗?例子:
import bisect
bisect.bisect_left([1,2,3], 2)
Run Code Online (Sandbox Code Playgroud)
此代码将打印“1”。但这种印刷的规则是什么?'2' 是否插入列表中,因为根据 Python 文档,它应该“在列表中找到 x(在本例中为 2)的插入点以保持排序顺序”。请,也许有人可以提供更多示例并可以帮助我理解!谢谢你!
bisect ×6
python ×3
mercurial ×2
python-3.x ×2
branch ×1
cmp ×1
dvcs ×1
git ×1
git-bisect ×1
importerror ×1