Spaces:
Runtime error
Runtime error
| 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 |