如何更新repo工具生成的清单文件中存储库上游的分支



我使用git repo工具,并使用此bash脚本创建清单文件:

repo manifest -r -o default.xml

创建的default.xml文件中的输出如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<remote name="REMOTE_NAME" fetch="https://github.com/ORGANIZATION_NAME"/>

<project name="PNG_MCU" remote="REMOTE_NAME" revision="f7815add324ea221e9e8e2cc1e13e350e9d5b461" upstream="main" dest-branch="main"/>
<project name="PNG_Middlewares" remote="REMOTE_NAME" revision="9a2d3faa78730684295c31d193e00225fa29fe42" upstream="main" dest-branch="main"/>
<project name="PNG_APPLICATION" remote="REMOTE_NAME" revision="b237708997e0127914d7a4364e51169540f780e5" upstream="main" dest-branch="main"/>
<project name="PNG_HAL" remote="REMOTE_NAME" revision="b01bfbf496d8fb8bd83821f6cd3aa46c15814671" upstream="main" dest-branch="main"/>
<project name="PNG_RTOS" remote="REMOTE_NAME" revision="1d7f4fe8d3860dc1262f85d341a0949467ce48c5" upstream="main" dest-branch="main"/>
<project name="PNG_Drivers" remote="REMOTE_NAME" revision="29bc3f4f2f232b5af66e2f87d4d155737eac57ad" upstream="main" dest-branch="main"/>
</manifest>

我的问题是,如果对于某个子Po(例如PNG_MCU(,我在一个不是"main"的分支上被签出,那么我希望在PNG_MCU行的清单文件中看到这一点。但当我更新清单文件时,它仍然显示"main"作为"下的分支;上游";即使它所指向的提交ID SHA不在main上。

当我进行回购同步时,一切都很好,因为SHA总是正确的,但分支部分让我很困扰。我只需要将其作为我用github操作编写的测试脚本的一部分。

知道如何使分支上游与提交SHA关联吗?

所以我没有得到这个问题的答案,我自己也没能弄清楚。因此,我做了一个变通办法,对我很有用。我创建了一个脚本,捕捉每个子博客状态(分支、提交ID、存储库名称(,并将其记录在一个txt文件(名为manifest_helper.txt(中,以便稍后由我的GitHub Actions脚本读取。

#!/bin/bash
#Check if manifest_helper.txt exists. If not then create it. 
if [[ -e manifest_helper.txt ]]; then
echo "file manifest_helper.txt found."
> manifest_helper.txt   #erase all contents of the file
else
echo "file manifest_helper.txt not found. Creating file..."
echo >> manifest_helper.txt
fi

echo "Capturing status of each subrepo..."
for directory in */; do #assuming the only directories are of the subrepos
cd $directory;
Current_Branch=$(git branch | sed -n -e 's/^* (.*)/1/p')    #taken from https://stackoverflow.com/a/2111099/4441211
BRANCH_NAME=$(git branch --show-current)
COMMIT_ID=$(git rev-parse --verify HEAD)
SUBREPO_NAME=$directory
echo "$BRANCH_NAME,$COMMIT_ID,${SUBREPO_NAME%?}" >> ../manifest_helper.txt # writing ${SUBREPO_NAME%?} insures that the last character of "" is removed

cd ..; 
done
echo "Updating manifest file:"
repo manifest -r -o default.xml
read -p "Repo Capture Script Done. Press any key to continue ..."

相关内容

最新更新