OpenVMS port of Mercurial

Matt Mackall mpm at selenic.com
Thu Apr 26 12:53:27 CDT 2007


On Thu, Apr 26, 2007 at 09:30:07AM +0200, Jean-François Piéronne wrote:
> Matt Mackall wrote:
> > On Wed, Apr 25, 2007 at 01:16:24PM +0200, Jean-François Piéronne wrote:
> >> Hi,
> >>
> >> I'm evaluating the port of Mercurial on OpenVMS.
> >>
> >> Initial tests seem to indicate that most of the commands work with
> >> minimal patches (less than 10 lines).
> >>
> >> I was able to create a repository, insert and update files using the
> >> commands 'init', 'add', 'commit', 'log', 'diff', 'export'
> >> I was also able to serve the repository and clone it on a Windows system.
> >>
> >> Currently the only identified broken command is 'clone'
> >>
> >> For example:
> >>
> >> The command
> >> hg -v --debug clone http://selenic.com/repo/hg/ hg
> >> give:
> >> sending heads command
> >> requesting all changes
> >> sending changegroup command
> >> adding changesets
> >> add changeset 9117c6561b0b
> >> add changeset 273ce12ad8f1
> >> add changeset ecf3fd948051
> >> add changeset 3a6392190075
> >> add changeset ce3bd728b858
> >> add changeset 5f249577ac40
> >> abort: integrity check failed on 00changelog.d:4!
> >
> > Can you unpack a bundle from another system and vice-versa? Bundles
> > use the same encoding as network clone except for compression. If this
> > works, then it's probably something messing with line endings.
> >
> >> As Mercurial is a fairly large system, it's not easy to track down the
> >> problem.
> >> So, any ideas are welcome... (where to add trace for example).
> >
> > The thing to look at here is localrepository.addchangegroup and
> > revlog.addgroup.
> >
> 
> Thanks for your help,
> 
> after some debugging from the mentioned routines, I have found the
> problem, on OpenVMS the fflush CRTL just flush the data to some
> intermediate structure of the file system. So I have update the  Python
> flush file method to do a fsync after (this workaround was mentioned in
> some OpenVMS documentation).
> 
> So, now, I was able to issue
> hg  clone http://selenic.com/repo/hg hg
> which give:
> requesting all changes
> adding changesets
> adding manifests
> adding file changes
> added 4356 changesets with 8377 changes to 598 files
> 
> this seem to correctly create a complete hg/.hg tree structure
> 
> But this doesn't fetch any other files, the hg directory only contains
> the .hg directory and nothing else.
> 
> Using the same command on a Windows system give:
> requesting all changes
> adding changesets
> adding manifests
> adding file changes
> added 4356 changesets with 8377 changes to 598 files
> 516 files updated, 0 files merged, 0 files removed, 0 files unresolved
> 
> 
> 
> Other tests using other repositories give the same result, only the .hg
> directory is retreived. The clone finish without any error after the
> added changesets message and didn't do the updated files part.

You probably need another fsync somewhere. After the pull is
completed, we reopen the changelog and checkout new changes. But those
changes aren't visible for some reason.

-- 
Mathematics is the supreme nostalgia of our time.


More information about the Mercurial-devel mailing list