diff options
author | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2019-05-09 10:01:31 +0900 |
---|---|---|
committer | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2019-05-09 10:01:31 +0900 |
commit | d802698d3e27a3cf091a56556df3562cc6ff996c (patch) | |
tree | 1d1488a1c9cbd121b2413d1641f4e6a5091ae0fc | |
parent | 4fabb744718ddbb2eb8f5f4a6ca3d47d8e770547 (diff) | |
download | ruby-d802698d3e27a3cf091a56556df3562cc6ff996c.tar.gz |
Push the current (topic) branch to the remote upstream
-rw-r--r-- | tool/vcs.rb | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/tool/vcs.rb b/tool/vcs.rb index 8e6227685c..9310629089 100644 --- a/tool/vcs.rb +++ b/tool/vcs.rb @@ -510,6 +510,15 @@ class VCS dryrun = opts.fetch(:dryrun) {$DEBUG} if opts args = [COMMAND, "push"] args << "-n" if dryrun + (branch = cmd_read(%W"#{COMMAND} symbolic-ref --short HEAD")).chomp! + (upstream = cmd_read(%W"#{COMMAND} branch --list --format=%(upstream) #{branch}")).chomp! + while ref = upstream[%r"\Arefs/heads/(.*)", 1] + upstream = cmd_read(%W"#{COMMAND} branch --list --format=%(upstream) #{ref}") + end + unless %r"\Arefs/remotes/([^/]+)/(.*)" =~ upstream + raise "Upstream not found" + end + args << $1 << "HEAD:#$2" STDERR.puts(args.inspect) if dryrun system(*args) or return false true |