##// END OF EJS Templates
git: skeleton of a new extension to _directly_ operate on git repos...
git: skeleton of a new extension to _directly_ operate on git repos This is based in part of work I did years ago in hgit, but it's mostly new code since I'm using pygit2 instead of dulwich and the hg storage interfaces have improved. Some cleanup of old hgit code by Pulkit, which I greatly appreciate. test-git-interop.t does not cover a whole lot of cases, but it passes. It includes status, diff, making a new commit, and `hg annotate` working on the git repository. This is _not_ (yet) production quality code: this is an experiment. Known technical debt lurking in this implementation: * Writing bookmarks just totally ignores transactions. * The way progress is threaded down into the gitstore is awful. * Ideally we'd find a way to incrementally reindex DAGs. I'm not sure how to do that efficiently, so we might need a "known only fast-forwards" mode on the DAG indexer for use on `hg commit` and friends. * We don't even _try_ to do anything reasonable for `hg pull` or `hg push`. * Mercurial need an interface for the changelog type. Tests currently require git 2.24 as far as I'm aware: `git status` has some changed output that I didn't try and handle in a compatible way. This patch has produced some interesting cleanups, most recently on the manifest type. I expect continuing down this road will produce other meritorious cleanups throughout our code. Differential Revision: https://phab.mercurial-scm.org/D6734

File last commit:

r43347:687b865b default
r44961:ad718271 default
Show More
constants.py
43 lines | 1006 B | text/x-python | PythonLexer
Augie Fackler
remotefilelog: import pruned-down remotefilelog extension from hg-experimental...
r40530 from __future__ import absolute_import
import struct
from mercurial.i18n import _
Augie Fackler
formatting: byteify all mercurial/ and hgext/ string literals...
r43347 NETWORK_CAP_LEGACY_SSH_GETFILES = b'exp-remotefilelog-ssh-getfiles-1'
Augie Fackler
remotefilelog: import pruned-down remotefilelog extension from hg-experimental...
r40530
Augie Fackler
formatting: byteify all mercurial/ and hgext/ string literals...
r43347 SHALLOWREPO_REQUIREMENT = b"exp-remotefilelog-repo-req-1"
Augie Fackler
remotefilelog: rename capability for legacy ssh file fetching method...
r40543
Augie Fackler
formatting: byteify all mercurial/ and hgext/ string literals...
r43347 BUNDLE2_CAPABLITY = b"exp-remotefilelog-b2cap-1"
Augie Fackler
remotefilelog: consolidate and rename bundle2 capability...
r40544
Augie Fackler
formatting: byteify all mercurial/ and hgext/ string literals...
r43347 FILENAMESTRUCT = b'!H'
Augie Fackler
remotefilelog: import pruned-down remotefilelog extension from hg-experimental...
r40530 FILENAMESIZE = struct.calcsize(FILENAMESTRUCT)
NODESIZE = 20
Augie Fackler
formatting: byteify all mercurial/ and hgext/ string literals...
r43347 PACKREQUESTCOUNTSTRUCT = b'!I'
Augie Fackler
remotefilelog: import pruned-down remotefilelog extension from hg-experimental...
r40530
Augie Fackler
formatting: byteify all mercurial/ and hgext/ string literals...
r43347 NODECOUNTSTRUCT = b'!I'
Augie Fackler
remotefilelog: import pruned-down remotefilelog extension from hg-experimental...
r40530 NODECOUNTSIZE = struct.calcsize(NODECOUNTSTRUCT)
Augie Fackler
formatting: byteify all mercurial/ and hgext/ string literals...
r43347 PATHCOUNTSTRUCT = b'!I'
Augie Fackler
remotefilelog: import pruned-down remotefilelog extension from hg-experimental...
r40530 PATHCOUNTSIZE = struct.calcsize(PATHCOUNTSTRUCT)
Augie Fackler
formatting: byteify all mercurial/ and hgext/ string literals...
r43347 FILEPACK_CATEGORY = b""
TREEPACK_CATEGORY = b"manifests"
Augie Fackler
remotefilelog: import pruned-down remotefilelog extension from hg-experimental...
r40530
ALL_CATEGORIES = [FILEPACK_CATEGORY, TREEPACK_CATEGORY]
# revision metadata keys. must be a single character.
Augie Fackler
formatting: byteify all mercurial/ and hgext/ string literals...
r43347 METAKEYFLAG = b'f' # revlog flag
METAKEYSIZE = b's' # full rawtext size
Augie Fackler
remotefilelog: import pruned-down remotefilelog extension from hg-experimental...
r40530
Augie Fackler
formatting: blacken the codebase...
r43346
Augie Fackler
remotefilelog: import pruned-down remotefilelog extension from hg-experimental...
r40530 def getunits(category):
if category == FILEPACK_CATEGORY:
Augie Fackler
formatting: byteify all mercurial/ and hgext/ string literals...
r43347 return _(b"files")
Augie Fackler
remotefilelog: import pruned-down remotefilelog extension from hg-experimental...
r40530 if category == TREEPACK_CATEGORY:
Augie Fackler
formatting: byteify all mercurial/ and hgext/ string literals...
r43347 return _(b"trees")
Augie Fackler
remotefilelog: import pruned-down remotefilelog extension from hg-experimental...
r40530
Augie Fackler
formatting: blacken the codebase...
r43346
Augie Fackler
remotefilelog: import pruned-down remotefilelog extension from hg-experimental...
r40530 # Repack options passed to ``markledger``.
Augie Fackler
formatting: byteify all mercurial/ and hgext/ string literals...
r43347 OPTION_PACKSONLY = b'packsonly'