2008/9/16 Karl Hasselström <kha@xxxxxxxxxxx>: > On 2008-09-16 15:59:31 +0100, Catalin Marinas wrote: > >> 2008/9/16 Karl Hasselström <kha@xxxxxxxxxxx>: >> >> > iw is the index+worktree object. The idea is that you provide one >> > if your branch is checked out, and not if not. Operations that >> > have no need of index+worktree, like pop, and push in case >> > automatic merging succeeds, will just work anyway, while >> > operations that need index+worktree, such as a conflicting push, >> > will cause the whole transaction to abort. >> >> Ah, that's the difference. I thought that even if iw isn't passed, >> it uses the default one. > > It wouldn't be clean of it to do that -- it would be accessing > non-local state it had no business knowing about. I try hard to avoid > that kind of thing. I'm still confused by this and I don't think your new flag would help. The meaning of stop_before_conflict is that it won't push the conflicting patch but actually leave the stack with several patches pushed or popped. What I want for sink (and float afterwards) is by default to cancel the whole transaction if there is a conflict and revert the stack to it's original state prior to the "stg sink" command. What I have in my code: iw = stack.repository.default_iw trans = transaction.StackTransaction(stack, 'sink') try: trans.reorder_patches(applied, unapplied, hidden, iw) except transaction.TransactionHalted: if not options.conflict: ??? here it needs to check out the previous iw raise return trans.run(iw) It runs as expected if --conflict is given but in the default case, if there is a conflict, it keeps the original patchorder (as expected) but the worktree isn't clean. What do I replace ??? with to clean the work tree? BTW, much shorter with reorder_patches. -- Catalin -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html