Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(298)

Side by Side Diff: git_cl.py

Issue 348473003: Added support for git cl upload automatic trybot determination. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/depot_tools
Patch Set: Moved around pylint disable comments. Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | tests/git_cl_test.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 # Copyright (c) 2012 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be 3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file. 4 # found in the LICENSE file.
5 5
6 # Copyright (C) 2008 Evan Martin <martine@danga.com> 6 # Copyright (C) 2008 Evan Martin <martine@danga.com>
7 7
8 """A git-command for integrating reviews on Rietveld.""" 8 """A git-command for integrating reviews on Rietveld."""
9 9
10 import datetime 10 import datetime
(...skipping 1534 matching lines...) Expand 10 before | Expand all | Expand 10 after
1545 git_command = ['push'] 1545 git_command = ['push']
1546 if receive_options: 1546 if receive_options:
1547 git_command.append('--receive-pack=git receive-pack %s' % 1547 git_command.append('--receive-pack=git receive-pack %s' %
1548 ' '.join(receive_options)) 1548 ' '.join(receive_options))
1549 git_command += [remote, 'HEAD:refs/for/' + branch] 1549 git_command += [remote, 'HEAD:refs/for/' + branch]
1550 RunGit(git_command) 1550 RunGit(git_command)
1551 # TODO(ukai): parse Change-Id: and set issue number? 1551 # TODO(ukai): parse Change-Id: and set issue number?
1552 return 0 1552 return 0
1553 1553
1554 1554
1555 def RietveldUpload(options, args, cl): 1555 def RietveldUpload(options, args, cl, change):
1556 """upload the patch to rietveld.""" 1556 """upload the patch to rietveld."""
1557 upload_args = ['--assume_yes'] # Don't ask about untracked files. 1557 upload_args = ['--assume_yes'] # Don't ask about untracked files.
1558 upload_args.extend(['--server', cl.GetRietveldServer()]) 1558 upload_args.extend(['--server', cl.GetRietveldServer()])
1559 if options.emulate_svn_auto_props: 1559 if options.emulate_svn_auto_props:
1560 upload_args.append('--emulate_svn_auto_props') 1560 upload_args.append('--emulate_svn_auto_props')
1561 1561
1562 change_desc = None 1562 change_desc = None
1563 1563
1564 if options.email is not None: 1564 if options.email is not None:
1565 upload_args.extend(['--email', options.email]) 1565 upload_args.extend(['--email', options.email])
1566 1566
1567 if cl.GetIssue(): 1567 if cl.GetIssue():
1568 if options.title: 1568 if options.title:
1569 upload_args.extend(['--title', options.title]) 1569 upload_args.extend(['--title', options.title])
1570 if options.message: 1570 if options.message:
1571 upload_args.extend(['--message', options.message]) 1571 upload_args.extend(['--message', options.message])
1572 upload_args.extend(['--issue', str(cl.GetIssue())]) 1572 upload_args.extend(['--issue', str(cl.GetIssue())])
1573 print ("This branch is associated with issue %s. " 1573 print ("This branch is associated with issue %s. "
1574 "Adding patch to that issue." % cl.GetIssue()) 1574 "Adding patch to that issue." % cl.GetIssue())
1575 else: 1575 else:
1576 if options.title: 1576 if options.title:
1577 upload_args.extend(['--title', options.title]) 1577 upload_args.extend(['--title', options.title])
1578 message = options.title or options.message or CreateDescriptionFromLog(args) 1578 message = options.title or options.message or CreateDescriptionFromLog(args)
1579 change_desc = ChangeDescription(message) 1579 change_desc = ChangeDescription(message)
1580 if options.reviewers: 1580 if options.reviewers:
1581 change_desc.update_reviewers(options.reviewers) 1581 change_desc.update_reviewers(options.reviewers)
1582 if options.auto_bots:
1583 masters = presubmit_support.DoGetTryMasters(
1584 change,
1585 change.LocalPaths(),
1586 settings.GetRoot(),
1587 None,
1588 None,
1589 options.verbose,
1590 sys.stdout)
1591
1592 if masters:
1593 change_description = change_desc.description + '\nCQ_TRYBOTS='
1594 lst = []
1595 for master, mapping in masters.iteritems():
1596 lst.append(master + ':' + ','.join(mapping.keys()))
1597 change_desc.set_description(change_description + ';'.join(lst))
1582 if not options.force: 1598 if not options.force:
1583 change_desc.prompt() 1599 change_desc.prompt()
1584 1600
1585 if not change_desc.description: 1601 if not change_desc.description:
1586 print "Description is empty; aborting." 1602 print "Description is empty; aborting."
1587 return 1 1603 return 1
1588 1604
1589 upload_args.extend(['--message', change_desc.description]) 1605 upload_args.extend(['--message', change_desc.description])
1590 if change_desc.get_reviewers(): 1606 if change_desc.get_reviewers():
1591 upload_args.append('--reviewers=' + ','.join(change_desc.get_reviewers())) 1607 upload_args.append('--reviewers=' + ','.join(change_desc.get_reviewers()))
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
1702 help="Emulate Subversion's auto properties feature.") 1718 help="Emulate Subversion's auto properties feature.")
1703 parser.add_option('-c', '--use-commit-queue', action='store_true', 1719 parser.add_option('-c', '--use-commit-queue', action='store_true',
1704 help='tell the commit queue to commit this patchset') 1720 help='tell the commit queue to commit this patchset')
1705 parser.add_option('--private', action='store_true', 1721 parser.add_option('--private', action='store_true',
1706 help='set the review private (rietveld only)') 1722 help='set the review private (rietveld only)')
1707 parser.add_option('--target_branch', 1723 parser.add_option('--target_branch',
1708 help='When uploading to gerrit, remote branch to ' 1724 help='When uploading to gerrit, remote branch to '
1709 'use for CL. Default: master') 1725 'use for CL. Default: master')
1710 parser.add_option('--email', default=None, 1726 parser.add_option('--email', default=None,
1711 help='email address to use to connect to Rietveld') 1727 help='email address to use to connect to Rietveld')
1728 parser.add_option('--auto-bots', default=False, action='store_true',
1729 help='Autogenerate which trybots to use for this CL')
1712 1730
1713 add_git_similarity(parser) 1731 add_git_similarity(parser)
1714 (options, args) = parser.parse_args(args) 1732 (options, args) = parser.parse_args(args)
1715 1733
1716 if options.target_branch and not settings.GetIsGerrit(): 1734 if options.target_branch and not settings.GetIsGerrit():
1717 parser.error('Use --target_branch for non gerrit repository.') 1735 parser.error('Use --target_branch for non gerrit repository.')
1718 1736
1719 if is_dirty_git_tree('upload'): 1737 if is_dirty_git_tree('upload'):
1720 return 1 1738 return 1
1721 1739
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
1761 'the most recent patchset on the server is #%d.' 1779 'the most recent patchset on the server is #%d.'
1762 % (local_patchset, latest_patchset)) 1780 % (local_patchset, latest_patchset))
1763 print ('Uploading will still work, but if you\'ve uploaded to this issue ' 1781 print ('Uploading will still work, but if you\'ve uploaded to this issue '
1764 'from another machine or branch the patch you\'re uploading now ' 1782 'from another machine or branch the patch you\'re uploading now '
1765 'might not include those changes.') 1783 'might not include those changes.')
1766 ask_for_data('About to upload; enter to confirm.') 1784 ask_for_data('About to upload; enter to confirm.')
1767 1785
1768 print_stats(options.similarity, options.find_copies, args) 1786 print_stats(options.similarity, options.find_copies, args)
1769 if settings.GetIsGerrit(): 1787 if settings.GetIsGerrit():
1770 return GerritUpload(options, args, cl) 1788 return GerritUpload(options, args, cl)
1771 ret = RietveldUpload(options, args, cl) 1789 ret = RietveldUpload(options, args, cl, change)
1772 if not ret: 1790 if not ret:
1773 git_set_branch_value('last-upload-hash', 1791 git_set_branch_value('last-upload-hash',
1774 RunGit(['rev-parse', 'HEAD']).strip()) 1792 RunGit(['rev-parse', 'HEAD']).strip())
1775 1793
1776 return ret 1794 return ret
1777 1795
1778 1796
1779 def IsSubmoduleMergeCommit(ref): 1797 def IsSubmoduleMergeCommit(ref):
1780 # When submodules are added to the repo, we expect there to be a single 1798 # When submodules are added to the repo, we expect there to be a single
1781 # non-git-svn merge commit at remote HEAD with a signature comment. 1799 # non-git-svn merge commit at remote HEAD with a signature comment.
(...skipping 850 matching lines...) Expand 10 before | Expand all | Expand 10 after
2632 ('AppEngine is misbehaving and returned HTTP %d, again. Keep faith ' 2650 ('AppEngine is misbehaving and returned HTTP %d, again. Keep faith '
2633 'and retry or visit go/isgaeup.\n%s') % (e.code, str(e))) 2651 'and retry or visit go/isgaeup.\n%s') % (e.code, str(e)))
2634 2652
2635 2653
2636 if __name__ == '__main__': 2654 if __name__ == '__main__':
2637 # These affect sys.stdout so do it outside of main() to simplify mocks in 2655 # These affect sys.stdout so do it outside of main() to simplify mocks in
2638 # unit testing. 2656 # unit testing.
2639 fix_encoding.fix_encoding() 2657 fix_encoding.fix_encoding()
2640 colorama.init() 2658 colorama.init()
2641 sys.exit(main(sys.argv[1:])) 2659 sys.exit(main(sys.argv[1:]))
OLDNEW
« no previous file with comments | « no previous file | tests/git_cl_test.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698