我目前拥有自己的AOSP项目镜像。我可以手动分支一些存储库,但我不确定如何标记镜像中的所有存储库以保存发布。标记所有内容是否是一个特殊的“repo”命令?
答案 0 :(得分:4)
据我所知,repo
没有标记命令,但您可以使用repo forall
命令:
类似的东西:
repo forall -c 'git tag TAGNAME'
应该有用。
答案 1 :(得分:0)
在你的情况下,你可能做想要标记每个git并通过@ouah解答如何解答,但请参阅我关于创建带注释标签的评论。请记住,虽然标记告诉您该git中的哪个提交是发布的一部分,但您仍然不知道哪个gits包含该标记。要同步发布的完整工作区,您必须检查所有可能的gits(如果它们包含相关标记(git ls-remote
应该有帮助)),并根据该信息制作清单。或者,在清单git中创建一个提交并列出那里的所有gits(以及提交的标记)。
现在,如果您打算创建数千个标记(例如,因为您有一个经常运行的CI作业,可以构建所有内容,并且您希望记录每个构建的状态),您应该认为Git在这些引用数量上效率低下。相反,创建一个包含每个git的签出提交的静态清单(repo manifest -r -o manifest.xml
)可能更明智。
缺点是你不能说例如git diff your-release-1.0..HEAD
但必须获取静态清单并拿起SHA-1与之进行比较(显然是一项易于自动化的任务)。好处是你可以轻松地同步一个完整的工作区,特别是如果你将静态清单文件存储在清单git中。例如,如果将它们存储在主分支中(无论它们是从哪个分支构建的),都可以使用repo init -u ... -m your-release-1.0.xml
来准备工作区。