.hgsubstate not updated on "pull -u" or "update"

Matt Mackall mpm at selenic.com
Fri Dec 7 21:02:21 UTC 2012


On Fri, 2012-12-07 at 10:15 -0800, wrmarvin wrote:
> Using HG version 2.4 on windows XP.
> 
> I have a "Master" repository of source code on a server at a company's site.
> I am the only programmer currently working on their software.  The master
> repositories do not have working directories. I work on this software from 2
> locations, my office (I am a consultant with VPN access to their server),
> and on a workstation at their office. They have multiple VB6 projects (52
> projects) that create .exe or .dll executables that share source code (both
> .frm and .bas files).
> 
> There are repositories for shared code (40 repositories) and a project
> repository for each project (52 repositories).  The project repository for
> each project contains subrepos for the shared code modules that it needs (0
> to 10 subrepos in each project).  The 40 shared code repos and the 52
> project repos are all directories located at the same level in the directory
> tree, so the .hgsub file in the project repo uses relative referencing like
> "SubSharedCodeRepo1 = ..\SharedCodeRepo1".
> 
> I use the following workflow:
> 1a) clone a project (Project1) to be working on at location A (e.g. my
> office) from the "Master"
> 1b) make changes in primary repository files and/or shared code files in
> subrepos locally.
> 1c) commit any subrepos with changes
> 1d) commit primary project repo
> 1e) push primary repository back to the "Master" (this pushes any modified
> and commited subrepos)
> 1f) Note: project repository (Project1) at location A site is not deleted
> after push.
> 
> 2a) Go to location B (company office)
> 2b) clone the project (Project1) from "Master" on the server to a
> development computer.
> 2c) make changes in shared code in 1 or more subrepos.
> 2d) commit all changed subrepos
> 2e) commit primary project repo (this changes .hgsubstate to the just
> commited subrepo(s))
> 2f) push the primary project repo (Project1) back to "Master" while at
> location B.
> 
> 3a) Go back to location A
> 3b) cd to be within the local existing project repository (Project1).
> 3c) "pull -u" all subrepos used by the project from "Master" (pull will not
> recurse subrepos, so subrepos must be pulled first individually) (TortoiseHG
> will recurse pull of subrepos during a synchronize, but for this test I only
> used mercurial hg commands.  The same problem happens when using TortoiseHG
> synchronize)
> 3d) "pull -u" primary project repo.
> 3e) AT THIS POINT: .hgsubstate did not get updated from what is in the tip
> of the primary repository.
> 3f) If you try a manual "update -rtip" it still does not update the
> .hgsubstate file.
> 3g) If you do a kdiff between the working directory .hgsubstate and the
> repository tip .hgsubstate it will show that the files are different.
> 
> I would expect the "pull with update" action in 3d to put the project
> working directory files to be the same as the files in the tip of the
> project repository.

Does the working directory claim to be clean according to status and
summary before this step?

-- 
Mathematics is the supreme nostalgia of our time.





More information about the Mercurial mailing list