用户执行 coderocket update 时遇到错误:
❌ 错误:安装目录不是Git仓库
-
当前工作目录:用户执行命令的地方
- 可能是任何项目目录
- 不需要是Git仓库(对于update命令而言)
- 用户可以在任何地方执行
coderocket update
-
安装目录:CodeRocket 工具的安装位置
- 通常是
~/.coderocket - 必须是Git仓库,这样才能通过
git pull更新工具 - 包含工具的所有文件和脚本
- 通常是
coderocket update这个命令的执行流程:
- 检查安装目录
$INSTALL_DIR是否存在 - 检查安装目录是否是Git仓库 ← 这里是关键
- 进入安装目录
- 执行
git pull origin main更新工具
# 检查是否为Git仓库
if [ ! -d "$INSTALL_DIR/.git" ]; then
echo "❌ 错误:安装目录不是Git仓库"
echo "请重新安装 CodeRocket"
exit 1 # 直接失败
fi# 检查是否为Git仓库,如果不是则自动修复
if [ ! -d "$INSTALL_DIR/.git" ]; then
echo "⚠️ 检测到安装目录不是Git仓库"
echo "🔧 正在自动修复..."
# 进入安装目录(不是当前目录!)
cd "$INSTALL_DIR" || exit 1
# 在安装目录中初始化Git仓库
git init
git remote add origin https://github.com/im47cn/coderocket-cli.git
git fetch origin main
git reset --hard origin/main
echo "✅ 自动修复完成"
fi-
不影响用户的当前目录
- 所有操作都在
$INSTALL_DIR中进行 - 用户的工作目录不受影响
- 所有操作都在
-
只修复工具本身
- 只修复 CodeRocket 工具的安装
- 不会在用户项目中创建Git仓库
-
符合预期行为
- 安装目录本来就应该是Git仓库
- 这是工具正常工作的前提条件
测试脚本 test-update-fix.sh 验证了:
- ✅ 自动修复功能正常工作
- ✅ 远程仓库配置正确
- ✅ 版本信息正确
- ✅ 不影响其他目录
这个自动修复逻辑是安全和必要的,因为:
- 它只修复工具本身的安装问题
- 不会影响用户的项目目录
- 提供了更好的用户体验
- 避免了用户需要手动执行复杂的Git命令