如何查看用户在bitbucket存储库中发布的所有评论

时间:2013-12-18 03:34:14

标签: repository bitbucket

repository主页中,我可以看到底部recent activity发布的评论,它只显示10个通讯。

我想要从开始以来发布的所有评论。

有什么办法

2 个答案:

答案 0 :(得分:3)

可以使用bitbucket’s REST API检索拉取请求,问题和提交的注释。

然而,似乎没有办法在一个地方列出所有这些,所以获得它们的唯一方法是查询每个PR,问题或提交存储库的API。

请注意,这需要很长时间,因为bitbucket似乎已经设置了对通过API访问存储库数据的访问次数的限制:我得到此资源的速率限制已超过错误后检索一千个结果,然后我可以检索从最后一个速率限制错误时间开始每秒只有一个条目。

查找存储库的API URL

第一步是找到回购的URL。对于私有存储库,必须通过提供用户名和密码进行身份验证(使用curl的-u开关)。 URL的格式为:

https://api.bitbucket.org/2.0/repositories/{repoOwnerName}/{repoName}

从本地git存储库运行git remote -v应该提供缺少的值。通过验证存储库信息是否正确地从其中检索为JSON数据来检查伪造的URL(以下称为$url):curl -u username $url

获取提交的评论

可以在$url/commit/{commitHash}/comments访问提交的评论。

生成的JSON数据可以由脚本处理。请注意结果为paginated

下面我简单地提取每次提交的评论数量。它由检索到的JSON对象的成员size的值指示;我还通过添加GET参数fields=size来请求partial response

我的脚本getNComments.sh

#!/bin/sh

pw=$1
id=$2

json=$(curl -s -u username:"$pw" \
    https://api.bitbucket.org/2.0/repositories/{repoOwnerName}/{repoName}/commit/$id/comments'?fields=size')

printf '%s' "$json" | grep -q '^{"type": "error"' \
    && printf "ERROR $id\n" && exit 0

nComments=$(printf '%s' "$json" | grep -o '"size": [0-9]*' | cut -d' ' -f2)
: ${nComments:=EMPTY}

checkNumeric=$(printf '%s' "$nComments" | tr -dc 0-9)
[ "$nComments" != "$checkNumeric" ] \
    && printf "!ERROR! $id:\n%s\n" "$json" > /dev/stderr && exit 1

printf "$nComments $id\n"

要使用它,考虑到上述错误的可能性:

A)准备输入数据。从本地存储库中,生成所需的提交列表(如果需要,在更新本地git仓库之前运行git fetch -a);查看git help rev-list了解如何自定义。

git rev-list --all | sort > sorted-all.id
cp sorted-all.id remaining.id

B)运行脚本。密码在这里作为参数传递:注意你的shell历史!使用选项-P将处理并行处理到15个进程。

< remaining.id xargs -P 15 -L 1 ./getNComments.sh $passwd > commits.temp

C)达到速率限制时,即getNComments.sh打印!ERROR!,然后终止上述命令(Ctrl-C),并执行以下命令更新输入和输出文件。等待请求限制增加,然后重新执行上面的一个命令并重复,直到处理完所有数据(即wc -l remaining.id返回0时)。

cat commits.temp >> commits.result
cut -d' ' -f2 commits.result | sort | comm -13 - sorted-all.id > remaining.id

D)最后,您可以获得收到评论的提交:

grep '^[1-9]' commits.result

获取拉取请求和问题的评论

该过程与获取提交的注释相同,但对于以下两个调整:

  1. 根据需要,在commitpullrequests内修改网址issues;

  2. $n成为要搜索的问题/ PR的数量。上面的git rev-list命令变为:seq 1 $n > sorted-all.id

  3. 可以通过以下方式获取存储库中PR的总数:

    curl -su username $url/pullrequests'?state=&fields=size'
    

    并且,如果设置了问题跟踪器,则问题的数量为:

    curl -su username $url/issues'?fields=size'
    

    希望存储库没有足够的PR和问题,以便可以一次性获取所有数据。

    查看评论

    可以通过其提交/公关/问题页面上的网络界面正常查看它们:

    https://bitbucket.org/{repoOwnerName}/{repoName}/commits/{commitHash}
    https://bitbucket.org/{repoOwnerName}/{repoName}/pull-requests/{prId}
    https://bitbucket.org/{repoOwnerName}/{repoName}/issues/{issueId}
    

    例如,要在firefox中打开所有带注释的PR:

    awk '/^[1-9]/{print "https://bitbucket.org/{repoOwnerName}/{repoName}/pull-requests/"$2}' PRs.result | xargs firefox
    

答案 1 :(得分:1)

您可以前往提交并查看每个提交的第一行,您需要点击每个提交以查看更多信息。

如果我找到了一种方法来查看所有内容而无需深入研究每个提交,我将更新此答案。