2
0
mirror of https://github.com/inventree/InvenTree.git synced 2025-04-27 19:16:44 +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)
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)
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
try:
from dulwich.porcelain import active_branch
from dulwich.repo import Repo
main_repo = Repo(pathlib.Path(__file__).parent.parent.parent.parent.parent)
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:
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_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_commit = None
main_branch = None
def checkMinPythonVersion():
@ -270,14 +279,9 @@ def inventreeBranch():
if branch:
return branch
if main_commit is None:
if main_branch is None:
return None
try:
branch = main_repo.refs.follow(b'HEAD')[0][1].decode()
return branch.removeprefix('refs/heads/')
except IndexError:
return None # pragma: no cover
return main_branch.decode('utf-8')
def inventreeTarget():