2
0
mirror of https://github.com/inventree/InvenTree.git synced 2025-04-28 03:26:45 +00:00

fix(backend): determine active branch on startup (#9056)

* fix(backend): Determine active branch on startup

* add more warnings and document them

* extend expected errors

* fix typos
This commit is contained in:
Matthias Mair 2025-02-10 23:19:49 +01:00 committed by GitHub
parent 4df6e980ba
commit 047431d67f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 31 additions and 9 deletions

View File

@ -25,6 +25,24 @@ You probably have a reference to invoke or a directory with invoke in your PATH
### INVE-W (InvenTree Warning) ### INVE-W (InvenTree Warning)
Warnings - These are non-critical errors which should be addressed when possible. Warnings - These are non-critical errors which should be addressed when possible.
#### INVE-W1
**Current branch could not be detected - Backend**
During startup of the backend InvenTree tries to detect branch, commit hash and commit date to surface on various points in the UI, through tags and in the API.
This information is not needed for operation but very helpful for debugging and support. These issues might be caused by running a deployment version that delivers without git information, not having git installed or not having dulwich installed.
You can ignore this warning if you are not interested in the git information.
#### INVE-W2
**Dulwich module not found - Backend**
See [INVE-W1](#inve-w1)
#### INVE-W3
**Could not detect git information - Backend**
See [INVE-W1](#inve-w1)
### INVE-I (InvenTree Information) ### INVE-I (InvenTree Information)
Information — These are not errors but information messages. They might point out potential issues or just provide information. Information — These are not errors but information messages. They might point out potential issues or just provide information.

View File

@ -26,19 +26,28 @@ logger = logging.getLogger('inventree')
# Discover git # Discover git
try: try:
from dulwich.porcelain import active_branch
from dulwich.repo import Repo from dulwich.repo import Repo
main_repo = Repo(pathlib.Path(__file__).parent.parent.parent.parent.parent) main_repo = Repo(pathlib.Path(__file__).parent.parent.parent.parent.parent)
main_commit = main_repo[main_repo.head()] main_commit = main_repo[main_repo.head()]
try:
main_branch = active_branch(main_repo)
except (KeyError, IndexError):
logger.warning('INVE-W1: Current branch could not be detected.')
main_branch = None
except ImportError: except ImportError:
logger.warning( logger.warning(
'Warning: Dulwich module not found, git information will not be available.' 'INVE-W2: Dulwich module not found, git information will not be available.'
) )
main_repo = None main_repo = None
main_commit = None main_commit = None
except Exception: main_branch = None
except Exception as exc:
logger.warning('INVE-W3: Could not detect git information.', exc_info=exc)
main_repo = None main_repo = None
main_commit = None main_commit = None
main_branch = None
def checkMinPythonVersion(): def checkMinPythonVersion():
@ -270,14 +279,9 @@ def inventreeBranch():
if branch: if branch:
return branch return branch
if main_commit is None: if main_branch is None:
return None return None
return main_branch.decode('utf-8')
try:
branch = main_repo.refs.follow(b'HEAD')[0][1].decode()
return branch.removeprefix('refs/heads/')
except IndexError:
return None # pragma: no cover
def inventreeTarget(): def inventreeTarget():