summaryrefslogtreecommitdiff
path: root/git
Commit message (Collapse)AuthorAgeFilesLines
* Name top-level exceptions as private variablesChristopher Head2023-05-151-4/+4
| | | | | | `exc` is private to the module. Naming it `_exc` eliminates a collision with the `exc` submodule (one which would not be observable at runtime due to the import failing, but which confuses linters).
* Revert the removal of Commit.trailers property.Twist2023-04-231-0/+14
|
* Specify encoding in Commit.trailer_list.Twist2023-04-221-1/+1
|
* Update Commit.trailer_list to return tuples.Twist2023-04-221-11/+16
|
* Deprecate Commit.trailers.Twist2023-04-221-18/+0
|
* Add trailers_list and trailers_list methods to fix the commit trailers ↵Twist2023-04-211-22/+79
| | | | functionality. Update trailers tests.
* Merge pull request #1555 from Codym48/fix/get_valuesSebastian Thiel2023-02-161-0/+1
|\ | | | | Fix get_values() so it correctly loads section names
| * get_values eagerly loads sections before returnKent Friesen2023-01-101-0/+1
| |
* | Update cmd.pyEric Wieser2023-02-121-2/+1
| |
* | Fix RecursionError when iterating streamsEric Wieser2023-02-121-3/+3
| |
* | Merge pull request #1550 from Sineaggi/remove-optional-from-two-variablesSebastian Thiel2023-02-021-27/+29
|\ \ | | | | | | Remove optional from two member variables
| * | Update docsClayton Walker2023-02-021-1/+1
| | |
| * | Remove optional from two member variablesClayton Walker2023-01-271-26/+28
| | |
* | | fixed lint errorCesar Velazquez2023-01-301-1/+1
| | |
* | | Enable user to override default diff -M argCesar Velazquez2023-01-301-1/+4
|/ /
* | Fix timezone parsing functions for non-hour timezonesJames Cowgill2023-01-241-16/+19
| | | | | | | | | | | | | | | | The `utctz_to_altz` and `altz_to_utctz_str` functions fail to handle timezones with UTC offsets that are not a multiple of one hour. Rewrite them and add some unit tests. Fixes #630
* | Raise exception if return code from check-ignore is not 1Axel Aguado2023-01-211-2/+9
| |
* | fix files list on file renameMatteo Croce2023-01-131-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | GitPython parses the output of `git diff --numstat` to get the files changed in a commit. This breaks when a commit contains a file rename, because the output of `git diff` is different than expected. This is the output of a normal commit: $ git diff --numstat 8f41a390bf9a^ 8f41a390bf9a 30 5 test/test_repo.py And this a commit containing a rename: $ git diff --numstat 185d847ec764^ 185d847ec764 3 1 .github/workflows/{test_pytest.yml => Future.yml} This can be triggered by this code: for commit in repo.iter_commits(): print(commit.hexsha) for file in commit.stats.files: print(file) Which will print for the normal commit: 8f41a390bf9a54db6f85032bc56b453307b95451 'test/test_repo.py' And when there is a rename: 185d847ec7647fd2642a82d9205fb3d07ea71715 '.github/workflows/{test_pytest.yml => Future.yml}' Additionally, when a path member is removed, the file list become a list of strings, breaking even more the caller. This is in the Linux kernel tree: $ git diff --numstat db401875f438^ db401875f438 1 1 tools/testing/selftests/drivers/net/mlxsw/{spectrum-2 => }/devlink_trap_tunnel_ipip6.sh and GitPython parses it as: db401875f438168c5804b295b93a28c7730bb57a ('tools/testing/selftests/drivers/net/mlxsw/{spectrum-2 => ' '}/devlink_trap_tunnel_ipip6.sh') Fix this by pasing the --no-renames option to `git diff` which ignores renames and print the same output as if the file was deleted from the old path and created in the new one: $ git diff --numstat --no-renames 185d847ec764^ 185d847ec764 57 0 .github/workflows/Future.yml 0 55 .github/workflows/test_pytest.yml
* | Fix some resource leaks by open file handlesMartin Lambertsen2023-01-092-3/+9
| |
* | fix/add allow_unsafe_* params in docstrings + fix typoFC Stegerman2023-01-083-3/+20
|/
* Fix Sphinx rendering errorsStephan Creutz2022-12-2912-17/+37
| | | | | | | | These errors are mostly fixed by either adding blank lines or single spaces for Sphinx documentation key words. The commit solely includes documentation changes, no functional changes.
* Merge pull request #1521 from stsewd/block-insecure-optionsSebastian Thiel2022-12-295-17/+198
|\ | | | | Block insecure options and protocols by default
| * More testsSantos Gallegos2022-12-272-6/+34
| |
| * Updates from reviewSantos Gallegos2022-12-272-17/+14
| |
| * Block unsafe options and protocols by defaultSantos Gallegos2022-12-234-34/+157
| |
| * Forbid unsafe protocol URLs in Repo.clone{,_from}()Steve Kowalik2022-12-232-1/+34
| | | | | | | | | | | | | | | | | | Since the URL is passed directly to git clone, and the remote-ext helper will happily execute shell commands, so by default disallow URLs that contain a "::" unless a new unsafe_protocols kwarg is passed. (CVE-2022-24439) Fixes #1515
* | Fix type hint on create_tagAndrew Cassidy2022-12-291-1/+1
| | | | | | | | pycharm yells at me without this
* | Document PushInfoListtimski2022-12-291-6/+10
|/
* Fix command injectionSantos Gallegos2022-12-202-3/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | Add `--` in some commands that receive user input and if interpreted as options could lead to remote code execution (RCE). There may be more commands that could benefit from `--` so the input is never interpreted as an option, but most of those aren't dangerous. Fixed commands: - push - pull - fetch - clone/clone_from and friends - archive (not sure if this one can be exploited, but it doesn't hurt adding `--` :)) For anyone using GitPython and exposing any of the GitPython methods to users, make sure to always validate the input (like if starts with `--`). And for anyone allowing users to pass arbitrary options, be aware that some options may lead fo RCE, like `--exc`, `--upload-pack`, `--receive-pack`, `--config` (https://github.com/gitpython-developers/GitPython/pull/1516). Ref https://github.com/gitpython-developers/GitPython/issues/1517
* fix CI by allowing the file protocol as well.Sebastian Thiel2022-11-281-0/+0
|
* Add datetime.datetime type to commit_date and author_dateSergeantMenacingGarlic2022-10-132-4/+5
|
* Ignore empty info in diff lineDave Wapstra2022-09-271-0/+3
|
* Fix bug where colons in paths raise a `ValueError` on `diff()` calls.Malcolm Langfield2022-09-121-1/+4
| | | | | | | | | | | | | | | | | This commit introduces a potential fix for #1490 and #1483, in which an `invalid literal for int() with base 10: 'n'` exception was raised within a diff operation. Within `_handle_diff_line()`, we split the output of `git diff-tree` on colons (`:` characters), under the assumption that there are no colons within the paths of the files being diffed. On POSIX systems this is not a valid assumption. The fix is to split on `\x00:`, since a null character always precedes the colons we actually need to split on. A test already existed for this case (`test_diff_file_with_colon()`), but it was marked as skipped. * Split on `\x00:` instead of `:` in `_handle_diff_line()`. * Unskip `test_diff_file_with_colon()`.
* feat(blame): Support custom `rev_opts` for blameJoseph Hale2022-08-301-3/+8
| | | | | | | | | | | | | | | | The `git blame` CLI offers a repeated `-C` option that can be used to detect lines that move within/between files. While a slower operation, it yields more accurate authorship reports. https://git-scm.com/docs/git-blame#Documentation/git-blame.txt--Cltnumgt While GitPython does enable passing custom kwargs to the command line `git` invocation, the fact that kwargs is a dictionary (i.e. no duplicate keys) means that there was no way to request the `-C` option in `git blame` more than once. This commit adds an optional `rev_opts` parameter to the `blame` method which accepts a list of strings to propagate to the CLI invocation of `git blame`. By using a `List[str]` for `rev_opts`, users of GitPython can pass now the `-C` option multiple times to get more detailed authorship reports from `git blame`.
* Ignore flake8 error.Twist2022-08-241-1/+1
|
* Use the same regex as the Actor class when determining co-authors.Twist2022-08-241-3/+3
|
* Update regex to extract the author string, and create the Actor using the ↵Twist2022-08-231-3/+3
| | | | _from_string classmethod.
* Add co_authors property to the Commit object, which parses the commit ↵Twist2022-08-221-0/+22
| | | | message for designated co-authors, include a simple test.
* docs: add typerror exception to active_branch methodPatrick Gerard2022-08-201-0/+2
| | | | | | | | docs: add typerror exception to active_branch method fix: sphinx syntax add author
* fix: incorrect PathLike correctedPredeactor2022-08-071-2/+2
| | | | Signed-off-by: Predeactor <predeactor0@gmail.com>
* fix: remove bytes type of PathLikePredeactor2022-08-071-1/+1
| | | | Signed-off-by: Predeactor <predeactor0@gmail.com>
* Fix typehinting for PathLikePredeactor2022-07-311-10/+3
|
* Catch OSError to handle gevent monkey patching errorsEthan Anderson2022-07-061-1/+1
|
* Merge pull request #1459 from AustinScola/ascola/fix-blob-filter-typesSebastian Thiel2022-07-022-9/+18
|\ | | | | Fix blob filter types
| * Fix blob filter path shorter than filter pathAustin Scola2022-06-281-2/+6
| |
| * Use generator instead of mapAustin Scola2022-06-261-1/+1
| |
| * Remove usage of `PosixPath.is_relative_to`Austin Scola2022-06-261-1/+2
| | | | | | | | | | Remove usage of `PosixPath.is_relative_to` because it was added in Python 3.9 and earlier versions of Python are supported by `GitPython`.
| * Fix pathlike type annotation typoAustin Scola2022-06-261-1/+1
| |
| * Change to not stringify pathsAustin Scola2022-06-261-4/+6
| |
| * Move stage type defAustin Scola2022-06-212-3/+4
| |