Mercurial > hg
annotate hgext/git/gitutil.py @ 46884:cc3ad5c3af3b
persistent-nodemap: enable the feature by default when using Rust
As discussed at the 5.6 sprint, we can make it enabled by default, but only for
Rust installation.
Differential Revision: https://phab.mercurial-scm.org/D9765
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Thu, 14 Jan 2021 04:58:20 +0100 |
parents | c7c1efdfd4de |
children | d55b71393907 |
rev | line source |
---|---|
44477
ad718271a9eb
git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
1 """utilities to assist in working with pygit2""" |
ad718271a9eb
git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
2 from __future__ import absolute_import |
ad718271a9eb
git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
3 |
ad718271a9eb
git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
4 from mercurial.node import bin, hex, nullid |
ad718271a9eb
git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
5 |
ad718271a9eb
git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
6 from mercurial import pycompat |
ad718271a9eb
git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
7 |
44484
ec54b3d2af0b
git: don't fail import when pygit2 is not install
Martin von Zweigbergk <martinvonz@google.com>
parents:
44477
diff
changeset
|
8 pygit2_module = None |
ec54b3d2af0b
git: don't fail import when pygit2 is not install
Martin von Zweigbergk <martinvonz@google.com>
parents:
44477
diff
changeset
|
9 |
ec54b3d2af0b
git: don't fail import when pygit2 is not install
Martin von Zweigbergk <martinvonz@google.com>
parents:
44477
diff
changeset
|
10 |
ec54b3d2af0b
git: don't fail import when pygit2 is not install
Martin von Zweigbergk <martinvonz@google.com>
parents:
44477
diff
changeset
|
11 def get_pygit2(): |
ec54b3d2af0b
git: don't fail import when pygit2 is not install
Martin von Zweigbergk <martinvonz@google.com>
parents:
44477
diff
changeset
|
12 global pygit2_module |
ec54b3d2af0b
git: don't fail import when pygit2 is not install
Martin von Zweigbergk <martinvonz@google.com>
parents:
44477
diff
changeset
|
13 if pygit2_module is None: |
ec54b3d2af0b
git: don't fail import when pygit2 is not install
Martin von Zweigbergk <martinvonz@google.com>
parents:
44477
diff
changeset
|
14 try: |
ec54b3d2af0b
git: don't fail import when pygit2 is not install
Martin von Zweigbergk <martinvonz@google.com>
parents:
44477
diff
changeset
|
15 import pygit2 as pygit2_module |
ec54b3d2af0b
git: don't fail import when pygit2 is not install
Martin von Zweigbergk <martinvonz@google.com>
parents:
44477
diff
changeset
|
16 |
ec54b3d2af0b
git: don't fail import when pygit2 is not install
Martin von Zweigbergk <martinvonz@google.com>
parents:
44477
diff
changeset
|
17 pygit2_module.InvalidSpecError |
ec54b3d2af0b
git: don't fail import when pygit2 is not install
Martin von Zweigbergk <martinvonz@google.com>
parents:
44477
diff
changeset
|
18 except (ImportError, AttributeError): |
ec54b3d2af0b
git: don't fail import when pygit2 is not install
Martin von Zweigbergk <martinvonz@google.com>
parents:
44477
diff
changeset
|
19 pass |
ec54b3d2af0b
git: don't fail import when pygit2 is not install
Martin von Zweigbergk <martinvonz@google.com>
parents:
44477
diff
changeset
|
20 return pygit2_module |
ec54b3d2af0b
git: don't fail import when pygit2 is not install
Martin von Zweigbergk <martinvonz@google.com>
parents:
44477
diff
changeset
|
21 |
44477
ad718271a9eb
git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
22 |
45950
c7c1efdfd4de
git: show the version of `pygit2` with verbose version output
Matt Harbison <matt_harbison@yahoo.com>
parents:
44484
diff
changeset
|
23 def pygit2_version(): |
c7c1efdfd4de
git: show the version of `pygit2` with verbose version output
Matt Harbison <matt_harbison@yahoo.com>
parents:
44484
diff
changeset
|
24 mod = get_pygit2() |
c7c1efdfd4de
git: show the version of `pygit2` with verbose version output
Matt Harbison <matt_harbison@yahoo.com>
parents:
44484
diff
changeset
|
25 v = "N/A" |
c7c1efdfd4de
git: show the version of `pygit2` with verbose version output
Matt Harbison <matt_harbison@yahoo.com>
parents:
44484
diff
changeset
|
26 |
c7c1efdfd4de
git: show the version of `pygit2` with verbose version output
Matt Harbison <matt_harbison@yahoo.com>
parents:
44484
diff
changeset
|
27 if mod: |
c7c1efdfd4de
git: show the version of `pygit2` with verbose version output
Matt Harbison <matt_harbison@yahoo.com>
parents:
44484
diff
changeset
|
28 try: |
c7c1efdfd4de
git: show the version of `pygit2` with verbose version output
Matt Harbison <matt_harbison@yahoo.com>
parents:
44484
diff
changeset
|
29 v = mod.__version__ |
c7c1efdfd4de
git: show the version of `pygit2` with verbose version output
Matt Harbison <matt_harbison@yahoo.com>
parents:
44484
diff
changeset
|
30 except AttributeError: |
c7c1efdfd4de
git: show the version of `pygit2` with verbose version output
Matt Harbison <matt_harbison@yahoo.com>
parents:
44484
diff
changeset
|
31 pass |
c7c1efdfd4de
git: show the version of `pygit2` with verbose version output
Matt Harbison <matt_harbison@yahoo.com>
parents:
44484
diff
changeset
|
32 |
c7c1efdfd4de
git: show the version of `pygit2` with verbose version output
Matt Harbison <matt_harbison@yahoo.com>
parents:
44484
diff
changeset
|
33 return b"(pygit2 %s)" % v.encode("utf-8") |
c7c1efdfd4de
git: show the version of `pygit2` with verbose version output
Matt Harbison <matt_harbison@yahoo.com>
parents:
44484
diff
changeset
|
34 |
c7c1efdfd4de
git: show the version of `pygit2` with verbose version output
Matt Harbison <matt_harbison@yahoo.com>
parents:
44484
diff
changeset
|
35 |
44477
ad718271a9eb
git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
36 def togitnode(n): |
ad718271a9eb
git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
37 """Wrapper to convert a Mercurial binary node to a unicode hexlified node. |
ad718271a9eb
git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
38 |
ad718271a9eb
git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
39 pygit2 and sqlite both need nodes as strings, not bytes. |
ad718271a9eb
git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
40 """ |
ad718271a9eb
git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
41 assert len(n) == 20 |
ad718271a9eb
git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
42 return pycompat.sysstr(hex(n)) |
ad718271a9eb
git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
43 |
ad718271a9eb
git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
44 |
ad718271a9eb
git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
45 def fromgitnode(n): |
ad718271a9eb
git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
46 """Opposite of togitnode.""" |
ad718271a9eb
git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
47 assert len(n) == 40 |
ad718271a9eb
git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
48 if pycompat.ispy3: |
ad718271a9eb
git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
49 return bin(n.encode('ascii')) |
ad718271a9eb
git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
50 return bin(n) |
ad718271a9eb
git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
51 |
ad718271a9eb
git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
52 |
ad718271a9eb
git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
53 nullgit = togitnode(nullid) |