我尝试创建一个夜间进程,该进程将创建在前一天的最后一次提交和分支的当前HEAD
之间更改的文件列表。
我一直在查看Stash API,可以在这里找到:
https://developer.atlassian.com/static/rest/stash/3.11.3/stash-rest.html
它看起来像/compare/changes
而/diff
能够完成任务,但我只能让它们用于单个提交更改。
有没有办法扩展它,以便我可以在多次提交之间更改文件的所有名称?
例如:commit1
到commit10
之间的所有文件?
答案 0 :(得分:2)
这个怎么样:
https://stash.domain.com/rest/api/latest/projects/{project}/repos/{repository}/changes?since={commit_1}&until=${commit_10}
答案 1 :(得分:0)
您可以为git diff
命令所涉及的提交提供SHA
:
git diff --name-only SHA1 SHA2
此帖提供了有关使用..
和...
获取您可能正在寻找的内容的详细信息(如果您采用该格式 - using dot for diff between commits)
注意:
--name-only
:仅显示已更改文件的名称。
答案 2 :(得分:0)
我只是简单地看了一眼(并且他们有一些奇怪的术语,称这些“更改集”而不是“提交”ID:这对Mercurial有意义,但不适用于Git)但API 确实取两个ID,这就是你所需要的。
例如,在您的示例中,您想要查看发生了什么
在commit1到commit10之间
“between”这个词有点可疑(因为提交首先不一定是线性的,因为它引入了fencepost错误),但一般来说,为了做到这一点,你只需比较(ID)commit1(或它的父母,取决于你是否计算围栏帖子或围栏 rails )对(提交的ID)。
当使用Git执行此操作时,而不是通过一些恼人的REST API,它表示为,例如:
$ git diff --name-status 1fe9ca7 6631bed
显示6631bed
与1fe9ca7
中的所有内容相比发生的变化,由于变更集的代数,它是“每个变更集之间的总和”(再次出现那个滑的字)两个终点。
Git不存储这些变更集;它存储每次提交的实际内容。因此,变更集按需生成(git diff
),这就是为什么他们的术语看起来有点奇怪。你确定了两个实际的提交,而不是变更集,然后是git,然后提取一个变更集。
答案 3 :(得分:0)
我认为以下应该可行:
遵循curl请求可以给您带来不同:
curl -s -H“内容类型:application / json” http(s)://rest/api/1.0/projects/project-key/repos/repo-slug/compare/changes?from = refs / heads / develop&to = abcdefg&limit = 1000
注意:
“ jq”是一个json解析器实用程序,可以选择使用它来解析响应。
例如,我将上述curl的响应“传递”到以下内容,以获取已更改的文件名:
jq'.values |。[] | .path | .toString'