FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
GitPython/git/db.py at fix-advisory · 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
94 lines (70 loc) · 3.13 KB
Breadcrumbs
GitPython
/
git
/
db.py
Copy path
File metadata and controls
94 lines (70 loc) · 3.13 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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
# 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
subprocess
import
PIPE
from
gitdb
.
base
import
IStream
,
OInfo
,
OStream
from
gitdb
.
db
import
GitDB
,
LooseObjectDB
from
gitdb
.
exc
import
BadObject
from
gitdb
.
fun
import
stream_copy
from
git
.
compat
import
force_text
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
)
def
store
(
self
,
istream
:
IStream
)
->
IStream
:
"""Store an object using git itself."""
if
istream
.
binsha
is
not
None
or
self
.
ostream
()
is
not
None
:
return
super
().
store
(
istream
)
proc
=
self
.
_git
.
hash_object
(
"-t"
,
force_text
(
istream
.
type
),
"-w"
,
"--stdin"
,
"--literally"
,
as_process
=
True
,
istream
=
PIPE
)
assert
proc
.
stdin
is
not
None
try
:
stream_copy
(
istream
.
read
,
proc
.
stdin
.
write
,
istream
.
size
,
self
.
stream_chunk_size
)
finally
:
proc
.
stdin
.
close
()
assert
proc
.
stdout
is
not
None
hexsha
=
proc
.
stdout
.
read
().
strip
()
proc
.
wait
()
istream
.
binsha
=
hex_to_bin
(
hexsha
)
return
istream
# { 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