2017-06-01 134 views
4

我想标记我的项目的所有子模块。我试图做到这一点:如何git标记所有子模块?

git submodule foreach git tag tagName 

......但它似乎只是返回没有错误,没有做任何事情。

编辑:这是我尝试的结果:

enter image description here

有人能告诉我如何正确地标记所有子模块?

注意:这是一个非常类似的问题this post,但该答案建议依赖超级项目中的子模块参考。但是,我实际上喜欢子模块回购中的标签。

+1

这样做。你期望看到什么反应? – jthill

+0

我编辑了原始帖子,以便您看到我没有收到任何标签。 – Eric

+0

但现在,我建议阅读下面接受的答案。 @VonC能够指出我为什么我的命令不起作用的方向。 – Eric

回答

5

首先,确保你的子模块文件夹中有一个内容:

git submodule update --init --recursive 

然后,只需做:

git submodule foreach git tag -l 

你应该看到,每个submdule,tagName
意思是你之前的命令确实标记了这些子模块。

我会建议作出annotated tag虽然不是lightweight one

git submodule foreach git tag -m "tagName" tagName 

这意味着你可以从每个子模块推动该标签。

如果您只是在父级回购级别进行标记,那将包含子模块gitlink,即它们的SHA1。你的情况可能够了。

+0

我编辑了上面的帖子,显示结果标签列表(无)......即使带有注释标签。 (在我的使用案例中,我确实需要在子模块的repo上使用标签,而不是仅对具有对已标记的子模块提交的引用的父项) – Eric

+0

@Eric是否执行了'git submodule update --init - 递归的第一个? – VonC

+0

非常有趣!所以,不,我没有。我不认为这是必要的,因为我已经完成了这个回购的'git submodule add'。我认为这足以确保子模块得到更新。但是我按照你的建议运行了更新,之后,'git submodule foreach tag ...'命令运行并运行得很好。 – Eric