【问题标题】:In a ruby script, how to ask git to open its message editor在 ruby​​ 脚本中,如何让 git 打开其消息编辑器
【发布时间】:2013-11-21 07:26:08
【问题描述】:

我目前正在开发一个命令行 ruby​​ gem,它可以自动执行https://gist.github.com/jbenet/ee6c9ac48068889b0912 中讨论的“rebase + no-ff merging”工作流程。您可以在 https://github.com/gsmendoza/git_pretty_accept/tree/git_pretty_accept 找到此 gem 的 WIP 代码。 gem 会做这样的事情:

git co master
git pull
git co pull_request
git rebase master
git co master
git merge --edit --no-ff pull_request
git push
git branch -d pull_request
git push origin:pull_request

当我尝试通过 ruby​​ 运行这些 git 命令时,git merge --edit --no-ff pull_request 并没有像我希望的那样打开 git commit 消息编辑器。相反,我认为 git 只是从编辑器收到一条空白合并消息,而 ruby​​ 继续执行脚本的其余部分。

有什么想法吗?

【问题讨论】:

    标签: ruby git shell


    【解决方案1】:

    请阅读your code

    `git merge --no-ff --message "#{merge_message}" #{branch}`
    

    在 Ruby 中,这种反引号语法重定向 STDIN 和 STDOUT。

    试试这个吧:

    system("git merge --edit --no-ff #{branch}")
    

    system 函数只是 fork 一个进程并等待子进程完成,而不涉及 STDIN/STDOUT。我测试过,它有效。

    【讨论】:

    • 是的,我在这个问题中调整了 git merge 调用。在 gem 中,我使用了 --message 选项。但是,我更喜欢使用 --edit 代替。仍会尝试使用 system 而不是反引号,因为这也是这个单独问题 (stackoverflow.com/questions/19873593/…) 中推荐的内容。谢谢!
    • 已编辑。我在回答之前尝试过--edit,它可以工作。只是复制和粘贴错误。
    • 确实如此!而且我认为我需要调用一些 IO.pipe magicky :)
    猜你喜欢
    • 2013-11-21
    • 2018-10-11
    • 2019-10-11
    • 2021-09-19
    • 1970-01-01
    • 1970-01-01
    • 2015-04-24
    • 2016-04-11
    • 1970-01-01
    相关资源
    最近更新 更多