FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
GitPython/git/db.py at 3.1.57 · gitpython-developers/GitPython · GitHub
Uh oh!
There was an error while loading.
Please reload this page
.
gitpython-developers
/
GitPython
Public
Uh oh!
There was an error while loading.
Please reload this page
.
Notifications
You must be signed in to change notification settings
Fork
989
Star
5.2k
Code
Issues
8
Pull requests
2
Discussions
Actions
Security and quality
34
Insights
Additional navigation options
Code
Issues
Pull requests
Discussions
Actions
Security and quality
Insights
Expand file tree
Breadcrumbs
GitPython
/
git
/
db.py
Copy path
More file actions
More file actions
Latest commit
History
History
History
71 lines (50 loc) · 2.31 KB
Breadcrumbs
GitPython
/
git
/
db.py
Copy path
File metadata and controls
71 lines (50 loc) · 2.31 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
# This module is part of GitPython and is released under the
# 3-Clause BSD License: https://opensource.org/license/bsd-3-clause/
"""Module with our own gitdb implementation - it uses the git command."""
__all__
=
[
"GitCmdObjectDB"
,
"GitDB"
]
from
gitdb
.
base
import
OInfo
,
OStream
from
gitdb
.
db
import
GitDB
,
LooseObjectDB
from
gitdb
.
exc
import
BadObject
from
git
.
util
import
bin_to_hex
,
hex_to_bin
from
git
.
exc
import
GitCommandError
# typing-------------------------------------------------
from
typing
import
TYPE_CHECKING
from
git
.
types
import
PathLike
if
TYPE_CHECKING
:
from
git
.
cmd
import
Git
# --------------------------------------------------------
class
GitCmdObjectDB
(
LooseObjectDB
):
"""A database representing the default git object store, which includes loose
objects, pack files and an alternates file.
It will create objects only in the loose object database.
"""
def
__init__
(
self
,
root_path
:
PathLike
,
git
:
"Git"
)
->
None
:
"""Initialize this instance with the root and a git command."""
super
().
__init__
(
root_path
)
self
.
_git
=
git
def
info
(
self
,
binsha
:
bytes
)
->
OInfo
:
"""Get a git object header (using git itself)."""
hexsha
,
typename
,
size
=
self
.
_git
.
get_object_header
(
bin_to_hex
(
binsha
))
return
OInfo
(
hex_to_bin
(
hexsha
),
typename
,
size
)
def
stream
(
self
,
binsha
:
bytes
)
->
OStream
:
"""Get git object data as a stream supporting ``read()`` (using git itself)."""
hexsha
,
typename
,
size
,
stream
=
self
.
_git
.
stream_object_data
(
bin_to_hex
(
binsha
))
return
OStream
(
hex_to_bin
(
hexsha
),
typename
,
size
,
stream
)
# { Interface
def
partial_to_complete_sha_hex
(
self
,
partial_hexsha
:
str
)
->
bytes
:
"""
:return:
Full binary 20 byte sha from the given partial hexsha
:raise gitdb.exc.AmbiguousObjectName:
:raise gitdb.exc.BadObject:
:note:
Currently we only raise :exc:`~gitdb.exc.BadObject` as git does not
communicate ambiguous objects separately.
"""
try
:
hexsha
,
_typename
,
_size
=
self
.
_git
.
get_object_header
(
partial_hexsha
)
return
hex_to_bin
(
hexsha
)
except
(
GitCommandError
,
ValueError
)
as
e
:
raise
BadObject
(
partial_hexsha
)
from
e
# END handle exceptions
# } END interface
Back
|
FazBrowse Home
|
New Git URL