1

我目前正在开发一个命令行 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 代码。宝石会做这样的事情:

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​​ 继续执行脚本的其余部分。

有任何想法吗?

4

1 回答 1

0

只需阅读您的代码

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

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

只需试试这个:

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

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

于 2013-11-09T07:55:07.370 回答