TFS Git Rest Api - 如何添加子模块?

TFS Git Rest Api - how to add submodule?

我正在尝试通过 TFS GIT REST API 将子模块添加到我在 TFS 上的 git 存储库中,但是到目前为止还没有成功。我创建了新的存储库并将 .git 模块添加到存储库,但不知道如何添加子模块 folder/reference。

这是我尝试为初始提交构造的原始请求,其中包含 .gitignore、.git 模块和名为 "SomeTools".[=14= 的子模块]

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."
                    }
                ]
}

我们无法通过pushes REST API实现,它可以创建一个新的分支但不能创建子模块。

似乎您手动创建了存储库并添加了 .gitmodules 文件,如果是,那么您还需要手动创建 submodule folder/reference,然后提交 > 推送到 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 存储库。