react-phone-apps/fix-scoop-git.ps1
lanrtop a0929de768 chore: 初始化项目结构与蓝图
- 配置 pnpm workspace monorepo 基础结构
- 初始化 .blueprint/ 蓝图:6 个业务模块、21 张任务卡
- 目标:Z Fold 6 折叠屏不动产物品摸底统计 App(React Native + Expo)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-07 15:23:39 +09:00

134 lines
3.7 KiB
PowerShell

Write-Host "修复 Scoop 和 Git 安装..."
$scoopDir = "E:\Scoop"
$appsDir = "$scoopDir\apps"
$shimsDir = "$scoopDir\shims"
# 1. 修复 7zip shim
Write-Host "1. 修复 7zip shim..."
$7zShim = "$shimsDir\7z.shim"
$7zPath = "$appsDir\7zip\25.01\7z.exe"
if (Test-Path $7zPath) {
if (Test-Path $7zShim) {
Set-Content $7zShim "path = `"$7zPath`""
Write-Host " 更新 7z.shim 指向: $7zPath"
} else {
Write-Host " 错误: 7z.shim 不存在"
}
} else {
Write-Host " 错误: 7z.exe 未找到,请先安装 7-zip: scoop install 7zip"
exit 1
}
# 2. 修复 7zip current 符号链接
Write-Host "2. 修复 7zip current 符号链接..."
$7zipCurrent = "$appsDir\7zip\current"
if (-not (Test-Path $7zipCurrent)) {
cmd /c mklink /J "$7zipCurrent" "$appsDir\7zip\25.01" 2>$null
if (Test-Path $7zipCurrent) {
Write-Host " 创建 current 符号链接"
} else {
Write-Host " 警告: 无法创建符号链接,使用绝对路径"
}
} else {
Write-Host " current 符号链接已存在"
}
# 3. 手动提取 Git
Write-Host "3. 手动提取 Git..."
$gitDir = "$appsDir\git\2.53.0.2"
$dl7z = "$gitDir\dl.7z"
if (Test-Path $dl7z) {
Write-Host " 找到 dl.7z: $dl7z"
# 创建目标目录
if (-not (Test-Path $gitDir)) {
New-Item -ItemType Directory -Path $gitDir -Force | Out-Null
}
# 使用 7z 提取
Write-Host " 正在提取文件..."
& $7zPath x "-o$gitDir" "-y" "$dl7z" | Out-Null
if (Test-Path "$gitDir\bin\git.exe") {
Write-Host " 提取成功: git.exe 已存在"
} else {
Write-Host " 警告: 提取可能失败,检查目录内容"
Get-ChildItem $gitDir -Recurse -File | Select-Object -First 10 | ForEach-Object { Write-Host " $_" }
}
} else {
Write-Host " 错误: dl.7z 未找到,请重新下载"
Write-Host " 运行: scoop cache rm git; scoop download git"
exit 1
}
# 4. 创建 Git shims
Write-Host "4. 创建 Git shims..."
# git shim
$gitShim = "$shimsDir\git.shim"
$gitExe = "$gitDir\bin\git.exe"
if (Test-Path $gitExe) {
Set-Content $gitShim "path = `"$gitExe`""
Write-Host " 创建 git.shim"
# 复制 shim 可执行文件
$shimExe = "$shimsDir\git.exe"
if (-not (Test-Path $shimExe)) {
Copy-Item "$shimsDir\7z.exe" $shimExe -ErrorAction SilentlyContinue
if (Test-Path $shimExe) {
Write-Host " 创建 git.exe shim"
}
}
} else {
Write-Host " 错误: git.exe 未找到"
}
# sh (bash) shim
$shShim = "$shimsDir\sh.shim"
$shExe = "$gitDir\bin\sh.exe"
if (Test-Path $shExe) {
Set-Content $shShim "path = `"$shExe`""
Write-Host " 创建 sh.shim"
} else {
Write-Host " 警告: sh.exe 未找到"
}
# git-bash shim
$gitBashShim = "$shimsDir\git-bash.shim"
$gitBashExe = "$gitDir\git-bash.exe"
if (Test-Path $gitBashExe) {
Set-Content $gitBashShim "path = `"$gitBashExe`""
Write-Host " 创建 git-bash.shim"
}
# 5. 更新 PATH 并测试
Write-Host "5. 测试安装..."
$env:Path = "$shimsDir;$env:Path"
Write-Host "`n测试命令:"
try {
$gitVersion = git --version 2>$null
if ($gitVersion) {
Write-Host " ✓ git: $gitVersion"
} else {
Write-Host " ✗ git: 命令失败"
Write-Host " 临时使用: $gitExe"
}
} catch {
Write-Host " ✗ git: 错误: $_"
}
try {
$7zVersion = 7z --help 2>$null | Select-Object -First 1
if ($7zVersion) {
Write-Host " ✓ 7z: 可用"
}
} catch {
Write-Host " ✗ 7z: 错误"
}
Write-Host "`n修复完成!"
Write-Host "如果命令仍然不可用,请重启终端或运行:"
Write-Host " `$env:Path = `"$shimsDir;`$env:Path`""
Write-Host "`n然后测试: git --version"