ruby - 如何在 rake 任务中执行 git commit/push

标签 ruby git rake

我在尝试从 Ruby rake 任务中执行一些 git 命令时遇到了以下问题(我尝试过不使用 bash --login -c 并得到相同的结果)。

tmpid='TueJan26014125UTC2010'
cmd=["git add .",
  "git commit -a -m \'Migrate nanoc3 co output to gh-pages #{tmpid}\'",
  "git push --force origin gh-pages:gh-pages"
]

FileUtils.chdir @gh_pages_repo_path.to_s do
  puts `pwd`
  cmd.each do |cmdi|
      puts "bash --login -c '#{cmdi}'"
      res=Kernel.send(:`, "bash --login -c '#{cmdi}'")
      puts res
    end
end

我这个输出表示工作目录并且 git push 失败

/home/mv/Documents/Workspaces/scar/ruby/scar/gh-pages
bash --login -c 'git add .'

bash --login -c 'git commit -a -m 'Migrate nanoc3 co output to gh-pages TueJan26014125UTC2010''
# On branch master
nothing to commit (working directory clean)
bash --login -c 'git push --force origin gh-pages:gh-pages'
error: src refspec gh-pages does not match any.
error: failed to push some refs to 'git@github.com:hedgehog/scar.git'
To prevent you from losing history, non-fast-forward updates were rejected.
Merge the remote changes before pushing again.
See 'non-fast forward' section of 'git push --help' for details.

如果我立即从 bash shell (konsole) 运行相同的命令,一切都会正常进行:

$ pushd /home/mv/Documents/Workspaces/scar/ruby/scar/gh-pages
/usr/src ~
$ git add .
$ git commit -a -m 'Migrate nanoc3 co output to gh-pages TueJan26014125UTC2010'
[gh-pages 14cbe34] Migrate nanoc3 co output to gh-pages TueJan26014125UTC2010
 20 files changed, 100 insertions(+), 0 deletions(-)
$ git push --force origin gh-pages:gh-pages
Counting objects: 73, done.
Compressing objects: 100% (19/19), done.
Writing objects: 100% (38/38), 11.32 KiB, done.
Total 38 (delta 16), reused 0 (delta 0)
To git@github.com:hedgehog/scar.git
   e0f0370..14cbe34  gh-pages -> gh-pages

感谢任何见解。

最佳答案

您可能想尝试使用一个库来为您处理 git 调用。一个例子是 ruby-git .

关于ruby - 如何在 rake 任务中执行 git commit/push,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2137083/

相关文章:

Ruby:不兼容的编码正则表达式匹配

ruby - 带有 Bootstrap 复选框的 simple_form

SCSS 。将更改从一个文件 merge 到同一分支中的另一个文件

windows - 编写 rakefile 以在 Windows 中运行命令的最佳方法是什么?

ruby-on-rails - 在迁移中指定自定义主键

ruby-on-rails - 在 Ruby 中使用 Map 和 Select 方法一起遍历数组

ruby-on-rails - 为 Rails 上的连接、限制、选择等(不是条件)的 SQL 片段安全地转义字符串

node.js - 无法让 git 停止跟踪 package-lock.json

Git:添加错误添加第二个github帐户 "ssh: Could not resolve hostname github-secondUser"

ruby-on-rails - Rake 任务提示不安全的可写目录