ruby - 来自 heroku 的 git diff

标签 ruby git heroku github

我已经在 heroku 上部署了一个 campfire 机器人(sinatra 应用程序使用 tinder 来收听 campfire 房间),我想查询它在另一个 heroku 应用程序上部署的内容与我们的 github 存储库中的内容之间的 git diff .如果我在本地这样做,我会

  1. 克隆 github 仓库
  2. 添加 heroku 远程
  3. 在需要时运行 git diff

然而,在 heroku 上,我仅限于只有一个 tmp 目录(在 bamboo 上)或一个临时文件系统(在 cedar 上),而且还难以为应用程序运行的用户管理 ssh key 。

我如何在 heroku 上完成此操作,最好能够以树格式显示结果?

最佳答案

我假设您对 cedar's ephemeral filesystem 不满意在那个文件中,每次 dyno 重启都会丢失,并且在 cross-dyno 上不可见。接受这些限制显然是最简单的解决方案(每个 dyno 可能必须创建自己特定的 git 存储库,但仅此而已)。

第二个最直接的解决方案是在别处计算 git 日志。您可以编写一个小型的类似 web 服务的应用程序(可能使用 Sinatra)来接受两个存储库 url,并返回它们的差异。然后你可以从 heroku 应用程序查询它。但我想这已被排除,因为您要求“在 Heroku 上”执行此操作。

这将我们带到了最后一个解决方案;它涉及在内存中创建所有内容;必须使用类似 FakeFS 的内容创建初始文件夹并且 git 控制必须由 ruby​​ 本地完成; Scott Chacon's grit fork进行 native 调用而不是脱壳,因此它可能会起作用(我不知道 Chacon 的更改是否已移植到主砂砾中)。这样所有的文件系统访问都可以从 ruby​​ 完成,所有的东西都在内存中(顺便说一句,你可能想升级你的内存)

我没有亲自尝试过这些,我不知道它们的性能如何。

如果您需要持久性,也许您可​​以将整个事情编码到数据库中/从数据库中编码,但这听起来很麻烦。

希望对您有所帮助。

关于ruby - 来自 heroku 的 git diff,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6733829/

相关文章:

django - 获取 'DatabaseOperations' object has no attribute 'geo_db_type' 做syncdb时报错

java - 使用java和intellij连接到postgresql的问题

git - Git 中的 csproj 文件是否需要带有 SAK 值的 xml 标签 SccProjectName、SccLocalPath、SccAuxPath、SccProvider

git - 暂时从 Git 分支中删除功能

ruby-on-rails - 如何根据 sphinx 中的多个因素获得搜索排名?

ruby-on-rails - Rails 中是否共享 Redis 连接?

来自 AssemblyInfo 版本的 Git 标签

node.js - 无法找到模块 './collection/batch/unordered' - Heroku 上的 Node JS

ruby - Ruby 与 Elixir 中的 OpenSSL 随机字节

ruby-on-rails - 运行 Rails 测试时不要将日志输出到屏幕