我如何查看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存储库中用户发布的所有评论 的相关文章

  • 重命名 Bitbucket git 存储库如何影响分叉存储库?

    假设我有一个 Bitbucket git 存储库https bitbucket org username badname https bitbucket org username badname 该存储库已由多个用户分叉 他们定期发出拉取请
  • 如何阻止 Maven 尝试访问 http://repo.maven.apache.org?

    开发机无法上网 大约60秒超时 当我尝试构建时 我看到 Downloading http repo maven apache org maven2 com google gsa connector 2 8 0 gsa connector 2
  • 如何将远程 Git 存储库添加到 Ubuntu 服务器?

    我在我的桌面计算机 Windows 7 上创建了一个 Git 存储库 git init git add
  • Jenkins 向错误的提交 ID 发送通知

    我有几个 Jenkins 管道 所有管道都从 Bitbucket 导入共享库以实现某些实用方法 并且我想将构建状态通知发送到每个项目自己的 Bitbucket 存储库 我安装了Bitbucket 构建状态通知器 https plugins
  • Android Studio 2.0/2.1/3.0+ 不兼容 Bitbucket 插件 1.2.1

    我已将 Android Studio 版本更新到 2 0 并且在加载 Android Studio 时面临 bitbucket 插件 1 2 1 不兼容的问题 Android Studio 的事件日志显示 插件错误加载插件时发现问题 以下插
  • Bitbucket:从提示绑定文件以供下载

    我在一个私人存储库中工作 并与我的朋友合作 他对 SCM 之类的东西不太友好 他所需要的只是监控我开发的最新版本 这是 1 个可执行文件 我想知道 而不是每次他想要获取最新更改时克隆整个存储库 有时我的更改集可能由几个仅在开发时使用而不是测
  • 我可以从源代码访问 Bitbucket Pipelines 环境变量吗?

    我将敏感数据作为 Bitbucket Pipelines 中的环境变量 例如数据库凭据 有没有办法从我的源代码访问这些环境变量 我不想将这些敏感数据推送到我的存储库 Bitbucket 管道环境变量 https confluence atl
  • 将 Mercurial 存储库转换为 svn 存储库

    我知道你可以将 svn 存储库转换为 Mercurial 存储库 或使用 Mercurial 作为 svn 存储库的客户端 但我想要的是将 Mercurial 存储库转换为 svn 存储库 我们有一些使用 SVNKit 的工具 我们想继续使
  • 如何解决22端口连接超时问题

    ssh connect to host bitbucket org port 22 Connection timed out fatal Could not read from remote repository Please make s
  • 使用 ViewModel 设计 MVC 存储库

    我想创建一个存储库类来将我的数据逻辑与控制器分开 我使用 ViewModel 来表示一些数据 这些数据将填充来自不同表的数据 我有一些问题 对于像这样的方法GetAll 我要返回一个IQueryable
  • 存储库和数据映射器模式

    在大量阅读有关存储库和数据映射器的内容后 我决定在测试项目中实现这些模式 由于我对这些不熟悉 我想了解您对我如何在一个简单的项目中实现这些的看法 杰里米 米勒 说 做一些不平凡的个人编码项目 您可以在其中自由地尝试设计模式 但我不知道我做的
  • 为什么通用存储库被视为反模式? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 在我看来 许多专门的存储库类都具有相似的特征 并且让这些类实现一个概述这些特征的接口 创建一个通用存储库是有意义的 为了说明我的观点 假设我们有
  • Git Visual Studio 与 Bitbucket confluence 连接到现有项目错误/获取失败

    如何使用 Visual Studio 17 从现有 Bitbucket GIT 存储库中提取数据 Error git 因致命错误而失败 找不到 xyz 存储库 I added 这个迷雾 https marketplace visualstu
  • 再次对存储库和持久性一无所知

    这就是我要做的 我有一个通用的存储库类Repository
  • GitHub v3 API - 如何在存储库中创建初始提交?

    我正在使用 v3 API 并设法列出存储库 树 分支 访问文件内容并创建 blob 树 提交 我现在正在尝试创建一个新的存储库 并设法使用 POST user repos 来完成它 但是当我尝试在这个新存储库中创建 blob trees c
  • 从 Jenkinsfile 中获取有关其他分支的信息

    Jenkins Blue Ocean 与链接的 Bitbucket Server 实例在同一本地网络上运行 Jenkins 中的多分支项目能够为本地 Bitbucket 服务器上链接的 Bitbucket 存储库的每个分支创建一个分支 但在
  • heroku 上的 bitbucket 私有存储库

    我有一个需要 gem 的 Rails 应用程序 我将这个 gem 托管在私有存储库的 bitbucket 上 在我的 Gemfile 中 我添加了 gem 如下所示 gem my gem git gt gi email protected
  • Jmeter 和 Bitbucket 服务器负载测试

    我是 Jmeter 的新手 我有一个本地托管的 Bitbucket 服务器 有时 当 Bamboo plan 触发并发 git 克隆操作时 会发现 Bitbucket 服务器变得缓慢 无响应 我必须重新启动服务 我想通过对另一个本地创建的
  • 如何在bitbucket中显示ipynb笔记本文件?

    Bit bucket 以原始 Json 文本形式显示我的笔记本 我希望它能够为我的合作者渲染 jupyter 笔记本 有人知道如何做到这一点吗 截至 2018 年 11 月 情况已发生变化 单击您的头像 然后单击 Bitbucket 设置
  • 将存储库移至另一台计算机

    我已将存储库从计算机 A 移至计算机 B 我已验证等待推送的提交仍在 B 上 但整个存储库 每个文件 均未暂存 我不想添加它们并将它们作为提交推送 因为从复制存储库到粘贴它 我没有更改每个文件 当我移动存储库时 它只有等待推送的提交 而不是

随机推荐

  • 如何让 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 的