Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Git executable not found error #9981

Closed
ollz272 opened this issue Jul 30, 2024 · 3 comments
Closed

Git executable not found error #9981

ollz272 opened this issue Jul 30, 2024 · 3 comments
Assignees

Comments

@ollz272
Copy link

ollz272 commented Jul 30, 2024

Summary of problem

When trying to upgrade from 2.9.3 and beyond, we get an error that a git exectuable can't be found on bitbucket pipelines:

[Datadog CI Visibility] ERROR    ddtrace.ext.git:git.py:129 Git executable not found, cannot extract git metadata.
[Datadog CI Visibility] ERROR    ddtrace.ext.git:git.py:320 Git executable not found, cannot extract git metadata.
/usr/local/lib/python3.12/multiprocessing/popen_fork.py:66: DeprecationWarning: This process (pid=903) is multi-threaded, use of fork() may lead to deadlocks in the child.
  self.pid = os.fork()
[Datadog CI Visibility] INFO     ddtrace.internal.ci_visibility.recorder:recorder.py:231 Service: sherlock (env: None)
[Datadog CI Visibility] INFO     ddtrace.internal.ci_visibility.recorder:recorder.py:232 Requests mode: agent EVP proxy
[Datadog CI Visibility] INFO     ddtrace.internal.ci_visibility.recorder:recorder.py:233 Git metadata upload enabled: True
[Datadog CI Visibility] INFO     ddtrace.internal.ci_visibility.recorder:recorder.py:234 API-provided settings: coverage collection: False
[Datadog CI Visibility] INFO     ddtrace.internal.ci_visibility.recorder:recorder.py:235 API-provided settings: Intelligent Test Runner: False, test skipping: False
[Datadog CI Visibility] INFO     ddtrace.internal.ci_visibility.recorder:recorder.py:240 Detected configurations: {'os.architecture': 'x86_64', 'os.platform': 'Linux', 'os.version': '5.15.0-1064-aws', '[runtime.name](http://runtime.name/)': 'CPython', 'runtime.version': '3.12.4'}
[Datadog CI Visibility] WARNING  ddtrace.internal.ci_visibility.recorder:recorder.py:247 CODEOWNERS file is not available
[Datadog CI Visibility] INFO     ddtrace.internal.ci_visibility.recorder:recorder.py:605 Final settings: coverage collection: False, test skipping: False
INTERNALERROR> Traceback (most recent call last):
INTERNALERROR>   File "/opt/atlassian/pipelines/agent/build/.venv/lib/python3.12/site-packages/_pytest/main.py", line 281, in wrap_session
INTERNALERROR>     config.hook.pytest_sessionstart(session=session)
INTERNALERROR>   File "/opt/atlassian/pipelines/agent/build/.venv/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
INTERNALERROR>     return self._hookexec([self.name](http://self.name/), self._hookimpls.copy(), kwargs, firstresult)
INTERNALERROR>            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
INTERNALERROR>   File "/opt/atlassian/pipelines/agent/build/.venv/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
INTERNALERROR>     return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
INTERNALERROR>            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
INTERNALERROR>   File "/opt/atlassian/pipelines/agent/build/.venv/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
INTERNALERROR>     raise exception.with_traceback(exception.__traceback__)
INTERNALERROR>   File "/opt/atlassian/pipelines/agent/build/.venv/lib/python3.12/site-packages/pluggy/_callers.py", line 122, in _multicall
INTERNALERROR>     teardown.throw(exception)  # type: ignore[union-attr]
INTERNALERROR>     ^^^^^^^^^^^^^^^^^^^^^^^^^
INTERNALERROR>   File "/opt/atlassian/pipelines/agent/build/.venv/lib/python3.12/site-packages/_pytest/logging.py", line 784, in pytest_sessionstart
INTERNALERROR>     return (yield)
INTERNALERROR>             ^^^^^
INTERNALERROR>   File "/opt/atlassian/pipelines/agent/build/.venv/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
INTERNALERROR>     res = hook_impl.function(*args)
INTERNALERROR>           ^^^^^^^^^^^^^^^^^^^^^^^^^
INTERNALERROR>   File "/opt/atlassian/pipelines/agent/build/.venv/lib/python3.12/site-packages/ddtrace/contrib/pytest/_plugin_v1.py", line 455, in pytest_sessionstart
INTERNALERROR>     workspace_path = extract_workspace_path()
INTERNALERROR>                      ^^^^^^^^^^^^^^^^^^^^^^^^
INTERNALERROR>   File "/opt/atlassian/pipelines/agent/build/.venv/lib/python3.12/site-packages/ddtrace/ext/git.py", line 284, in extract_workspace_path
INTERNALERROR>     workspace_path = _git_subprocess_cmd("rev-parse --show-toplevel", cwd=cwd)
INTERNALERROR>                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
INTERNALERROR>   File "/opt/atlassian/pipelines/agent/build/.venv/lib/python3.12/site-packages/ddtrace/ext/git.py", line 118, in _git_subprocess_cmd
INTERNALERROR>     stdout, stderr, _, returncode = _git_subprocess_cmd_with_details(*cmd, cwd=cwd, std_in=None)
INTERNALERROR>                                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
INTERNALERROR>   File "/opt/atlassian/pipelines/agent/build/.venv/lib/python3.12/site-packages/ddtrace/ext/git.py", line 99, in _git_subprocess_cmd_with_details
INTERNALERROR>     process = subprocess.Popen(
INTERNALERROR>               ^^^^^^^^^^^^^^^^^
INTERNALERROR>   File "/usr/local/lib/python3.12/subprocess.py", line 1026, in __init__
INTERNALERROR>     self._execute_child(args, executable, preexec_fn, close_fds,
INTERNALERROR>   File "/usr/local/lib/python3.12/subprocess.py", line 1955, in _execute_child
INTERNALERROR>     raise child_exception_type(errno_num, err_msg, err_filename)
INTERNALERROR> FileNotFoundError: [Errno 2] No such file or directory: 'git'
Process Process-1:
Traceback (most recent call last):
  File "/usr/local/lib/python3.12/multiprocessing/process.py", line 314, in _bootstrap
    self.run()
  File "/usr/local/lib/python3.12/multiprocessing/process.py", line 108, in run
    self._target(*self._args, **self._kwargs)
  File "/opt/atlassian/pipelines/agent/build/.venv/lib/python3.12/site-packages/ddtrace/internal/ci_visibility/git_client.py", line 163, in _run_protocol
    latest_commits = cls._get_latest_commits(cwd=cwd)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/atlassian/pipelines/agent/build/.venv/lib/python3.12/site-packages/ddtrace/internal/ci_visibility/git_client.py", line 235, in _get_latest_commits
    latest_commits, stderr, duration, returncode = _extract_latest_commits_with_details(cwd=cwd)
                                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/atlassian/pipelines/agent/build/.venv/lib/python3.12/site-packages/ddtrace/ext/git.py", line 219, in _extract_latest_commits_with_details
    return _git_subprocess_cmd_with_details("log", "--format=%H", "-n", "1000", '--since="1 month ago"', cwd=cwd)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/atlassian/pipelines/agent/build/.venv/lib/python3.12/site-packages/ddtrace/ext/git.py", line 99, in _git_subprocess_cmd_with_details
    process = subprocess.Popen(
              ^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/subprocess.py", line 1026, in __init__
    self._execute_child(args, executable, preexec_fn, close_fds,
  File "/usr/local/lib/python3.12/subprocess.py", line 1955, in _execute_child
    raise child_exception_type(errno_num, err_msg, err_filename)
FileNotFoundError: [Errno 2] No such file or directory: 'git'

Which version of dd-trace-py are you using?

2.9.3, 2.10.1

Which version of pip are you using?

Unsure

How can we reproduce your problem?

Try running tests in bitbucket with ddrace 2.9.3 installed.

What is the result that you get?

We get a crash because git can't be found.

What is the result that you expected?

The tests to run as normal

@emmettbutler
Copy link
Collaborator

Thanks for raising this issue, @ollz272. We'll see how we can help.

cc @romainkomorndatadog

@romainkomorndatadog romainkomorndatadog self-assigned this Jul 30, 2024
@romainkomorndatadog
Copy link
Collaborator

Ah, this comes from #9586 . I'll get a fix going ASAP.

@ollz272 , I assume you've been using our ddtrace plugin on bitbucket for some time, have you always used it without git available? The CIVisibility service that gets enabled by the plugin ends up making quite a few calls to the git executable.

romainkomorndatadog added a commit that referenced this issue Aug 1, 2024
Fixes an issue introduced by #9586 and reported in #9981 where the
pytest plugin would crash if the `git` binary was absent.

The workspace is instead grabbed from the `CIVisibility` service's tags
(via a new getter classmethod).

In order for the variable to persist through to the
`pytest_terminal_summary` hook, it is moved from being stashed on the
pytest `session` object to the nested `config` object (which itself is
passed to `pytest_terminal_summary`).

For improved testability, a function to get the location of the `git`
binary's passed, using `@cached()` to avoid re-fetching the path each
time we call `git`.

## Checklist
- [x] PR author has checked that all the criteria below are met
- The PR description includes an overview of the change
- The PR description articulates the motivation for the change
- The change includes tests OR the PR description describes a testing
strategy
- The PR description notes risks associated with the change, if any
- Newly-added code is easy to change
- The change follows the [library release note
guidelines](https://ddtrace.readthedocs.io/en/stable/releasenotes.html)
- The change includes or references documentation updates if necessary
- Backport labels are set (if
[applicable](https://ddtrace.readthedocs.io/en/latest/contributing.html#backporting))

## Reviewer Checklist
- [ ] Reviewer has checked that all the criteria below are met 
- Title is accurate
- All changes are related to the pull request's stated goal
- Avoids breaking
[API](https://ddtrace.readthedocs.io/en/stable/versioning.html#interfaces)
changes
- Testing strategy adequately addresses listed risks
- Newly-added code is easy to change
- Release note makes sense to a user of the library
- If necessary, author has acknowledged and discussed the performance
implications of this PR as reported in the benchmarks PR comment
- Backport labels are set in a manner that is consistent with the
[release branch maintenance
policy](https://ddtrace.readthedocs.io/en/latest/contributing.html#backporting)

---------

Co-authored-by: erikayasuda <153395705+erikayasuda@users.noreply.github.com>
github-actions bot pushed a commit that referenced this issue Aug 1, 2024
Fixes an issue introduced by #9586 and reported in #9981 where the
pytest plugin would crash if the `git` binary was absent.

The workspace is instead grabbed from the `CIVisibility` service's tags
(via a new getter classmethod).

In order for the variable to persist through to the
`pytest_terminal_summary` hook, it is moved from being stashed on the
pytest `session` object to the nested `config` object (which itself is
passed to `pytest_terminal_summary`).

For improved testability, a function to get the location of the `git`
binary's passed, using `@cached()` to avoid re-fetching the path each
time we call `git`.

## Checklist
- [x] PR author has checked that all the criteria below are met
- The PR description includes an overview of the change
- The PR description articulates the motivation for the change
- The change includes tests OR the PR description describes a testing
strategy
- The PR description notes risks associated with the change, if any
- Newly-added code is easy to change
- The change follows the [library release note
guidelines](https://ddtrace.readthedocs.io/en/stable/releasenotes.html)
- The change includes or references documentation updates if necessary
- Backport labels are set (if
[applicable](https://ddtrace.readthedocs.io/en/latest/contributing.html#backporting))

## Reviewer Checklist
- [ ] Reviewer has checked that all the criteria below are met
- Title is accurate
- All changes are related to the pull request's stated goal
- Avoids breaking
[API](https://ddtrace.readthedocs.io/en/stable/versioning.html#interfaces)
changes
- Testing strategy adequately addresses listed risks
- Newly-added code is easy to change
- Release note makes sense to a user of the library
- If necessary, author has acknowledged and discussed the performance
implications of this PR as reported in the benchmarks PR comment
- Backport labels are set in a manner that is consistent with the
[release branch maintenance
policy](https://ddtrace.readthedocs.io/en/latest/contributing.html#backporting)

---------

Co-authored-by: erikayasuda <153395705+erikayasuda@users.noreply.github.com>
(cherry picked from commit c460441)
romainkomorndatadog added a commit that referenced this issue Aug 1, 2024
Fixes an issue introduced by #9586 and reported in #9981 where the
pytest plugin would crash if the `git` binary was absent.

The workspace is instead grabbed from the `CIVisibility` service's tags
(via a new getter classmethod).

In order for the variable to persist through to the
`pytest_terminal_summary` hook, it is moved from being stashed on the
pytest `session` object to the nested `config` object (which itself is
passed to `pytest_terminal_summary`).

For improved testability, a function to get the location of the `git`
binary's passed, using `@cached()` to avoid re-fetching the path each
time we call `git`.

- [x] PR author has checked that all the criteria below are met
- The PR description includes an overview of the change
- The PR description articulates the motivation for the change
- The change includes tests OR the PR description describes a testing
strategy
- The PR description notes risks associated with the change, if any
- Newly-added code is easy to change
- The change follows the [library release note
guidelines](https://ddtrace.readthedocs.io/en/stable/releasenotes.html)
- The change includes or references documentation updates if necessary
- Backport labels are set (if
[applicable](https://ddtrace.readthedocs.io/en/latest/contributing.html#backporting))

- [ ] Reviewer has checked that all the criteria below are met
- Title is accurate
- All changes are related to the pull request's stated goal
- Avoids breaking
[API](https://ddtrace.readthedocs.io/en/stable/versioning.html#interfaces)
changes
- Testing strategy adequately addresses listed risks
- Newly-added code is easy to change
- Release note makes sense to a user of the library
- If necessary, author has acknowledged and discussed the performance
implications of this PR as reported in the benchmarks PR comment
- Backport labels are set in a manner that is consistent with the
[release branch maintenance
policy](https://ddtrace.readthedocs.io/en/latest/contributing.html#backporting)

---------

Co-authored-by: erikayasuda <153395705+erikayasuda@users.noreply.github.com>
(cherry picked from commit c460441)
romainkomorndatadog added a commit that referenced this issue Aug 1, 2024
Fixes an issue introduced by #9586 and reported in #9981 where the
pytest plugin would crash if the `git` binary was absent.

The workspace is instead grabbed from the `CIVisibility` service's tags
(via a new getter classmethod).

In order for the variable to persist through to the
`pytest_terminal_summary` hook, it is moved from being stashed on the
pytest `session` object to the nested `config` object (which itself is
passed to `pytest_terminal_summary`).

For improved testability, a function to get the location of the `git`
binary's passed, using `@cached()` to avoid re-fetching the path each
time we call `git`.

- [x] PR author has checked that all the criteria below are met
- The PR description includes an overview of the change
- The PR description articulates the motivation for the change
- The change includes tests OR the PR description describes a testing
strategy
- The PR description notes risks associated with the change, if any
- Newly-added code is easy to change
- The change follows the [library release note
guidelines](https://ddtrace.readthedocs.io/en/stable/releasenotes.html)
- The change includes or references documentation updates if necessary
- Backport labels are set (if
[applicable](https://ddtrace.readthedocs.io/en/latest/contributing.html#backporting))

- [ ] Reviewer has checked that all the criteria below are met
- Title is accurate
- All changes are related to the pull request's stated goal
- Avoids breaking
[API](https://ddtrace.readthedocs.io/en/stable/versioning.html#interfaces)
changes
- Testing strategy adequately addresses listed risks
- Newly-added code is easy to change
- Release note makes sense to a user of the library
- If necessary, author has acknowledged and discussed the performance
implications of this PR as reported in the benchmarks PR comment
- Backport labels are set in a manner that is consistent with the
[release branch maintenance
policy](https://ddtrace.readthedocs.io/en/latest/contributing.html#backporting)

---------

Co-authored-by: erikayasuda <153395705+erikayasuda@users.noreply.github.com>
(cherry picked from commit c460441)
romainkomorndatadog added a commit that referenced this issue Aug 1, 2024
Fixes an issue introduced by #9586 and reported in #9981 where the
pytest plugin would crash if the `git` binary was absent.

The workspace is instead grabbed from the `CIVisibility` service's tags
(via a new getter classmethod).

In order for the variable to persist through to the
`pytest_terminal_summary` hook, it is moved from being stashed on the
pytest `session` object to the nested `config` object (which itself is
passed to `pytest_terminal_summary`).

For improved testability, a function to get the location of the `git`
binary's passed, using `@cached()` to avoid re-fetching the path each
time we call `git`.

- [x] PR author has checked that all the criteria below are met
- The PR description includes an overview of the change
- The PR description articulates the motivation for the change
- The change includes tests OR the PR description describes a testing
strategy
- The PR description notes risks associated with the change, if any
- Newly-added code is easy to change
- The change follows the [library release note
guidelines](https://ddtrace.readthedocs.io/en/stable/releasenotes.html)
- The change includes or references documentation updates if necessary
- Backport labels are set (if
[applicable](https://ddtrace.readthedocs.io/en/latest/contributing.html#backporting))

- [ ] Reviewer has checked that all the criteria below are met
- Title is accurate
- All changes are related to the pull request's stated goal
- Avoids breaking
[API](https://ddtrace.readthedocs.io/en/stable/versioning.html#interfaces)
changes
- Testing strategy adequately addresses listed risks
- Newly-added code is easy to change
- Release note makes sense to a user of the library
- If necessary, author has acknowledged and discussed the performance
implications of this PR as reported in the benchmarks PR comment
- Backport labels are set in a manner that is consistent with the
[release branch maintenance
policy](https://ddtrace.readthedocs.io/en/latest/contributing.html#backporting)

---------

Co-authored-by: erikayasuda <153395705+erikayasuda@users.noreply.github.com>
(cherry picked from commit c460441)
romainkomorndatadog added a commit that referenced this issue Aug 2, 2024
…#10025)

Backport c460441 from #9989 to 2.9.

Fixes an issue introduced by #9586 and reported in #9981 where the
pytest plugin would crash if the `git` binary was absent.

The workspace is instead grabbed from the `CIVisibility` service's tags
(via a new getter classmethod).

In order for the variable to persist through to the
`pytest_terminal_summary` hook, it is moved from being stashed on the
pytest `session` object to the nested `config` object (which itself is
passed to `pytest_terminal_summary`).

For improved testability, a function to get the location of the `git`
binary's passed, using `@cached()` to avoid re-fetching the path each
time we call `git`.

## Checklist
- [x] PR author has checked that all the criteria below are met
- The PR description includes an overview of the change
- The PR description articulates the motivation for the change
- The change includes tests OR the PR description describes a testing
strategy
- The PR description notes risks associated with the change, if any
- Newly-added code is easy to change
- The change follows the [library release note
guidelines](https://ddtrace.readthedocs.io/en/stable/releasenotes.html)
- The change includes or references documentation updates if necessary
- Backport labels are set (if
[applicable](https://ddtrace.readthedocs.io/en/latest/contributing.html#backporting))

## Reviewer Checklist
- [x] Reviewer has checked that all the criteria below are met 
- Title is accurate
- All changes are related to the pull request's stated goal
- Avoids breaking
[API](https://ddtrace.readthedocs.io/en/stable/versioning.html#interfaces)
changes
- Testing strategy adequately addresses listed risks
- Newly-added code is easy to change
- Release note makes sense to a user of the library
- If necessary, author has acknowledged and discussed the performance
implications of this PR as reported in the benchmarks PR comment
- Backport labels are set in a manner that is consistent with the
[release branch maintenance
policy](https://ddtrace.readthedocs.io/en/latest/contributing.html#backporting)
romainkomorndatadog added a commit that referenced this issue Aug 2, 2024
#10022)

Backport c460441 from #9989 to 2.10.

Fixes an issue introduced by #9586 and reported in #9981 where the
pytest plugin would crash if the `git` binary was absent.

The workspace is instead grabbed from the `CIVisibility` service's tags
(via a new getter classmethod).

In order for the variable to persist through to the
`pytest_terminal_summary` hook, it is moved from being stashed on the
pytest `session` object to the nested `config` object (which itself is
passed to `pytest_terminal_summary`).

For improved testability, a function to get the location of the `git`
binary's passed, using `@cached()` to avoid re-fetching the path each
time we call `git`.

## Checklist
- [x] PR author has checked that all the criteria below are met
- The PR description includes an overview of the change
- The PR description articulates the motivation for the change
- The change includes tests OR the PR description describes a testing
strategy
- The PR description notes risks associated with the change, if any
- Newly-added code is easy to change
- The change follows the [library release note
guidelines](https://ddtrace.readthedocs.io/en/stable/releasenotes.html)
- The change includes or references documentation updates if necessary
- Backport labels are set (if
[applicable](https://ddtrace.readthedocs.io/en/latest/contributing.html#backporting))

## Reviewer Checklist
- [x] Reviewer has checked that all the criteria below are met 
- Title is accurate
- All changes are related to the pull request's stated goal
- Avoids breaking
[API](https://ddtrace.readthedocs.io/en/stable/versioning.html#interfaces)
changes
- Testing strategy adequately addresses listed risks
- Newly-added code is easy to change
- Release note makes sense to a user of the library
- If necessary, author has acknowledged and discussed the performance
implications of this PR as reported in the benchmarks PR comment
- Backport labels are set in a manner that is consistent with the
[release branch maintenance
policy](https://ddtrace.readthedocs.io/en/latest/contributing.html#backporting)

Co-authored-by: Romain Komorn <136473744+romainkomorndatadog@users.noreply.github.com>
romainkomorndatadog added a commit that referenced this issue Aug 2, 2024
…#10024)

Backport c460441 from #9989 to 2.8.

Fixes an issue introduced by #9586 and reported in #9981 where the
pytest plugin would crash if the `git` binary was absent.

The workspace is instead grabbed from the `CIVisibility` service's tags
(via a new getter classmethod).

In order for the variable to persist through to the
`pytest_terminal_summary` hook, it is moved from being stashed on the
pytest `session` object to the nested `config` object (which itself is
passed to `pytest_terminal_summary`).

For improved testability, a function to get the location of the `git`
binary's passed, using `@cached()` to avoid re-fetching the path each
time we call `git`.

## Checklist
- [x] PR author has checked that all the criteria below are met
- The PR description includes an overview of the change
- The PR description articulates the motivation for the change
- The change includes tests OR the PR description describes a testing
strategy
- The PR description notes risks associated with the change, if any
- Newly-added code is easy to change
- The change follows the [library release note
guidelines](https://ddtrace.readthedocs.io/en/stable/releasenotes.html)
- The change includes or references documentation updates if necessary
- Backport labels are set (if
[applicable](https://ddtrace.readthedocs.io/en/latest/contributing.html#backporting))

## Reviewer Checklist
- [x] Reviewer has checked that all the criteria below are met 
- Title is accurate
- All changes are related to the pull request's stated goal
- Avoids breaking
[API](https://ddtrace.readthedocs.io/en/stable/versioning.html#interfaces)
changes
- Testing strategy adequately addresses listed risks
- Newly-added code is easy to change
- Release note makes sense to a user of the library
- If necessary, author has acknowledged and discussed the performance
implications of this PR as reported in the benchmarks PR comment
- Backport labels are set in a manner that is consistent with the
[release branch maintenance
policy](https://ddtrace.readthedocs.io/en/latest/contributing.html#backporting)
@romainkomorndatadog
Copy link
Collaborator

I've just released ddtrace versions which all contain a fix for this issue:

I've tested all three in a docker container without a git binary installed and all finished without crashes. In the screenshot below, the branch is empty due to git being missing:
image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants