0%

repo排除所有的projects脚本

repo项目根目录下执行 (会根据 manifest.xml 排除定义的所有 project ) :

新建sh文件

nano repo.sh

写入以下内容

#!/usr/bin/env bash

# 输出文件路径
OUTFILE=".repo/local_manifests/exclude_projects.xml"

# 确保 .repo/local_manifests 目录存在
mkdir -p .repo/local_manifests

# 初始化 exclude_projects.xml 文件
cat > "$OUTFILE" <<EOF
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
EOF

# 从 .repo/manifest.xml 中提取 include 文件名
includes=$(grep "<include " .repo/manifest.xml | sed -n 's/.*name="\([^"]*\)".*/\1/p')

# 遍历所有 include 的文件
for inc in $includes; do
incfile=".repo/manifests/$inc"
if [ -f "$incfile" ]; then
# 提取 incfile 中的 <project> 标签并生成 remove-project
grep "<project " "$incfile" | while read line; do
name=$(echo "$line" | sed -n 's/.*name="\([^"]*\)".*/\1/p')
if [ -n "$name" ]; then
echo " <remove-project name=\"$name\" />" >> "$OUTFILE"
fi
done
else
echo "警告:未找到被 include 的文件 $incfile"
fi
done

# 关闭 manifest 标签
echo "</manifest>" >> "$OUTFILE"
echo "处理完成,请查看 $OUTFILE 文件。"

添加权限,然后执行

chmod +x repo.sh
./repo.sh