![](/img/trans.png)
[英]How to get all files in a specific branch in a GIT repository in VSTS through VSTS REST API?
[英]How to get a branch name of the commit in VSTS Rest API?
我正在嘗試根據提交分支提出構建定義。 但是,在提交信息API中找不到與分支信息或參考信息相關的任何地方。
我的要求看起來像這樣
https://fabrikam-fiber-inc.visualstudio.com/DefaultCollection/_apis/git/repositories/278d5cd2-584d-4b63-824a-2ba458937249/commits/be67f8871a4d2c75f13a51c1d3c30ac0d74d4ef4?api-version=1.0
響應與參考完全相同:
{
"parents": [],
"treeId": "7fa1a3523ffef51c525ea476bffff7d648b8cb3d",
"push": {
"pushedBy": {
"id": "8c8c7d32-6b1b-47f4-b2e9-30b477b5ab3d",
"displayName": "Chuck Reinhart",
"uniqueName": "fabrikamfiber3@hotmail.com",
"url": "https://fabrikam-fiber-inc.vssps.visualstudio.com/_apis/Identities/8c8c7d32-6b1b-47f4-b2e9-30b477b5ab3d",
"imageUrl": "https://fabrikam-fiber-inc.visualstudio.com/DefaultCollection/_api/_common/identityImage?id=8c8c7d32-6b1b-47f4-b2e9-30b477b5ab3d"
},
"pushId": 1,
"date": "2014-01-29T23:33:15.2434002Z"
},
"commitId": "be67f8871a4d2c75f13a51c1d3c30ac0d74d4ef4",
"author": {
"name": "Chuck Reinhart",
"email": "fabrikamfiber3@hotmail.com",
"date": "2014-01-29T23:32:09Z"
},
"committer": {
"name": "Chuck Reinhart",
"email": "fabrikamfiber3@hotmail.com",
"date": "2014-01-29T23:32:09Z"
},
"comment": "First cut\n",
"url": "https://fabrikam-fiber-inc.visualstudio.com/DefaultCollection/_apis/git/repositories/278d5cd2-584d-4b63-824a-2ba458937249/commits/be67f8871a4d2c75f13a51c1d3c30ac0d74d4ef4",
"remoteUrl": "https://fabrikam-fiber-inc.visualstudio.com/DefaultCollection/_git/Fabrikam-Fiber-Git/commit/be67f8871a4d2c75f13a51c1d3c30ac0d74d4ef4",
"_links": {
"self": {
"href": "https://fabrikam-fiber-inc.visualstudio.com/DefaultCollection/_apis/git/repositories/278d5cd2-584d-4b63-824a-2ba458937249/commits/be67f8871a4d2c75f13a51c1d3c30ac0d74d4ef4"
},
"repository": {
"href": "https://fabrikam-fiber-inc.visualstudio.com/DefaultCollection/_apis/git/repositories/278d5cd2-584d-4b63-824a-2ba458937249"
},
"changes": {
"href": "https://fabrikam-fiber-inc.visualstudio.com/DefaultCollection/_apis/git/repositories/278d5cd2-584d-4b63-824a-2ba458937249/commits/be67f8871a4d2c75f13a51c1d3c30ac0d74d4ef4/changes"
},
"web": {
"href": "https://fabrikam-fiber-inc.visualstudio.com/DefaultCollection/_git/Fabrikam-Fiber-Git/commit/be67f8871a4d2c75f13a51c1d3c30ac0d74d4ef4"
},
"tree": {
"href": "https://fabrikam-fiber-inc.visualstudio.com/DefaultCollection/_apis/git/repositories/278d5cd2-584d-4b63-824a-2ba458937249/trees/7fa1a3523ffef51c525ea476bffff7d648b8cb3d"
}
}
}
如何獲得提交的分支名稱?
https://www.visualstudio.com/en-us/docs/integrate/api/git/commits#just-the-commit
我不知道VSTS API,但我認為該API並非開箱即用。 出於充分的理由,提交不屬於分支,而是包含在一個或多個分支中。
分支只是git歷史樹(名為DAG)上的引用。
您將必須自己計算數據。 通過列出分支,對於每個分支,從提交到其父級,直到到達根提交為止。 這是非常昂貴的!
也許會容易一些,如果要驗證提交是否在分支中,則僅對單個分支執行此操作。
在這里,我看到您采用了根提交(沒有父母),因此它應該包含在所有分支中(除非您的存儲庫具有多個根提交,這是非常不常見的)
不,沒有這樣的REST API可以通過提交來獲取分支名稱。 而且它也是不可到達的,因為一個提交可以屬於多個分支 。 讓我們通過下圖進行說明:
A---B---E---F master
\ /
C---D dev
這是一個具有master
和dev
分支的分支結構。 並且dev
分支通過commit F
合並為master
。 如果要基於提交D
獲取分支名稱,則將獲得兩個分支名稱。 提交D
屬於兩個分支: dev
(第一父級)和master
(第二父級)。
如果要獲取包含給定提交的分支名稱,則可以使用git命令:
git branch --contains <commit>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.