OpenVMS port of Mercurial

Jean-François Piéronne jf.pieronne at laposte.net
Thu Apr 26 02:30:07 CDT 2007


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.


Any starting point?


Thanks,


JF


More information about the Mercurial-devel mailing list