gpt4 book ai didi

grit - 使用坚固或粗砂的 git push 示例

转载 作者:行者123 更新时间:2023-12-04 12:48:24 26 4
gpt4 key购买 nike

我正在寻找一些代码示例,用于 ruggedgrit , 展示如何做 git push .

背景

我有佣金任务 deploy:stagingdeploy:production我用来部署我的应用程序。

我正在部署到 heroku,因此这些任务基本上执行以下操作:

  • 获取最新的标签(例如 git describe --abbrev=0 )
  • 将该标签表示的版本推送到指定的远程(例如 git push staging v1.00 )
  • 将版本存储在 heroku 配置变量中(例如 heroku config:add APP_VERSION=v1.00)

  • (那里还有一些检查,以确保我没有忘记在推送之前创建一个新标签等。)

    最初,我使用 Rakefile 中的系统调用来执行这些 CLI 命令;然后我开始使用 githeroku-api gem 。

    然而,git gem 似乎被放弃了(过去一年没有提交);似乎 Grit 和坚固性现在是使用 Git 的标准 gem 。

    不幸的是,由于缺乏文档,我无法弄清楚如何使用这些库中的任何一个进行 git push。

    (在以下示例中,假设我推送到的远程/分支是 origin/master,并且已经在本地 repo 中设置为远程)

    从粗犷开始:
    $ irb
    2.0.0-p0 :001 > require 'rugged'
    => true
    2.0.0-p0 :002 > repo = Rugged::Repository.new('/path/to/repo')
    => #<Rugged::Repository:0x007fe8b48821c0 @encoding=#<Encoding:UTF-8>>
    2.0.0-p0 :003 > remote = Rugged::Remote.lookup(repo, 'origin')
    NoMethodError: undefined method `lookup' for Rugged::Remote:Class

    现在为勇气:
    $ irb
    2.0.0-p0 :001 > require 'grit'
    => true
    2.0.0-p0 :002 > repo = Grit::Repo.new('/path/to/repo')
    => #<Grit::Repo "/path/to/repo/.git">
    2.0.0-p0 :004 > remote = repo.remotes.last
    => #<Grit::Remote "origin/master">
    2.0.0-p0 :005 > repo.git.push(remote)
    NoMethodError: undefined method `delete' for #<Grit::Remote "origin/master">

    任何帮助将不胜感激。

    最佳答案

    有了勇气,repo.git.push 实际上通过 method_missing 调用了 Git#native。它的签名是这样的:

    def native(cmd, options = {}, *args, &block)

    所以你想要做以下事情:
    repo.git.push({}, remote)

    是的,将 OPTIONAL 选项放在开头很愚蠢,但这就是它的编写方式。

    关于grit - 使用坚固或粗砂的 git push 示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15150869/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com