GitPython 3.1.61__tar.gz → 3.1.62__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {gitpython-3.1.61 → gitpython-3.1.62/GitPython.egg-info}/PKG-INFO +1 -1
- {gitpython-3.1.61/GitPython.egg-info → gitpython-3.1.62}/PKG-INFO +1 -1
- gitpython-3.1.62/VERSION +1 -0
- {gitpython-3.1.61 → gitpython-3.1.62}/doc/source/changes.rst +13 -0
- {gitpython-3.1.61 → gitpython-3.1.62}/git/__init__.py +1 -1
- {gitpython-3.1.61 → gitpython-3.1.62}/git/config.py +62 -1
- {gitpython-3.1.61 → gitpython-3.1.62}/git/objects/submodule/base.py +12 -0
- {gitpython-3.1.61 → gitpython-3.1.62}/git/repo/base.py +4 -0
- gitpython-3.1.61/VERSION +0 -1
- {gitpython-3.1.61 → gitpython-3.1.62}/AUTHORS +0 -0
- {gitpython-3.1.61 → gitpython-3.1.62}/CHANGES +0 -0
- {gitpython-3.1.61 → gitpython-3.1.62}/CONTRIBUTING.md +0 -0
- {gitpython-3.1.61 → gitpython-3.1.62}/GitPython.egg-info/SOURCES.txt +0 -0
- {gitpython-3.1.61 → gitpython-3.1.62}/GitPython.egg-info/dependency_links.txt +0 -0
- {gitpython-3.1.61 → gitpython-3.1.62}/GitPython.egg-info/not-zip-safe +0 -0
- {gitpython-3.1.61 → gitpython-3.1.62}/GitPython.egg-info/requires.txt +0 -0
- {gitpython-3.1.61 → gitpython-3.1.62}/GitPython.egg-info/top_level.txt +0 -0
- {gitpython-3.1.61 → gitpython-3.1.62}/LICENSE +0 -0
- {gitpython-3.1.61 → gitpython-3.1.62}/MANIFEST.in +0 -0
- {gitpython-3.1.61 → gitpython-3.1.62}/README.md +0 -0
- {gitpython-3.1.61 → gitpython-3.1.62}/doc/.gitignore +0 -0
- {gitpython-3.1.61 → gitpython-3.1.62}/doc/Makefile +0 -0
- {gitpython-3.1.61 → gitpython-3.1.62}/doc/requirements.txt +0 -0
- {gitpython-3.1.61 → gitpython-3.1.62}/doc/source/conf.py +0 -0
- {gitpython-3.1.61 → gitpython-3.1.62}/doc/source/index.rst +0 -0
- {gitpython-3.1.61 → gitpython-3.1.62}/doc/source/intro.rst +0 -0
- {gitpython-3.1.61 → gitpython-3.1.62}/doc/source/quickstart.rst +0 -0
- {gitpython-3.1.61 → gitpython-3.1.62}/doc/source/reference.rst +0 -0
- {gitpython-3.1.61 → gitpython-3.1.62}/doc/source/roadmap.rst +0 -0
- {gitpython-3.1.61 → gitpython-3.1.62}/doc/source/tutorial.rst +0 -0
- {gitpython-3.1.61 → gitpython-3.1.62}/git/cmd.py +0 -0
- {gitpython-3.1.61 → gitpython-3.1.62}/git/compat.py +0 -0
- {gitpython-3.1.61 → gitpython-3.1.62}/git/db.py +0 -0
- {gitpython-3.1.61 → gitpython-3.1.62}/git/diff.py +0 -0
- {gitpython-3.1.61 → gitpython-3.1.62}/git/exc.py +0 -0
- {gitpython-3.1.61 → gitpython-3.1.62}/git/index/__init__.py +0 -0
- {gitpython-3.1.61 → gitpython-3.1.62}/git/index/base.py +0 -0
- {gitpython-3.1.61 → gitpython-3.1.62}/git/index/fun.py +0 -0
- {gitpython-3.1.61 → gitpython-3.1.62}/git/index/typ.py +0 -0
- {gitpython-3.1.61 → gitpython-3.1.62}/git/index/util.py +0 -0
- {gitpython-3.1.61 → gitpython-3.1.62}/git/objects/__init__.py +0 -0
- {gitpython-3.1.61 → gitpython-3.1.62}/git/objects/base.py +0 -0
- {gitpython-3.1.61 → gitpython-3.1.62}/git/objects/blob.py +0 -0
- {gitpython-3.1.61 → gitpython-3.1.62}/git/objects/commit.py +0 -0
- {gitpython-3.1.61 → gitpython-3.1.62}/git/objects/fun.py +0 -0
- {gitpython-3.1.61 → gitpython-3.1.62}/git/objects/submodule/__init__.py +0 -0
- {gitpython-3.1.61 → gitpython-3.1.62}/git/objects/submodule/root.py +0 -0
- {gitpython-3.1.61 → gitpython-3.1.62}/git/objects/submodule/util.py +0 -0
- {gitpython-3.1.61 → gitpython-3.1.62}/git/objects/tag.py +0 -0
- {gitpython-3.1.61 → gitpython-3.1.62}/git/objects/tree.py +0 -0
- {gitpython-3.1.61 → gitpython-3.1.62}/git/objects/util.py +0 -0
- {gitpython-3.1.61 → gitpython-3.1.62}/git/py.typed +0 -0
- {gitpython-3.1.61 → gitpython-3.1.62}/git/refs/__init__.py +0 -0
- {gitpython-3.1.61 → gitpython-3.1.62}/git/refs/head.py +0 -0
- {gitpython-3.1.61 → gitpython-3.1.62}/git/refs/log.py +0 -0
- {gitpython-3.1.61 → gitpython-3.1.62}/git/refs/reference.py +0 -0
- {gitpython-3.1.61 → gitpython-3.1.62}/git/refs/remote.py +0 -0
- {gitpython-3.1.61 → gitpython-3.1.62}/git/refs/symbolic.py +0 -0
- {gitpython-3.1.61 → gitpython-3.1.62}/git/refs/tag.py +0 -0
- {gitpython-3.1.61 → gitpython-3.1.62}/git/remote.py +0 -0
- {gitpython-3.1.61 → gitpython-3.1.62}/git/repo/__init__.py +0 -0
- {gitpython-3.1.61 → gitpython-3.1.62}/git/repo/fun.py +0 -0
- {gitpython-3.1.61 → gitpython-3.1.62}/git/types.py +0 -0
- {gitpython-3.1.61 → gitpython-3.1.62}/git/util.py +0 -0
- {gitpython-3.1.61 → gitpython-3.1.62}/pyproject.toml +0 -0
- {gitpython-3.1.61 → gitpython-3.1.62}/requirements.txt +0 -0
- {gitpython-3.1.61 → gitpython-3.1.62}/setup.cfg +0 -0
- {gitpython-3.1.61 → gitpython-3.1.62}/setup.py +0 -0
- {gitpython-3.1.61 → gitpython-3.1.62}/test-requirements.txt +0 -0
gitpython-3.1.62/VERSION
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
3.1.62
|
|
@@ -2,6 +2,19 @@
|
|
|
2
2
|
Changelog
|
|
3
3
|
=========
|
|
4
4
|
|
|
5
|
+
3.1.62
|
|
6
|
+
======
|
|
7
|
+
|
|
8
|
+
Security fixes for
|
|
9
|
+
|
|
10
|
+
* https://github.com/gitpython-developers/GitPython/security/advisories/GHSA-59cr-6r3x-644w
|
|
11
|
+
|
|
12
|
+
If you can, also try and provide feedback on the upcoming v4 branch
|
|
13
|
+
https://github.com/gitpython-developers/GitPython/pull/2177 - patches welcome.
|
|
14
|
+
|
|
15
|
+
See the following for all changes.
|
|
16
|
+
https://github.com/gitpython-developers/GitPython/releases/tag/3.1.62
|
|
17
|
+
|
|
5
18
|
3.1.61
|
|
6
19
|
======
|
|
7
20
|
|
|
@@ -467,6 +467,45 @@ class GitConfigParser(cp.RawConfigParser, metaclass=MetaParserBuilder):
|
|
|
467
467
|
|
|
468
468
|
# END string_decode
|
|
469
469
|
|
|
470
|
+
def is_line_continuation(value: str) -> bool:
|
|
471
|
+
quoted = escaped = False
|
|
472
|
+
for char in value:
|
|
473
|
+
if escaped:
|
|
474
|
+
escaped = False
|
|
475
|
+
elif char == "\\":
|
|
476
|
+
escaped = True
|
|
477
|
+
elif char == '"':
|
|
478
|
+
quoted = not quoted
|
|
479
|
+
elif char in "#;" and not quoted:
|
|
480
|
+
return False
|
|
481
|
+
return escaped
|
|
482
|
+
|
|
483
|
+
def parse_value(value: str) -> str:
|
|
484
|
+
parsed: List[str] = []
|
|
485
|
+
whitespace: List[str] = []
|
|
486
|
+
quoted = escaped = False
|
|
487
|
+
escapes = {"b": "\b", "n": "\n", "t": "\t", '"': '"', "\\": "\\"}
|
|
488
|
+
for char in value:
|
|
489
|
+
if escaped:
|
|
490
|
+
parsed.append(escapes.get(char, "\\" + char))
|
|
491
|
+
escaped = False
|
|
492
|
+
continue
|
|
493
|
+
if char.isspace() and not quoted:
|
|
494
|
+
if parsed:
|
|
495
|
+
whitespace.append(char)
|
|
496
|
+
continue
|
|
497
|
+
if char in "#;" and not quoted:
|
|
498
|
+
break
|
|
499
|
+
parsed.extend(whitespace)
|
|
500
|
+
whitespace.clear()
|
|
501
|
+
if char == "\\":
|
|
502
|
+
escaped = True
|
|
503
|
+
elif char == '"':
|
|
504
|
+
quoted = not quoted
|
|
505
|
+
else:
|
|
506
|
+
parsed.append(char)
|
|
507
|
+
return "".join(parsed)
|
|
508
|
+
|
|
470
509
|
while True:
|
|
471
510
|
# We assume to read binary!
|
|
472
511
|
line = fp.readline().decode(defenc)
|
|
@@ -513,7 +552,29 @@ class GitConfigParser(cp.RawConfigParser, metaclass=MetaParserBuilder):
|
|
|
513
552
|
|
|
514
553
|
if len(optval) < 2 or optval[0] != '"':
|
|
515
554
|
# Does not open quoting.
|
|
516
|
-
|
|
555
|
+
# A value ending in an odd number of backslashes
|
|
556
|
+
# continues on the next line, exactly as git does: the
|
|
557
|
+
# final backslash and the newline are removed and the
|
|
558
|
+
# next line is appended before the complete value is
|
|
559
|
+
# parsed. An even number means the last backslash is
|
|
560
|
+
# escaped and the value ends there.
|
|
561
|
+
continued = False
|
|
562
|
+
while True:
|
|
563
|
+
if not is_line_continuation(optval):
|
|
564
|
+
break
|
|
565
|
+
continuation = fp.readline()
|
|
566
|
+
if not continuation:
|
|
567
|
+
# Backslash at end of file: git drops it.
|
|
568
|
+
optval = optval[:-1]
|
|
569
|
+
break
|
|
570
|
+
lineno = lineno + 1
|
|
571
|
+
joined = continuation.decode(defenc)
|
|
572
|
+
while joined.endswith("\n") or joined.endswith("\r"):
|
|
573
|
+
joined = joined[:-1]
|
|
574
|
+
optval = optval[:-1] + joined
|
|
575
|
+
continued = True
|
|
576
|
+
if continued:
|
|
577
|
+
optval = parse_value(optval)
|
|
517
578
|
elif optval[-1] != '"':
|
|
518
579
|
# Opens quoting and does not close: appears to start multi-line quoting.
|
|
519
580
|
is_multi_line = True
|
|
@@ -414,6 +414,18 @@ class Submodule(IndexObject, TraversableIterableObj):
|
|
|
414
414
|
|
|
415
415
|
return path
|
|
416
416
|
|
|
417
|
+
@property
|
|
418
|
+
def abspath(self) -> PathLike:
|
|
419
|
+
root = self.repo.working_tree_dir
|
|
420
|
+
if root is None:
|
|
421
|
+
return super().abspath
|
|
422
|
+
path = root
|
|
423
|
+
for component in os.fspath(self._to_relative_path(self.repo, self.path)).split("/"):
|
|
424
|
+
path = join_path_native(path, component)
|
|
425
|
+
if osp.islink(path):
|
|
426
|
+
raise ValueError("Submodule checkout path %r contains a symbolic link" % self.path)
|
|
427
|
+
return path
|
|
428
|
+
|
|
417
429
|
@classmethod
|
|
418
430
|
def _write_git_file_and_module_config(cls, working_tree_dir: PathLike, module_abspath: PathLike) -> None:
|
|
419
431
|
"""Write a ``.git`` file containing a (preferably) relative path to the actual
|
|
@@ -386,6 +386,10 @@ class Repo:
|
|
|
386
386
|
# Let's not assume the option exists, although it should.
|
|
387
387
|
pass
|
|
388
388
|
|
|
389
|
+
# A linked worktree is not bare even when its main repository is.
|
|
390
|
+
if self._bare and self._working_tree_dir and osp.isfile(osp.join(self.git_dir, "commondir")):
|
|
391
|
+
self._bare = False
|
|
392
|
+
|
|
389
393
|
# Adjust the working directory in case we are actually bare - we didn't know
|
|
390
394
|
# that in the first place.
|
|
391
395
|
if self._bare:
|
gitpython-3.1.61/VERSION
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
3.1.61
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|