monotone-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Monotone-devel] undoing commits


From: Hendrik Boom
Subject: Re: [Monotone-devel] undoing commits
Date: Sun, 4 Aug 2019 20:21:56 -0400
User-agent: NeoMutt/20170113 (1.7.2)

On Mon, Aug 05, 2019 at 12:00:26AM +0200, Ludovic Brenta wrote:
> Le 2019-08-04 23:45, Hendrik Boom a écrit :
> > I committed two revisions on the main branch of development that should
> > have been made on a new branch. (just to be awkward, some of those
> > edits should have been made on the main branch and others not.  Each
> > revision is a mixed bag)
> > 
> > How can I recover?
> > 
> > Isn't there some way to remove recent commits as long as they haven't
> > sync'd to any other data base?
> > 
> > Because I checked the copy of the data base on the server, and they
> > don't
> > seem to have gotten there yet.
> > 
> > So maybe I can check out the recent committed revisions (elsewhere, as
> > backups), revert those commits, and then hand-edit the changes back
> > that should have been on the main branch, subsequently start a new
> > branch, and then and edit the new-branch changes back onto the new
> > branch.
> > 
> > Does this sound practical?  Anyone have a better idea?  Or an obvious
> > gotcha?
> > 
> > My alternative would seem to be more drastic: delete the local database
> > altogether, copy an old version of it from the server, and try to
> > recover from there.
> 
> I would use SQL commands to delete the branch certs on the two offending
> revisions.  This would prevent them from being synced to other databases.
> Of course, prior to doing that, revert any working trees to an ancestor
> revision.

Following up from your suggestion and trying to figure out how to use 
sql for this, I found two commands:

mtn local kill_certs selector certname [certval] 

and

mtn local kill_revision id 

This second one looks like what I was asking for.  I'd still have to 
back up the files in a few previous revisions so as to identify changes 
and apply them selectively (probably by hand) to the main and new 
branches.

But if were to remove the branch certs (using the first instruction),
is there also a way to install branch certs for the new branch?  This 
would seem to be the simple way to set up the new branch properly.
Of course I'd still have to go over the differences line by line to copy 
selected changes to the main branch.

Of course there's a way to install new branch certs, or at least the 
equivalent.  set up the new branch, then mtn propagate from the main to 
the new branches.  *Then remove certs from the wrong commits on the main 
branch.  Would be nice to have something more direct, that just attaches 
a sert, but this would work.  There would be fewer junk revisions left 
lying around.

-- hendrik


> 
> -- 
> Ludovic Brenta.
> 
> _______________________________________________
> Monotone-devel mailing list
> address@hidden
> https://lists.nongnu.org/mailman/listinfo/monotone-devel



reply via email to

[Prev in Thread] Current Thread [Next in Thread]