diff options
author | Elvin Efendi <elvin.efendiyev@gmail.com> | 2015-12-07 15:38:34 -0500 |
---|---|---|
committer | Elvin Efendi <elvin.efendiyev@gmail.com> | 2015-12-07 15:38:34 -0500 |
commit | 1df0f01c6166e1ef1653c90818aaa47118af4700 (patch) | |
tree | d696c613d390b4d58eee217e6054c0858a8a16f3 /lib/oxidized/hook | |
parent | d0105ef311a9bfd0ecd23efe77678670d6042e02 (diff) | |
parent | 68dd88766604145a8c8d16b22a68a9850ce92564 (diff) |
Merge pull request #9 from Shopify/pull-master
Pull master
Diffstat (limited to 'lib/oxidized/hook')
-rw-r--r-- | lib/oxidized/hook/githubrepo.rb | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/lib/oxidized/hook/githubrepo.rb b/lib/oxidized/hook/githubrepo.rb index bf33b89..83e1078 100644 --- a/lib/oxidized/hook/githubrepo.rb +++ b/lib/oxidized/hook/githubrepo.rb @@ -9,6 +9,24 @@ class GithubRepo < Oxidized::Hook log "Pushing local repository(#{repo.path})..." remote = repo.remotes['origin'] || repo.remotes.create('origin', cfg.remote_repo) log "to remote: #{remote.url}" - remote.push(['+refs/heads/master'], credentials: credentials) + + fetch_and_merge_remote(repo, credentials) + + remote.push([repo.head.name], credentials: credentials) + end + + def fetch_and_merge_remote(repo, credentials) + their_branch = repo.branches["origin/master"] or return + + repo.fetch('origin', [repo.head.name], credentials: credentials) + + merge_index = repo.merge_commits(repo.head.target_id, their_branch.target_id) + + Rugged::Commit.create(repo, { + parents: [repo.head.target, their_branch.target], + tree: merge_index.write_tree(repo), + message: "Merge remote-tracking branch '#{their_branch.name}'", + update_ref: "HEAD" + }) end end |