mirror of
https://git.datalinker.icu/ltdrdata/ComfyUI-Manager
synced 2025-12-09 22:24:23 +08:00
61 lines
1.6 KiB
Python
61 lines
1.6 KiB
Python
import os
|
|
import configparser
|
|
|
|
|
|
def is_git_repo(path: str) -> bool:
|
|
""" Check if the path is a git repository. """
|
|
# NOTE: Checking it through `git.Repo` must be avoided.
|
|
# It locks the file, causing issues on Windows.
|
|
return os.path.exists(os.path.join(path, '.git'))
|
|
|
|
|
|
def get_commit_hash(fullpath):
|
|
git_head = os.path.join(fullpath, '.git', 'HEAD')
|
|
if os.path.exists(git_head):
|
|
with open(git_head) as f:
|
|
line = f.readline()
|
|
|
|
if line.startswith("ref: "):
|
|
ref = os.path.join(fullpath, '.git', line[5:].strip())
|
|
if os.path.exists(ref):
|
|
with open(ref) as f2:
|
|
return f2.readline().strip()
|
|
else:
|
|
return "unknown"
|
|
else:
|
|
return line
|
|
|
|
return "unknown"
|
|
|
|
|
|
def git_url(fullpath):
|
|
"""
|
|
resolve version of unclassified custom node based on remote url in .git/config
|
|
"""
|
|
git_config_path = os.path.join(fullpath, '.git', 'config')
|
|
|
|
if not os.path.exists(git_config_path):
|
|
return None
|
|
|
|
config = configparser.ConfigParser()
|
|
config.read(git_config_path)
|
|
|
|
for k, v in config.items():
|
|
if k.startswith('remote ') and 'url' in v:
|
|
return v['url']
|
|
|
|
return None
|
|
|
|
def normalize_url(url) -> str:
|
|
url = url.replace("git@github.com:", "https://github.com/")
|
|
if url.endswith('.git'):
|
|
url = url[:-4]
|
|
|
|
return url
|
|
|
|
def normalize_url_http(url) -> str:
|
|
url = url.replace("https://github.com/", "git@github.com:")
|
|
if url.endswith('.git'):
|
|
url = url[:-4]
|
|
|
|
return url |