local clone out of sync with github repo
$ hg --version -v Mercurial Distributed SCM (version 6.6.2)
hggit external 1.1.0 (dulwich 0.21.7)
Given two repos on github: gh-main
, gh-fork
;
and two local clones of them: local-main
, local-fork
.
On local-fork
:
$ hg in
comparing with git@github.com:errael/swingset.git
no changes found
$ hg pull
pulling from git@github.com:errael/swingset.git
no changes found
$ hg glog
...
| x changeset: 1287:38d227b9764b
|/ bookmark: SSV
| tag: default/SSV
| obsolete: pruned using prune
| summary: Add SSVersion.
NOTE: the above local-fork
changeset 1287
has the same git hash as on github.
Is there a way to revive 1287
? hg touch
says you get a different changeset ID
.
My understanding is that a different ID
gets the local clone out of sync with the github repo.
The following seems to be a bug, since garbage is printed, other changesets do it, so seems unrelated to this problem.
$ hg pull -B SSV
pulling from git@github.com:errael/swingset.git
abort: unknown revision '8�'�vK+���~�Gɓ��('
Back to the problem.
I did a bad prune, following is how I got into this (IIRC).
There's a bookmark SSV, that originated in local-main and was pushed to gh-main.
Sitting in local-fork
, did hg pull -r SSV local-main
and ended up with bookmarks
SSV@local-main
SSV
Oops, not the goal.
At this point, maybe just hg pull -B SSV local-main
would have fixed everything.
But instead I pruned SSV@local-main
, then did the bookmark pull,
and then "hg push -f -B SSV", which pushed to gh-fork. And then both repos
on github were in sync; same commit hash
for both gh-main
and gh-fork
.
So, while in local-fork
somehow pull from local-main
push to gh-fork
got github in sync. But left local-fork
broken
Is there a way to fix local-fork
?
I'll probably create a new clone from gh-fork
, then transplant the work I've
got in hg-fork
to it (transplant
/graft
will be the same in this case).
Or maybe I can just pull from the broken clone.