fix(git_helper): remove comfyui_manager import to fix Windows subprocess crash (#2703)

git_helper.py is spawned as a standalone subprocess on Windows
(manager_core.py:1342). The import of comfyui_manager.common.timestamp_utils
triggered comfyui_manager/__init__.py which imports from comfy.cli_args —
unavailable in the subprocess environment, causing ModuleNotFoundError.

Inline get_backup_branch_name() using only stdlib (time, uuid), preserving
the original collision-detection and UUID-fallback semantics. Add 9 tests
covering standalone subprocess loading, behavioral equivalence, edge cases
(repo.heads exception, 99-suffix exhaustion with UUID fallback).
This commit is contained in:
Dr.Lt.Data
2026-03-18 02:04:48 +09:00
committed by GitHub
parent ddccefbc70
commit cd60f33f6d
2 changed files with 203 additions and 1 deletions
+30 -1
View File
@@ -9,7 +9,6 @@ import yaml
import requests
from tqdm.auto import tqdm
from git.remote import RemoteProgress
from comfyui_manager.common.timestamp_utils import get_backup_branch_name
comfy_path = os.environ.get('COMFYUI_PATH')
@@ -68,6 +67,36 @@ class GitProgress(RemoteProgress):
self.pbar.refresh()
def get_backup_branch_name(repo=None):
"""Get backup branch name with current timestamp.
Inlined from timestamp_utils to keep git_helper.py standalone — this script
runs as a subprocess on Windows and must not import from comfyui_manager.
"""
import time as _time
import uuid as _uuid
base_name = f'backup_{_time.strftime("%Y%m%d_%H%M%S")}'
if repo is None:
return base_name
try:
existing_branches = {b.name for b in repo.heads}
except Exception:
return base_name
if base_name not in existing_branches:
return base_name
for i in range(1, 100):
new_name = f'{base_name}_{i}'
if new_name not in existing_branches:
return new_name
return f'{base_name}_{_uuid.uuid4().hex[:6]}'
def gitclone(custom_nodes_path, url, target_hash=None, repo_path=None):
repo_name = os.path.splitext(os.path.basename(url))[0]