diff options
author | Sebastian Thiel <sebastian.thiel@icloud.com> | 2022-09-01 07:59:02 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-09-01 07:59:02 +0800 |
commit | bec61576ae75803bc4e60d8de7a629c194313d1c (patch) | |
tree | 087efdcdb3fc02be8a4bdd77e5dc6880c3170e6a | |
parent | 73bde1f27711e48bd887b5a13cd5e3a0a8d9d723 (diff) | |
parent | 18a79d8028f934f8f78da33de3b0523fc7d1df47 (diff) | |
download | gitpython-bec61576ae75803bc4e60d8de7a629c194313d1c.tar.gz |
Merge pull request #1485 from thehale/blame/rev-opts
feat(blame): Support custom `rev_opts` for blame
-rw-r--r-- | AUTHORS | 1 | ||||
-rw-r--r-- | git/repo/base.py | 11 | ||||
-rw-r--r-- | test/test_repo.py | 7 |
3 files changed, 16 insertions, 3 deletions
@@ -49,4 +49,5 @@ Contributors are: -Julien Mauroy <pro.julien.mauroy _at_ gmail.com> -Patrick Gerard -Luke Twist <itsluketwist@gmail.com> +-Joseph Hale <me _at_ jhale.dev> Portions derived from other open source works and are clearly marked. diff --git a/git/repo/base.py b/git/repo/base.py index a1be5ff9..c49c6118 100644 --- a/git/repo/base.py +++ b/git/repo/base.py @@ -950,7 +950,12 @@ class Repo(object): ) def blame( - self, rev: Union[str, HEAD], file: str, incremental: bool = False, **kwargs: Any + self, + rev: Union[str, HEAD], + file: str, + incremental: bool = False, + rev_opts: Optional[List[str]] = None, + **kwargs: Any ) -> List[List[Commit | List[str | bytes] | None]] | Iterator[BlameEntry] | None: """The blame information for the given file at the given revision. @@ -962,8 +967,8 @@ class Repo(object): of appearance.""" if incremental: return self.blame_incremental(rev, file, **kwargs) - - data: bytes = self.git.blame(rev, "--", file, p=True, stdout_as_string=False, **kwargs) + rev_opts = rev_opts or [] + data: bytes = self.git.blame(rev, *rev_opts, "--", file, p=True, stdout_as_string=False, **kwargs) commits: Dict[str, Commit] = {} blames: List[List[Commit | List[str | bytes] | None]] = [] diff --git a/test/test_repo.py b/test/test_repo.py index 75b590fe..703dbb43 100644 --- a/test/test_repo.py +++ b/test/test_repo.py @@ -553,6 +553,13 @@ class TestRepo(TestBase): self.assertEqual(len(res), 1) self.assertEqual(len(res[0][1]), 83, "Unexpected amount of parsed blame lines") + @mock.patch.object(Git, "_call_process") + def test_blame_accepts_rev_opts(self, git): + res = self.rorepo.blame("HEAD", "README.md", rev_opts=["-M", "-C", "-C"]) + expected_args = ['blame', 'HEAD', '-M', '-C', '-C', '--', 'README.md'] + boilerplate_kwargs = {"p" : True, "stdout_as_string": False} + git.assert_called_once_with(*expected_args, **boilerplate_kwargs) + @skipIf( HIDE_WINDOWS_KNOWN_ERRORS and Git.is_cygwin(), """FIXME: File "C:\\projects\\gitpython\\git\\cmd.py", line 671, in execute |