【问题标题】:TFS Git Rest Api - how to add submodule?TFS Git Rest Api - 如何添加子模块?
【发布时间】:2018-03-23 05:09:05
【问题描述】:

我正在尝试通过TFS GIT REST API 将子模块添加到我在 TFS 上的 git 存储库中,但到目前为止还没有运气。我创建了新的存储库并将 .gitmodules 添加到存储库,但不知道如何添加子模块文件夹/引用。

这是我尝试使用 .gitignore、.gitmodules 和名为“SomeTools”的子模块为初始提交构建的原始请求。

POST http://tfs:8080/tfs/My_Collection/My_Projekt/_apis/git/repositories/TestRepo/pushes?api-version=2.0 HTTP/1.1
Accept: */*
Content-Type: application/json
Host: tfs:8080
Content-Length: 7213

{
    "refUpdates":  [
                       {
                           "name":  "refs/heads/develop",
                           "oldObjectId":  "0000000000000000000000000000000000000000"
                       }
                   ],
    "commits":  [
                    {
                        "changes":  [
                                        {
                                            "newContent":  {
                                                               "content":  *.suo\r\n",
                                                               "contentType":  "rawtext"
                                                           },
                                            "changeType":  "add",
                                            "item":  {
                                                         "path":  "/.gitignore"
                                                     }
                                        },
                                        {
                                            "newContent":  {
                                                               "content":  "[submodule \"SomeTools\"]\n\tpath = SomeTools\n\turl = http://tfs:8080/tfs/My_Collection/My_Projekt/_git/SomeTools\n",
                                                               "contentType":  "rawtext"
                                                           },
                                            "changeType":  "add",
                                            "item":  {
                                                         "path":  "/.gitmodules"
                                                     }
                                        },
                                        {
                                            "newContent":  {
                                                               "content":  "198abf113d8baf48aa55ab1897b30fdb7b23c4cc",
                                                               "contentType":  "rawtext"
                                                           },
                                            "changeType":  "add",
                                            "item":  {
                                                         "path":  "/SomeTools",
                                                         "versionType":  "commit"
                                                     }
                                        }
                                    ],
                        "comment":  "Initial commit."
                    }
                ]
}

【问题讨论】:

    标签: git tfs git-submodules tfs-sdk


    【解决方案1】:

    pushes REST API 无法做到这一点,它可以创建一个新的分支但不能创建子模块。

    看来您手动创建了存储库并添加了.gitmodules文件,如果是,那么您还需要手动创建submodule文件夹/引用,然后提交>推送到Git服务器。

    最简单的方法是运行git submodule add 命令添加Git 子模块:

    假设您有 2 个 Git 存储库:

    http://server:8080/tfs/DefaultCollection/TeamProjectName/_git/Repo1
    http://server:8080/tfs/DefaultCollection/TeamProjectName/_git/Repo2
    

    为 Repo1 添加 git 子模块:

    git clone http://server:8080/tfs/DefaultCollection/TeamProjectName/_git/Repo1
    
    git submodule add http://server:8080/tfs/DefaultCollection/TeamProjectName/_git/Repo2
    

    然后提交更改并推送到 Git 存储库。

    【讨论】:

    • @Wojciech Markowski 您是否通过上述解决方法解决了问题?有更新吗?
    • 不幸的是我找不到通过rest api解决它的方法。如上所述,我必须使用 git 本地存储库添加子模块并将其推送到 TFS,但是我希望 web api 将很快得到改进以支持此功能。
    猜你喜欢
    • 1970-01-01
    • 2015-03-22
    • 1970-01-01
    • 1970-01-01
    • 2011-06-03
    • 2015-08-16
    • 1970-01-01
    • 1970-01-01
    • 2019-01-01
    相关资源
    最近更新 更多