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

Side by Side Diff: gclient_scm.py

Issue 18006002: Add --upstream option to gclient to scrape git checkouts back to upstream state. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/depot_tools
Patch Set: upstream not nuclear Created 7 years, 5 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 | « gclient.py ('k') | tests/gclient_scm_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 # Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 # Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 """Gclient-specific SCM-specific operations.""" 5 """Gclient-specific SCM-specific operations."""
6 6
7 import logging 7 import logging
8 import os 8 import os
9 import posixpath 9 import posixpath
10 import re 10 import re
(...skipping 412 matching lines...) Expand 10 before | Expand all | Expand 10 after
423 continue 423 continue
424 raise 424 raise
425 425
426 if verbose: 426 if verbose:
427 print(remote_output.strip()) 427 print(remote_output.strip())
428 428
429 self._UpdateBranchHeads(options, fetch=True) 429 self._UpdateBranchHeads(options, fetch=True)
430 430
431 # This is a big hammer, debatable if it should even be here... 431 # This is a big hammer, debatable if it should even be here...
432 if options.force or options.reset: 432 if options.force or options.reset:
433 self._Run(['reset', '--hard', 'HEAD'], options) 433 target = 'HEAD'
434 if options.upstream and upstream_branch:
435 target = upstream_branch
436 self._Run(['reset', '--hard', target], options)
434 437
435 if current_type == 'detached': 438 if current_type == 'detached':
436 # case 0 439 # case 0
437 self._CheckClean(rev_str) 440 self._CheckClean(rev_str)
438 self._CheckDetachedHead(rev_str, options) 441 self._CheckDetachedHead(rev_str, options)
439 self._Capture(['checkout', '--quiet', '%s' % revision]) 442 self._Capture(['checkout', '--quiet', '%s' % revision])
440 if not printed_path: 443 if not printed_path:
441 print('\n_____ %s%s' % (self.relpath, rev_str)) 444 print('\n_____ %s%s' % (self.relpath, rev_str))
442 elif current_type == 'hash': 445 elif current_type == 'hash':
443 # case 1 446 # case 1
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after
571 All reverted files will be appended to file_list. 574 All reverted files will be appended to file_list.
572 """ 575 """
573 if not os.path.isdir(self.checkout_path): 576 if not os.path.isdir(self.checkout_path):
574 # revert won't work if the directory doesn't exist. It needs to 577 # revert won't work if the directory doesn't exist. It needs to
575 # checkout instead. 578 # checkout instead.
576 print('\n_____ %s is missing, synching instead' % self.relpath) 579 print('\n_____ %s is missing, synching instead' % self.relpath)
577 # Don't reuse the args. 580 # Don't reuse the args.
578 return self.update(options, [], file_list) 581 return self.update(options, [], file_list)
579 582
580 default_rev = "refs/heads/master" 583 default_rev = "refs/heads/master"
584 if options.upstream:
585 if self._GetCurrentBranch():
586 upstream_branch = scm.GIT.GetUpstreamBranch(self.checkout_path)
587 default_rev = upstream_branch or default_rev
581 _, deps_revision = gclient_utils.SplitUrlRevision(self.url) 588 _, deps_revision = gclient_utils.SplitUrlRevision(self.url)
582 if not deps_revision: 589 if not deps_revision:
583 deps_revision = default_rev 590 deps_revision = default_rev
584 if deps_revision.startswith('refs/heads/'): 591 if deps_revision.startswith('refs/heads/'):
585 deps_revision = deps_revision.replace('refs/heads/', 'origin/') 592 deps_revision = deps_revision.replace('refs/heads/', 'origin/')
586 593
587 files = self._Capture(['diff', deps_revision, '--name-only']).split() 594 files = self._Capture(['diff', deps_revision, '--name-only']).split()
588 self._Run(['reset', '--hard', deps_revision], options) 595 self._Run(['reset', '--hard', deps_revision], options)
589 self._Run(['clean', '-f', '-d'], options) 596 self._Run(['clean', '-f', '-d'], options)
590 file_list.extend([os.path.join(self.checkout_path, f) for f in files]) 597 file_list.extend([os.path.join(self.checkout_path, f) for f in files])
(...skipping 738 matching lines...) Expand 10 before | Expand all | Expand 10 after
1329 new_command.append('--force') 1336 new_command.append('--force')
1330 if command[0] != 'checkout' and scm.SVN.AssertVersion('1.6')[0]: 1337 if command[0] != 'checkout' and scm.SVN.AssertVersion('1.6')[0]:
1331 new_command.extend(('--accept', 'theirs-conflict')) 1338 new_command.extend(('--accept', 'theirs-conflict'))
1332 elif options.manually_grab_svn_rev: 1339 elif options.manually_grab_svn_rev:
1333 new_command.append('--force') 1340 new_command.append('--force')
1334 if command[0] != 'checkout' and scm.SVN.AssertVersion('1.6')[0]: 1341 if command[0] != 'checkout' and scm.SVN.AssertVersion('1.6')[0]:
1335 new_command.extend(('--accept', 'postpone')) 1342 new_command.extend(('--accept', 'postpone'))
1336 elif command[0] != 'checkout' and scm.SVN.AssertVersion('1.6')[0]: 1343 elif command[0] != 'checkout' and scm.SVN.AssertVersion('1.6')[0]:
1337 new_command.extend(('--accept', 'postpone')) 1344 new_command.extend(('--accept', 'postpone'))
1338 return new_command 1345 return new_command
OLDNEW
« no previous file with comments | « gclient.py ('k') | tests/gclient_scm_test.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698