浏览代码

为每个子模块创建并切换到对应的本地分支

hanyu 6 天之前
父节点
当前提交
086e5836ab
共有 2 个文件被更改,包括 35 次插入2 次删除
  1. 34 1
      scripts/pull_submodules.sh
  2. 1 1
      src/location-eagleye

+ 34 - 1
scripts/pull_submodules.sh

@@ -28,6 +28,39 @@ echo ">>> 拉取子模块..."
 git submodule update --init --recursive --remote
 
 echo ""
-echo "完成: 所有子工程已拉取完成"
+echo ">>> 为子模块创建/切换到本地跟踪分支..."
+
+# 新增:为每个子模块创建并切换到对应的本地分支
+git submodule foreach --recursive '
+    # 获取 .gitmodules 中为该子模块配置的分支名
+    branch=$(git config -f "$toplevel/.gitmodules" "submodule.$name.branch")
+    
+    # 若未配置分支,尝试从远程仓库获取默认分支(通常为 master/main)
+    if [ -z "$branch" ]; then
+        # 通过 git ls-remote 获取远程 HEAD 指向的分支
+        remote_head=$(git ls-remote --symref origin HEAD 2>/dev/null | head -n1 | awk "{print \$2}" | sed "s|refs/heads/||")
+        branch=${remote_head:-master}
+        echo "  [$name] 未配置 branch,使用默认分支: $branch"
+    else
+        echo "  [$name] 配置分支: $branch"
+    fi
+
+    # 拉取远程分支最新数据
+    git fetch origin "$branch"
+
+    # 如果本地分支已存在,则直接切换;否则创建跟踪分支
+    if git show-ref --verify --quiet "refs/heads/$branch"; then
+        echo "  [$name] 本地分支 $branch 已存在,直接切换"
+        git checkout "$branch"
+        # 可选:将本地分支重置为远程最新(如需强制同步可取消注释)
+        # git reset --hard "origin/$branch"
+    else
+        echo "  [$name] 创建本地分支 $branch 并跟踪 origin/$branch"
+        git checkout -b "$branch" --track "origin/$branch"
+    fi
+'
+
+echo ""
+echo "完成: 所有子工程已拉取完成,并已切换到本地跟踪分支"
 echo "子模块列表:"
 git submodule status

+ 1 - 1
src/location-eagleye

@@ -1 +1 @@
-Subproject commit c49a8a955989e8620fb10e641ecab9271948d0c9
+Subproject commit febf54d580c62a85c83067151c55dd2ec9daa414