Skip to content

Commit b8e375f

Browse files
fix(windows): warn if Git long path support is disabled, do not fail
1 parent cea0edd commit b8e375f

File tree

1 file changed

+15
-16
lines changed

1 file changed

+15
-16
lines changed

src/gitingest/utils/git_utils.py

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
import asyncio
66
import base64
7+
import ctypes
78
import os
89
import re
910
from typing import Final
@@ -94,7 +95,6 @@ async def ensure_git_installed() -> None:
9495
------
9596
RuntimeError
9697
If Git is not installed or not accessible.
97-
If checking the long path setting fails on Windows.
9898
9999
"""
100100
try:
@@ -104,21 +104,20 @@ async def ensure_git_installed() -> None:
104104
raise RuntimeError(msg) from exc
105105
if sys.platform == "win32":
106106
try:
107-
stdout, _ = await run_command("git", "config", "--system", "core.longpaths")
108-
if stdout.decode().strip().lower() != "true":
109-
print(
110-
f"{Colors.BROWN}WARN{Colors.END}: {Colors.RED}Git clone may fail on Windows "
111-
f"due to long file paths:{Colors.END}",
112-
)
113-
print(f"{Colors.RED}To avoid this issue, consider enabling long path support with:{Colors.END}")
114-
print(f"{Colors.RED} git config --system core.longpaths true{Colors.END}")
115-
print(f"{Colors.RED}Note: This command may require administrator privileges.{Colors.END}")
116-
except RuntimeError as exc:
117-
msg = (
118-
"Unable to verify or access Git long path configuration. "
119-
"Run this application as Administrator or configure it manually."
120-
)
121-
raise RuntimeError(msg) from exc
107+
if ctypes.windll.shell32.IsUserAnAdmin():
108+
stdout, _ = await run_command("git", "config", "--system", "core.longpaths")
109+
if stdout.decode().strip().lower() == "true":
110+
return
111+
except RuntimeError:
112+
# Ignore if checking 'core.longpaths' fails due to lack of administrator rights.
113+
pass
114+
print(
115+
f"{Colors.BROWN}WARN{Colors.END}: {Colors.RED}Git clone may fail on Windows "
116+
f"due to long file paths:{Colors.END}",
117+
)
118+
print(f"{Colors.RED}To avoid this issue, consider enabling long path support with:{Colors.END}")
119+
print(f"{Colors.RED} git config --system core.longpaths true{Colors.END}")
120+
print(f"{Colors.RED}Note: This command may require administrator privileges.{Colors.END}")
122121

123122

124123
async def check_repo_exists(url: str, token: str | None = None) -> bool:

0 commit comments

Comments
 (0)