pull/update from wrong repo
Ross Boylan
ross at biostat.ucsf.edu
Thu Oct 17 19:17:26 UTC 2013
Thanks to Mischa, I've successfully recovered.
Some more details of the history appear below.
On 10/11/2013 6:51 PM, Becker, Mischa J wrote:
>> From: Ross Boylan [ross at biostat.ucsf.edu]
>> Sent: Friday, October 11, 2013 4:24 PM
>> To: mercurial at selenic.com
>> Subject: pull/update from wrong repo
>>
>> I pulled from the wrong repository (a separate project, though a few of
>> the files are common) into the local "Ross" project and then did an
>> update. I noticed lots of messages "removing filexxx" and interrupted
>> it; I do not recall exactly how. The I tried to roll back.
>>
>> Current state of "Ross"
>> 1) history shows no sign of the bogus changes I pulled in
>> 2) The files mentioned in the "removing" messages seem to be gone from
>> the working directory; hg status shows them as missing ("!"). I assume
>> this means I can recover them.
>> 3) There are many files in the working directory not under version
>> control (hg status shows "?"). There were many such files before the
>> bogus merge as well.
>> 4) I don't know if any files that weren't under version control were
>> deleted.
>> 5) Plenty of files that were under version control are still in the
>> working directory.
>>
>> The manual for hg update says
>> "If the changeset is not a descendant or ancestor of the working
>> directory's parent, the update is aborted."
>> That was not what happened.
> I don't think that applies when you supply a revision to update to. Also, your update used --check. The rest of that paragraph in the manual says:
> "With the -c/--check option, the working directory is checked for uncommitted changes; if none are found, the working directory is updated to the specified changeset."
Apparently the changes did share ancestry, and so there was no reason to
expect the update to be aborted.
>> I am trying to understand what happened and the best way to recover.
>> I was using tortoisehg 2.8.1 on windows, with Hg 2.6.2.
>>
>> "Ross" is the big project. "Sunbelt" is a smaller project. Over
>> Sunbelt's life some files were copied from "Ross" via the working
>> directory and added to the project. I'm pretty sure I did not merge any
>> changesets from Ross into Sunbelt. I copied some of the files back to
>> "Ross", again via the working directory.
>>
>> Questions:
>> 1) Would the operations have deleted files that were not under version control?
> 90% of the time the answer is no, files not under version control are left alone. However, if the file *was* under version control at some point in the past, it is possible for it to get deleted. I've had it happen to me once or twice but I no longer recall the specifics.
I checked against a backup and it seems no files were lost (after the
steps below).
>> 2) What's the best way to recover? Is there an easy way to bulk restore the versioned files that were deleted?
> Assuming you didn't have any uncomitted changes before the bad pull, the simplest way to recover is
> hg up --clean
I managed to repeat the bad pull again, which gave me a chance to look
at what was going on.
I did
hg rollback
hg up --clean
>
>> 3) What happened?
> While you have never merged between projects, the repositories themselves are related. I bet if you look at the initial commits in both projects, you will see that they are the same. If there was no common ancestor between the repositories the pull should have failed since you didn't use --force.
>
> Secondly, instead of just using hg up to update to the tip of the current branch, you did hg up --rev 1183 --check.
On inspection, the "Ross" project had an earlier merge from "Sunbelt",
so that some of the Sunbelt changes were in the repo already. I guess
the reason all my files weren't wiped out was that I did a merge between
the two projects. The initial commits are not the same, but the initial
commits for Sunbelt did appear in Ross.
I guess when I took in the new changes from Sunbelt the system tried to
bring the Ross working directory into conformance with Sunbelt, and so
started deleting files.
Ross
>> Thanks.
>> Ross Boylan
>>
>> Here's what the log window showed, ### before comments added later:
>>
>> % hg --repository I:\LAMOC\Ross pull --verbose
>> c:\users\rdboylan\appdata\local\temp\thg.mrahtg\https__bitbucket.org_RossBoylan_sunbelt_eatky7.hg pulling from
>> c:\users\rdboylan\appdata\local\temp\thg.mrahtg\https__bitbucket.org_RossBoylan_sunbelt_eatky7.hg
>> searching for changes
>> all local heads known remotely
>> 43 changesets found
>> adding changesets
>> adding manifests
>> adding file changes
>> added 43 changesets with 44 changes to 9 files (+1 heads)
>> (run 'hg heads .' to see heads, 'hg merge' to merge)
>> [command completed successfully Fri Sep 20 16:34:12 2013]
>> % hg update --verbose --config ui.merge=internal:fail --rev 1183 --check
>> resolving manifests
>> removing 090729 LAMOC sexual behaviors.doc
>> ### many more removing ... messages
>> removing drugs02.log
>> ### note: no message about abort or complete
>> % hg update --verbose --config ui.merge=internal:fail --rev "Real Corr" --check
>> abort: uncommitted local changes
>> [command returned code 255 Fri Sep 20 16:39:45 2013]
>> % hg rollback --verbose
>> repository tip rolled back to revision 1140 (undo pull:
>> bundle:I:\LAMOC\Ross+c:\users\rdboylan\appdata\local\temp\thg.mrahtg\https__bitbucket.org_RossBoylan_sunbelt_eatky7.hg)
>> [command completed successfully Fri Sep 20 16:40:18 2013]
>> % hg --repository C:\Users\rdboylan\Documents\Sunbelt incoming --quiet --bundle
>> c:\users\rdboylan\appdata\local\temp\thg.mrahtg\https__bitbucket.org_RossBoylan_sunbelt_8lifzl.hg
>> https://bitbucket.org/RossBoylan/sunbelt
>> ### long list ....
>> [command completed successfully Fri Sep 20 16:41:58 2013]
> ________________________________
>
> This e-mail message, including any attachments, is for the sole use of the intended recipient(s) and may contain information that is confidential and protected by law from unauthorized disclosure. Any unauthorized review, use, disclosure or distribution is prohibited. If you are not the intended recipient, please contact the sender by reply e-mail and destroy all copies of the original message.
More information about the Mercurial
mailing list