【问题标题】:VSTS Checkout Submodules is not workingVSTS Checkout 子模块不工作
【发布时间】:2017-08-29 16:11:29
【问题描述】:

我有 2 个存储库。 repo1 依赖于 repo2。

我尝试了以下步骤:

  1. Git 克隆 repo1
  2. git 子模块添加 repo2
  3. 在 repo1 分支的 VSTS 中上传了 .gitmodules 文件
  4. 在 VSTS 构建的 Get-sources 步骤中,单击签出子模块
  5. 添加了一个额外的步骤 git submodule update --init。

子模块文件仍然没有进入代理。下面是我的 .gitmodules [子模块“sm”] path = sm url = https://xxx.visualstudio.com/DefaultCollection/project/_git/sm

【问题讨论】:

    标签: git azure-devops


    【解决方案1】:

    这是由于你没有在repo1中提交并推送sm(repo2名称)

    添加 repo2 (sm) 作为 repo1 (git submodule add <URL for repo2>) 的子模块后,将创建两个需要提交的文件:

    • .gitmodules:记录路径和来源获取子模块repo(repo2)。
    • sm(repo2 名称):记录您在 repo1 中添加子模块 repo (repo2) 的提交

    这两个文件都是子模块所必需的。虽然您只在 VSTS repo1 中上传了.gitmodules,所以即使您使用子模块克隆了 repo1(在获取源步骤中),git 也找不到您添加子模块的提交。

    正确的做法是commit和push这两个文件。

    如果你在添加子模块后没有对本地repo进行其他更改,并且repo1没有其他更改,则可以使用提交和推送的方式:

    git status #make sure both the .gitmodules and sm (repo2 name) are staged (changes to be committed)
    git commit -m 'commit for .gitmodules and sm (repo2 name)'
    git push -f #force push
    

    【讨论】:

    • 嗨玛丽娜。这里的sm是什么意思。我的 repo2 文件夹在这里变成 sm 了吗?或者会有另一个名为 sm.sm 的文件。但我在我的分支/本地下找不到任何 sm 文件或文件夹。
    • 当你将 repo2 添加为 repo1 的子模块时,将创建一个文件夹名称 sm 和一个文件 .gitmodules,你应该提交/推送它们,sm 将作为VSTS 中以提交 ID 作为内容的文件。
    • 嗨玛丽娜。能不能帮我下线。你能提供你的 Skype id/fb id/邮件吗?
    • 对不起,这里不允许使用个人地址。我们可以在chat.stackoverflow.com/rooms/153091/vsts-submodule这个房间讨论这个问题。
    • 对不起。我没有 20 声望在那里聊天。我运行 git submodule add repo2 时没有得到任何名为 sm 的文件
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-25
    • 1970-01-01
    • 1970-01-01
    • 2015-06-05
    • 1970-01-01
    • 2010-12-08
    相关资源
    最近更新 更多