Mercurial > hg
view tests/revlog-formatv0.py @ 50930:5dc7e1907e48 stable
setup: make the error "Unable to find a working hg binary" more informative
The error message now shows the attempted hg commands and their stderr, to
make it easier to investigate why things are not working.
Here's an example output
/!\
/!\ Unable to find a working hg binary
/!\ Version cannot be extracted from the repository
/!\ Re-run the setup once a first version is built
/!\ Attempts:
/!\ attempt #0:
/!\ cmd: ['hg-missing', 'log', '-r.', '-Ttest']
/!\ exception: [Errno 2] No such file or directory: 'hg-missing': 'hg-missing'
/!\ attempt #1:
/!\ cmd: ['/usr/bin/python3', 'hg', 'log', '-r.', '-Ttest']
/!\ return code: 255
/!\ std output:
/!\ std error:
*** failed to import extension "topic": No module named 'topic'
*** failed to import extension "evolve": No module named 'evolve'
abort: accessing `dirstate-v2` repository without associated fast implementation.
(check `hg help config.format.use-dirstate-v2` for details)
/!\
/!\ Could not determine the Mercurial version
/!\ You need to build a local version first
/!\ Run `make local` and try again
/!\
author | Arseniy Alekseyev <aalekseyev@janestreet.com> |
---|---|
date | Mon, 04 Sep 2023 13:33:32 +0100 |
parents | 6000f5b25c9b |
children |
line wrap: on
line source
#!/usr/bin/env python3 # Copyright 2010 Intevation GmbH # Author(s): # Thomas Arendsen Hein <thomas@intevation.de> # # This software may be used and distributed according to the terms of the # GNU General Public License version 2 or any later version. """Create a Mercurial repository in revlog format 0 changeset: 0:a1ef0b125355 tag: tip user: user date: Thu Jan 01 00:00:00 1970 +0000 files: empty description: empty file """ import binascii import os import sys files = [ ( b'formatv0/.hg/00changelog.i', b'000000000000004400000000000000000000000000000000000000' b'000000000000000000000000000000000000000000000000000000' b'0000a1ef0b125355d27765928be600cfe85784284ab3', ), ( b'formatv0/.hg/00changelog.d', b'756163613935613961356635353036303562366138343738336237' b'61623536363738616436356635380a757365720a3020300a656d70' b'74790a0a656d7074792066696c65', ), ( b'formatv0/.hg/00manifest.i', b'000000000000003000000000000000000000000000000000000000' b'000000000000000000000000000000000000000000000000000000' b'0000aca95a9a5f550605b6a84783b7ab56678ad65f58', ), ( b'formatv0/.hg/00manifest.d', b'75656d707479006238306465356431333837353835343163356630' b'35323635616431343461623966613836643164620a', ), ( b'formatv0/.hg/data/empty.i', b'000000000000000000000000000000000000000000000000000000' b'000000000000000000000000000000000000000000000000000000' b'0000b80de5d138758541c5f05265ad144ab9fa86d1db', ), (b'formatv0/.hg/data/empty.d', b''), ] def makedirs(name): """recursive directory creation""" parent = os.path.dirname(name) if parent: makedirs(parent) os.mkdir(name) makedirs(os.path.join(*'formatv0/.hg/data'.split('/'))) for name, data in files: f = open(name, 'wb') f.write(binascii.unhexlify(data)) f.close() sys.exit(0)