diff options
author | Torne (Richard Coles) <torne@google.com> | 2013-05-02 11:33:14 +0100 |
---|---|---|
committer | Torne (Richard Coles) <torne@google.com> | 2013-05-02 11:33:14 +0100 |
commit | 3b1480d1d7d07cb989630cd5767f439dd3f5fabd (patch) | |
tree | 0445646b8a190e2a4215cd0d28abf90be49bd70a /chromium/tools | |
parent | 9612201c958e023b34f25b5401e90990b39bba5b (diff) | |
download | android_frameworks_webview-3b1480d1d7d07cb989630cd5767f439dd3f5fabd.tar.gz android_frameworks_webview-3b1480d1d7d07cb989630cd5767f439dd3f5fabd.tar.bz2 android_frameworks_webview-3b1480d1d7d07cb989630cd5767f439dd3f5fabd.zip |
automerger: push archived revisions and fix a bug.
When we push a merge successfully, also push a new ref under
refs/archive/chromium-* with the revision number. This allows specific
past merge points to be checked out across all chromium_org/* projects
correctly. We were also incorrectly using git push -f even for pushing
to master-chromium, which could cause downstream changes to be lost;
instead of using -f just specify the + prefix on the refs we want to
allow non-fast-forward updates.
Change-Id: Ide846f2213228b721f90db544f33be268f47759b
Diffstat (limited to 'chromium/tools')
-rwxr-xr-x | chromium/tools/merge_from_chromium.py | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/chromium/tools/merge_from_chromium.py b/chromium/tools/merge_from_chromium.py index 40ab260..cffd044 100755 --- a/chromium/tools/merge_from_chromium.py +++ b/chromium/tools/merge_from_chromium.py @@ -441,8 +441,14 @@ def Snapshot(svn_revision, root_sha1, unattended): def Push(svn_revision): """Push the finished snapshot to the Android repository.""" src = 'merge-from-chromium-%s' % svn_revision - for branch in ['master-chromium-merge', 'master-chromium']: - logging.debug('Pushing to server (%s) ...' % branch) + # Use forced pushes ('+' prefix) for the temporary and archive branches in + # case they already got updated by a previous (possibly failed?) merge, but + # do not force push to the real master-chromium branch as this could erase + # downstream changes. + for refspec in ['+%s:master-chromium-merge' % src, + '%s:master-chromium' % src, + '+%s:refs/archive/chromium-%s' % (src, svn_revision)]: + logging.debug('Pushing to server (%s) ...' % refspec) for path in merge_common.ALL_PROJECTS: if path in merge_common.PROJECTS_WITH_FLAT_HISTORY: remote = 'history' @@ -450,8 +456,8 @@ def Push(svn_revision): remote = 'goog' logging.debug('Pushing %s', path) dest_dir = os.path.join(merge_common.REPOSITORY_ROOT, path) - merge_common.GetCommandStdout(['git', 'push', '-f', remote, - src + ':' + branch], cwd=dest_dir) + merge_common.GetCommandStdout(['git', 'push', remote, refspec], + cwd=dest_dir) def main(): |