feat: streamline Git information retrieval using GitPython for improved accuracy and performance

This commit is contained in:
Will Miao
2025-08-05 07:28:08 +08:00
parent 31223f0526
commit 33c83358b0

View File

@@ -377,49 +377,12 @@ class UpdateRoutes:
if not os.path.exists(os.path.join(plugin_root, '.git')): if not os.path.exists(os.path.join(plugin_root, '.git')):
return git_info return git_info
# Get current commit hash repo = git.Repo(plugin_root)
result = subprocess.run( commit = repo.head.commit
['git', 'rev-parse', 'HEAD'], git_info['commit_hash'] = commit.hexsha
cwd=plugin_root, git_info['short_hash'] = commit.hexsha[:7]
stdout=subprocess.PIPE, git_info['branch'] = repo.active_branch.name if not repo.head.is_detached else 'detached'
stderr=subprocess.PIPE, git_info['commit_date'] = commit.committed_datetime.strftime('%Y-%m-%d')
text=True,
check=False
)
if result.returncode == 0:
git_info['commit_hash'] = result.stdout.strip()
git_info['short_hash'] = git_info['commit_hash'][:7]
# Get current branch name
result = subprocess.run(
['git', 'rev-parse', '--abbrev-ref', 'HEAD'],
cwd=plugin_root,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
text=True,
check=False
)
if result.returncode == 0:
git_info['branch'] = result.stdout.strip()
# Get commit date
result = subprocess.run(
['git', 'show', '-s', '--format=%ci', 'HEAD'],
cwd=plugin_root,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
text=True,
check=False
)
if result.returncode == 0:
commit_date = result.stdout.strip()
# Format the date nicely if possible
try:
date_obj = datetime.strptime(commit_date, '%Y-%m-%d %H:%M:%S %z')
git_info['commit_date'] = date_obj.strftime('%Y-%m-%d')
except:
git_info['commit_date'] = commit_date
except Exception as e: except Exception as e:
logger.warning(f"Error getting git info: {e}") logger.warning(f"Error getting git info: {e}")