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

2024-01-29

In the repository首页,我可以看到发表的评论recent activity在底部,位它只显示 10 条评论。

我想要所有从一开始就发表的评论。

有什么办法吗


可以使用以下方式检索拉取请求、问题和提交的评论bitbucket 的 REST API https://developer.atlassian.com/bitbucket/api/2/reference/resource/.

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

请注意,这需要很长时间,因为 bitbucket 似乎对通过 API 访问存储库数据的次数设置了限制:我得到已超出该资源的速率限制在检索大约一千个结果后出现错误,那么我只能检索自上次速率限制错误发生以来每秒大约只有一个条目。

查找存储库的 API URL

第一步是找到存储库的 URL。对于私有存储库,需要通过提供用户名和密码来进行身份验证(使用curl的-u转变)。 URL 的形式为:

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

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

获取提交的评论

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

生成的 JSON 数据可以通过脚本进行处理。请注意,结果是分页的 https://developer.atlassian.com/bitbucket/api/2/reference/meta/pagination.

下面我简单提取每次提交的评论数。由会员的价值来表示size检索到的 JSON 对象;我还请求一个部分反应 https://developer.atlassian.com/bitbucket/api/2/reference/meta/partial-response通过添加 GET 参数fields=size.

我的剧本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 >&2 "!ERROR! $id:\n%s\n" "$json" && exit 1

printf "$nComments $id\n"

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

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

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

B) 运行脚本。请注意,密码在此处作为参数传递 - 因此首先使用以下方法将其安全地分配给变量stty -echo; IFS= read -r passwd; stty echo,排成一行;另请参阅下面的安全注意事项。此处使用选项将处理并行到 15 个进程-P.

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

C) 当达到速率限制时,即当getNComments.sh prints !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. 编辑脚本以替换 URL 中的内容commit by pullrequests or by issues, 作为适当的;

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

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

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

并且,如果设置了问题跟踪器,则会显示以下问题的数量:

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

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

查看评论

可以通过其提交/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

安全考虑

系统的所有用户都可以看到命令行上传递的参数,通过ps ax (or /proc/$PID/cmdline)。因此,bitbucket 密码将被暴露,如果系统由多个用户共享,这可能会成为一个问题。 从命令行获取密码的命令有三个:xargs、脚本和curl。

看起来,curl 试图通过覆盖其内存来隐藏密码,但它不能保证有效,即使有效,它也会在进程启动后的一段(非常短的)时间内保持可见。在我的系统上,curl 的参数没有隐藏。

更好的选择可能是通过环境变量传递敏感信息。它们应该仅对当前用户和 root 可见ps axe (or /proc/$PID/environ);尽管似乎有些系统可以让所有用户访问此信息(执行ls -l /proc/*/environ检查环境文件的权限)。

在脚本中只需替换以下行pw=$1 id=$2 with id=$1,然后通过pw="$passwd" before xargs在命令行调用中。它将使环境变量pw可见于xargs及其所有后代进程,即脚本及其子进程(curl, grep, cut等),它可能会也可能不会读取变量。 curl 不会从环境中读取密码,但如果上面提到的密码隐藏技巧有效,那么它可能就足够了。

有多种方法可以避免通过命令行将密码传递给curl,特别是使用选项通过标准输入-K -。在脚本中,替换curl -s -u username:"$pw" with printf -- '-s\n-u "%s"\n' "$authinfo" | curl -K -并定义变量authinfo包含格式为用户名:密码的数据。注意该方法需要printf为了安全起见,内置外壳(检查type printf),否则密码将显示在其进程参数中。如果它不是内置的,请尝试使用print or echo反而。

环境变量的一个简单替代方案不会出现在ps任何情况下的输出都是通过文件。创建一个文件,其读/写权限仅限于当前用户(chmod 600),然后编辑它,使其包含 username:password 作为第一行。在脚本中,替换pw=$1 with IFS= read -r authinfo < "$1",然后编辑它以使用curl的-K选项,如上段所示。在命令行中调用替换$passwd与文件名。

文件方法的缺点是密码将被写入磁盘(请注意,文件位于/proc不在磁盘上)。如果这也是不可取的,可以传递命名管道而不是常规文件:

mkfifo pipe
chmod 600 pipe
# make sure printf is a builtin, or use an equivalent instead
(while :; do printf -- '%s\n' "username:$passwd"; done) > pipe&
pid=$!
exec 3<pipe

然后调用脚本传递pipe而不是文件。最后,要清理,请执行以下操作:

kill $pid
exec 3<&-

这将确保身份验证信息直接从 shell 传递到脚本(通过内核),不会写入磁盘,也不会通过以下方式暴露给其他用户ps.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我如何查看bitbucket存储库中用户发布的所有评论 的相关文章

  • 如何在 github 提交中设置用户名别名?

    我刚刚在大学读完一个学期 决定将我的所有项目从 bitbucket 我的课程所需 导入到 github 我所有其他项目都在其中 我成功导入了它们 不幸的是 当我从事这些项目时 我在三台不同的计算机之间切换 因此 提交历史记录中有许多我自己所
  • 如何将svn文件夹上一级

    我需要将 svn 文件夹移至上一级并保留所有历史记录 所有文件和目录来自https myserver com svn Project trunk into https myserver svn Project 我使用一个命令 svn mov
  • Git Visual Studio 与 Bitbucket confluence 连接到现有项目错误/获取失败

    如何使用 Visual Studio 17 从现有 Bitbucket GIT 存储库中提取数据 Error git 因致命错误而失败 找不到 xyz 存储库 I added 这个迷雾 https marketplace visualstu
  • git 奇怪的彩色终端响应[重复]

    这个问题在这里已经有答案了 最近我被下面的彩色终端响应吓死了 它是由 git push 命令触发的 Does anybody have a clue where this colored response comes from 只是猜测 但
  • BitBucket+Jenkins:仅在特定分支更改时触发构建

    以下是该问题的据称解决方案 尽管它看起来确实是一种解决方法 而不是最终的解决方案 有没有一种方法 通过作业配置或 bitbucket 挂钩配置 我可以将作业设置为仅在推送到特定分支时运行构建 是否可以仅从一个特定分支触发 Jenkins h
  • 使用 C#.net 中的私有存储库的身份验证读取 BitBucket API

    我已经尝试了几天让 BitBucket API 为我工作 但是当涉及到让它为具有身份验证的私有存储库工作时 将问题设置为私有 当它们设置为公开 无需身份验证 一切正常 代码示例如下 static void Main string args
  • 从 Kubernetes Python 客户端登录到 GitLab 存储库

    我有一个 Django 应用程序 它使用python 的官方 Kubernetes 客户端 https github com kubernetes client python并且工作正常 但它只部署 正确 公共注册表 有没有办法执行登录后让
  • NoSuchBeanDefinitionException:没有合格的 bean 类型

    当调用我的 GET 请求 模式计算 时 我收到此错误 我不明白为什么 我的依赖项注入是正确的 org springframework beans factory NoSuchBeanDefinitionException No qualif
  • 如何减少 Bitbucket 上的 git repo 大小?

    我的问题摘要 在我向两个现有文件添加了几百个字节后 我在 Bitbucket 上的一个私人存储库的大小突然增加了一倍多 该存储库现在超过 2GB 这导致 Bitbucket 将其置于只读模式 因为它处于只读模式 所以我无法推送会减少存储库大
  • 协调多个依赖的 Mercurial 存储库版本的推荐方法?

    好吧 经过几个小时的阅读和反复试验 它终于击中了我 Mercurial 并不真正想做 SubRepos 至少不想与 TortoiseHg 和 Bitbucket 一起使用 如果我错了 并且您不希望对类似于 当然它有效 您没有阅读官方文档吗
  • 如何在bitbucket中显示ipynb笔记本文件?

    Bit bucket 以原始 Json 文本形式显示我的笔记本 我希望它能够为我的合作者渲染 jupyter 笔记本 有人知道如何做到这一点吗 截至 2018 年 11 月 情况已发生变化 单击您的头像 然后单击 Bitbucket 设置
  • 是否可以删除 BitBucket 上的拉取请求?

    我找不到在 BitBucket 上删除 PR 的选项 我是否忽略了某些事情或者这确实不可能 您可以拒绝具有相同结果的拉取请求 停止 删除 PR
  • Xcode 5 如何转到存储库窗口?

    在以前的 XCode 版本 4 中 我可以单击 Xcode 它会显示 源代码控制 gt 存储库 现在 他们已将源代码管理移动为新的下拉菜单 但它没有存储库部分 我可以在其中检查我的 SVN 并查看所有其他项目 有没有办法打开存储库窗口 创建
  • 是否有 Ubuntu 10.04 存储库可以下载最新版本的 Eclipse?

    我还没有找到一个可以安装 Eclipse 4 2 Juno 的软件 默认的 Ubuntu 存储库 我使用的是 Ubuntu 10 04 建议我使用古老的 Galileo 版本 我在 Launchpad 上找到了 Eclipse 的页面 该页
  • 为特定标签创建Android服务器本地存储库

    我想为 Android 分支 android 4 3 r1 1 创建本地服务器 我关注这个线程 将 Android 源克隆到本地存储库服务器 https stackoverflow com questions 6136789 cloning
  • gnutls_handshake() 失败:握手失败 GIT

    一切都工作正常 但突然我收到错误 致命 无法访问 https 电子邮件受保护 cdn cgi l email protection name repo name git gnutls handshake 失败 握手失败 我在我的计算机和 E
  • 如何克隆 bitbucket 存储库?

    一段时间后重新开始工作 我似乎不知道如何克隆 bitbucket 存储库 知道为什么我收到 未找到 错误吗 git clone verbose https bitbucket org helllamer mod openid Cloning
  • 传统 n 层设计中具有多个项目的 Git 存储库的最佳实践

    我正在从集中式 SCM 系统切换到 GIT 好吧 我承认是哪一个 它是 Visual SourceSafe 因此 除了克服 Git 命令和工作流程的学习曲线之外 我目前面临的最大问题是如何将我们当前的存储库迁移到 Git 对于单个存储库或多
  • Linux 软件包存储库中的 *​​-dev 软件包实际上包含什么?

    我的问题非常基本 我现在的知识也是如此 我是 Linux 的长期用户 但直到最近才对编程产生了浓厚的兴趣 我看到 Ubuntu 存储库中的许多流行应用程序都有 dev 软件包 例如洋泾浜开发者此外pidgin 我的问题是这样的 这些包裹里有
  • Mercurial 到 Bitbucket - 子存储库 - 存储库是不相关的错误

    以下是我构建存储库和子存储库所采取的步骤 一切都托管在 Bitbucket 上 根据最佳实践 创建了一个骨架存储库来保存所有子存储库 克隆到我的机器上 将主项目克隆为 subrepo1 在 mainrepo 目录结构内 将主项目添加到 ma

随机推荐

  • 如何让 bash 将 stderr 重定向到 >( 命令替换)?

    我可以很好地将标准输出重定向到命令重定向 echo stdout gt 2 echo stderr gt gt rev stderr tuodts 但是当我尝试将 stderr 重定向到另一个时 它似乎通过了 stdout 通道 echo
  • Git:如何使用多个存储库?

    我有一个远程只读 git 存储库A 我已将其克隆到本地文件系统中 A定期更新 每次更新后我都会将更新的代码拉取并合并到我的系统中 我想与我的团队成员就以下文件进行协作A 为此 我创建了一个新的远程存储库B 我如何管理同步B与我的本地存储库
  • 避免在终端/cmd 上运行 FFmpeg

    I m using FFmpeg for a small project so I built a GUI basic application for video editing here is the image 一切工作正常 但我只是想
  • 如何使用 WPF 将文本换行到标签中?

    我有一个TextBox和一个标签 单击按钮后 我执行以下代码 label1 Content textbox1 Text 我的问题是 如何启用标签的文本换行 一行上可能显示太多文本 如果是这种情况 我希望它自动换行为多行 The Label控
  • 如何将 CSRF 令牌从服务器传递到客户端?

    这听起来可能是一个愚蠢的问题 我想澄清这一点 如果首先将令牌发送给客户端并且客户端发回相同的令牌 csrf 令牌如何帮助识别跨站请求 恶意客户端不会得到服务器的响应吗 如果我们在发送令牌时检查来源 那么令牌检查的事情是不是显得多余 我们如何
  • ASP.NET MVC 如何在布局中使用 Partial View?

    我需要使用部分视图在布局中渲染菜单 如果有更好的方法 请告诉我 我这样做 在布局中 if User IsInRole Admin Html Partial AdminMenu 我在控制器中这样称呼它 public ActionResult
  • 从 xarray 数据集中的某些变量中删除维度

    我有一个 xarray 数据集 其中某些变量的维度超出了必要的维度 例如 纬度 和 经度 变量也随时间变化的 3D 数据集 如何删除多余的尺寸 例如 在下面的数据集中 bar 是沿x and y轴 沿轴具有恒定值x轴 我该如何删除x尺寸来自
  • 从html标签中提取信息到pandas中

    我有一个充满 html 文件的文件夹 我试图选择正确的 html 标签 以便正确打印引文 并且我需要的输出只是出版号和标题 到目前为止 我在 SO 中各个帖子的帮助下做到了这一点 with open filename r encoding
  • 根据 Grocery CRUD 中的第三个参数设置下拉输入默认值

    下面的代码示例 function product parameter crud new grocery CRUD crud gt callback add field dropdown field name array this add f
  • 另一种复制算法

    我有两个向量 vector objects vector
  • 使用 C# ASP.NET 时“WebClient 请求期间发生异常”

    因此 我为我的程序构建了一个自动更新程序 这里运行的代码是 new WebClient DownloadFile XXXX checkingfolder SelectedPath XXX 是我的网络服务器 它在 verio 中作为 VPS
  • 在哪里可以找到 Perl 正则表达式练习集? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • width() 和 height() 适用于没有 jQuery 的现代浏览器

    我正在尝试为弹性 div 实现一个简单的折叠 展开效果 即当元素的实际尺寸未通过 CSS 设置时 因此无法简单确定 所以我需要 jQuery 的 width 和 height 的等效项来表示任意元素 这些方法应该返回可分配给 style w
  • 我的 winform 应用程序使用 xml 文件来存储数据,我应该将它们存储在哪里以便 Vista 用户可以写入数据?

    我的 winform 应用程序使用 xml 文件来存储数据 我应该将它们存储在哪里以便 Vista 用户可以写入数据 Thanks Use the Environment GetFolderPath http msdn microsoft
  • 对于新的小型应用程序来说,实体框架值得迁移吗?

    对于新的小型应用程序来说 实体框架值得迁移吗 大约 10 个表格和一个 WinForms 应用程序 即替代方案是 DataTables DataRows 或 Linq to SQL 我不同意那些说 LINQ to SQL 更适合小型项目的说
  • 将 Spark Structure Streaming DataFrame 转换为 Pandas DataFrame

    我设置了一个 Spark Streaming 应用程序 它从 Kafka 主题进行消费 我需要使用一些接受 Pandas Dataframe 的 API 但是当我尝试转换它时 我得到了这个 org apache spark sql Anal
  • C 循环 For Vs While Vs goto 的性能 [重复]

    这个问题在这里已经有答案了 可能的重复 C C GOTO 比 WHILE 和 FOR 更快吗 https stackoverflow com questions 5366929 c c is goto faster than while a
  • GKTurnBasedMatch接收数据

    我正在尝试实现一个基于回合的应用程序 发送回合数据没有问题 但我看不到自动接收数据的方法 到目前为止 我已经了解了这么多 有一个GKTurnBasedEventHandlerDelegate 协议 它很容易实现 但是我在哪里将该对象设置为它
  • 在php中将两个数组值相乘[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我试图用以下公式将两个数组值相乘 Q
  • 我如何查看bitbucket存储库中用户发布的所有评论

    In the repository首页 我可以看到发表的评论recent activity在底部 位它只显示 10 条评论 我想要所有从一开始就发表的评论 有什么办法吗 可以使用以下方式检索拉取请求 问题和提交的评论bitbucket 的