Repository navigation
GitCommandError: Cmd('git') failed due to: exit code(1) when execute 'grep' with regex #1074
Description
Activity
It’s unlikely git is executed in the correct directory, which is why one would rather instantiate a
Repoinstance first along the lines ofr = git.Repo(path). Then invoke git liker.git.grep("--files-with-matches", "\"config.isEnabled([[:space:]*]'" + item + "'[[:space:]*])\""]).Docs for how to invoke git, and here for the troubleshooting.
Please feel free to keep posting into the closed issue for follow ups.
Thanks for the response.
Repois my code came fromRepo = git.Git(os.path.expanduser(path)), so the directory was correct. However, I did what you said but I am getting the same error.--------------------------------------------------------------------------- GitCommandError Traceback (most recent call last) <ipython-input-94-9b1915237b33> in <module> 3 r = Repo(path) 4 for item in toggles: ----> 5 files_result = r.git.grep("--files-with-matches", "\"config.isEnabled([[:space:]*]'" + item + "'[[:space:]*])\"") 6 #files_result = r.execute(["git", "grep", "--files-with-matches", "\"config.isEnabled([[:space:]*]'" + item + "'[[:space:]*])\""]) 7 files = files_result.splitlines() /opt/anaconda3/lib/python3.8/site-packages/git/cmd.py in <lambda>(*args, **kwargs) 540 if name[0] == '_': 541 return LazyMixin.__getattr__(self, name) --> 542 return lambda *args, **kwargs: self._call_process(name, *args, **kwargs) 543 544 def set_persistent_git_options(self, **kwargs): /opt/anaconda3/lib/python3.8/site-packages/git/cmd.py in _call_process(self, method, *args, **kwargs) 1003 call.extend(args) 1004 -> 1005 return self.execute(call, **exec_kwargs) 1006 1007 def _parse_object_header(self, header_line): /opt/anaconda3/lib/python3.8/site-packages/git/cmd.py in execute(self, command, istream, with_extended_output, with_exceptions, as_process, output_stream, stdout_as_string, kill_after_timeout, with_stdout, universal_newlines, shell, env, max_chunk_size, **subprocess_kwargs) 820 821 if with_exceptions and status != 0: --> 822 raise GitCommandError(command, status, stderr_value, stdout_value) 823 824 if isinstance(stdout_value, bytes) and stdout_as_string: # could also be output_stream GitCommandError: Cmd('git') failed due to: exit code(1) cmdline: git grep --files-with-matches "config.isEnabled([[:space:]*]'async-payments'[[:space:]*])"The issue is resolved by removing
\"from the"\"config.isEnabled([[:space:]*]'" + item + "'[[:space:]*])\"".Another issue comes up now. If the result of executing
grepfunction is empty, I am getting the same errorGitCommandError: Cmd('git') failed due to: exit code(1). When there is any result, it works fine.Any ideas to solve this?
By the looks of it, there is no way to ignore a non-zero exit code nor does git grep allow to ignore empty results.
As you are effectively executing the git program, maybe it’s easiest to call git yourself.
- locked and limited conversation to collaborators
on Feb 26, 2021
Hi,
I am trying to execute a grep command with regex using the execute() function. A part of my code is:
I am getting the following error:
However, when I run
git grep --files-with-matches "config.isEnabled([[:space:]*]'async-payments'[[:space:]*])"in the command line, it works.I appreciate any help.