threads / discuss / 5325

Recover from a bad push in StGit

Subject: Recover from a bad push in StGit

## tl;dr

5 messages between Aug 18, 2006 and Aug 21, 2006.

replies: 4people: 3as markdown or json

Robin Rosenberg· Aug 18, 2006, 22:30 UTC · lore
Hi,

I recently did some reordering of patches and goofed up (not totally, but anyway). I pushed a number of patches and forgot one in the middle resulting in a merge conflict. Pop won't work since I have local changes from the conflict and I don't want to resolve the conflict either since I didn't mean to push the patch at that point.

Is there a simple way of undoing a bad push? 

In this case I had a fresh export do help me out so I could just delete the patches and re-import them again, but what if I didn't?

-- robin
Robin Rosenberg· Aug 19, 2006, 00:11 UTC · re: Robin Rosenberg · lore

Re: Recover from a bad push in StGit

lördag 19 augusti 2006 00:30 skrev Robin Rosenberg:
Show 9 quoted lines
> Hi,
>
> I recently did some reordering of patches and goofed up (not totally, but
> anyway). I pushed a number of patches and forgot one in the middle
> resulting in a merge  conflict. Pop won't work since I have local changes
> from the conflict and I don't want to resolve the conflict either since I
> didn't mean to push the patch at that point.
>
> Is there a simple way of undoing a bad push?
It was so simple
	stg status --reset;stg pop
does the job. Sorry about the noise.
>
> In this case I had a fresh export do help me out so I could just delete the
> patches and re-import them again, but what if I didn't?
>
-- robin
Catalin Marinas· Aug 21, 2006, 09:35 UTC · re: Robin Rosenberg · lore

Re: Recover from a bad push in StGit

Robin Rosenberg <robin.rosenberg.lists@dewire.com> wrote:
Show 10 quoted lines
> I recently did some reordering of patches and goofed up (not totally, but 
> anyway). I pushed a number of patches and forgot one in the middle resulting 
> in a merge  conflict. Pop won't work since I have local changes from the 
> conflict and I don't want to resolve the conflict either since I didn't mean 
> to push the patch at that point.
>
> Is there a simple way of undoing a bad push? 
>
> In this case I had a fresh export do help me out so I could just delete the 
> patches and re-import them again, but what if I didn't?

"stg push --undo" (the same option for "refresh"; maybe I should add a separate "undo" command) resets the local changes and it restores the original boundaries of the patch (no information is lost). You could use the latest snapshot as it has some bug-fixes from release 0.10.

-- 
Catalin
Robin Rosenberg· Aug 21, 2006, 15:03 UTC · re: Catalin Marinas · lore

Re: Recover from a bad push in StGit

måndag 21 augusti 2006 11:35 skrev Catalin Marinas:
Show 14 quoted lines
> Robin Rosenberg <robin.rosenberg.lists@dewire.com> wrote:
> > I recently did some reordering of patches and goofed up (not totally, but
> > anyway). I pushed a number of patches and forgot one in the middle
> > resulting in a merge  conflict. Pop won't work since I have local changes
> > from the conflict and I don't want to resolve the conflict either since I
> > didn't mean to push the patch at that point.
> >
> > Is there a simple way of undoing a bad push?
> >
> > In this case I had a fresh export do help me out so I could just delete
> > the patches and re-import them again, but what if I didn't?
>
> "stg push --undo" (the same option for "refresh"; maybe I should add a
> separate "undo" command) resets the local changes and it restores the

Not necessarily, but a hint about --undo when push/pop fail would have helped me.

> original boundaries of the patch (no information is lost). You could
> use the latest snapshot as it has some bug-fixes from release 0.10.

Does refresh --undo make me see the state of the patch like it was before last refresh, ie. stgit remembers the history of my patces? I thought it dropped the references as obsolete.

-- robin
Catalin Marinas· Aug 21, 2006, 15:55 UTC · re: Robin Rosenberg · lore

Re: Recover from a bad push in StGit

On 21/08/06, Robin Rosenberg <robin.rosenberg.lists@dewire.com> wrote:
Show 5 quoted lines
> måndag 21 augusti 2006 11:35 skrev Catalin Marinas:
> > "stg push --undo" (the same option for "refresh"; maybe I should add a
> > separate "undo" command) resets the local changes and it restores the
> Not necessarily, but a hint about --undo when push/pop fail would have
> helped me.

It is in the "stg help push" output but I could just display it when the conflict happened.

Show 6 quoted lines
> > original boundaries of the patch (no information is lost). You could
> > use the latest snapshot as it has some bug-fixes from release 0.10.
>
> Does refresh --undo make me see the state of the patch like it was before last
> refresh, ie. stgit remembers the history of my patces? I thought it dropped
> the references as obsolete.

The references before the last command are stored and they can be obtained by "stg id <patch>//(bottom|top).old". As long as you haven't run a git prune on your repository, you should be able to undo the refresh.

I'm (slowly) working on patch history support using reflogs and (when ready) you should be able to retrieve a previous state of the patch as long as you haven't pruned your GIT repository.

-- 
Catalin

← back to recent threads