| OLD | NEW |
| 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 from __future__ import print_function | 7 from __future__ import print_function |
| 8 | 8 |
| 9 import errno | 9 import errno |
| 10 import logging | 10 import logging |
| (...skipping 290 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 301 self._UpdateBranchHeads(options, fetch=False) | 301 self._UpdateBranchHeads(options, fetch=False) |
| 302 | 302 |
| 303 cfg = gclient_utils.DefaultIndexPackConfig(self.url) | 303 cfg = gclient_utils.DefaultIndexPackConfig(self.url) |
| 304 fetch_cmd = cfg + ['fetch', self.remote, '--prune'] | 304 fetch_cmd = cfg + ['fetch', self.remote, '--prune'] |
| 305 self._Run(fetch_cmd + quiet, options, retry=True) | 305 self._Run(fetch_cmd + quiet, options, retry=True) |
| 306 self._Run(['reset', '--hard', revision] + quiet, options) | 306 self._Run(['reset', '--hard', revision] + quiet, options) |
| 307 if file_list is not None: | 307 if file_list is not None: |
| 308 files = self._Capture(['ls-files']).splitlines() | 308 files = self._Capture(['ls-files']).splitlines() |
| 309 file_list.extend([os.path.join(self.checkout_path, f) for f in files]) | 309 file_list.extend([os.path.join(self.checkout_path, f) for f in files]) |
| 310 | 310 |
| 311 def _DisableHooks(self): |
| 312 hook_dir = os.path.join(self.checkout_path, '.git', 'hooks') |
| 313 if not os.path.isdir(hook_dir): |
| 314 return |
| 315 for f in os.listdir(hook_dir): |
| 316 if not f.endswith('.sample') and not f.endswith('.disabled'): |
| 317 os.rename(os.path.join(hook_dir, f), |
| 318 os.path.join(hook_dir, f + '.disabled')) |
| 319 |
| 311 def update(self, options, args, file_list): | 320 def update(self, options, args, file_list): |
| 312 """Runs git to update or transparently checkout the working copy. | 321 """Runs git to update or transparently checkout the working copy. |
| 313 | 322 |
| 314 All updated files will be appended to file_list. | 323 All updated files will be appended to file_list. |
| 315 | 324 |
| 316 Raises: | 325 Raises: |
| 317 Error: if can't get URL for relative path. | 326 Error: if can't get URL for relative path. |
| 318 """ | 327 """ |
| 319 if args: | 328 if args: |
| 320 raise gclient_utils.Error("Unsupported argument(s): %s" % ",".join(args)) | 329 raise gclient_utils.Error("Unsupported argument(s): %s" % ",".join(args)) |
| (...skipping 10 matching lines...) Expand all Loading... |
| 331 # Override the revision number. | 340 # Override the revision number. |
| 332 revision = str(options.revision) | 341 revision = str(options.revision) |
| 333 if revision == 'unmanaged': | 342 if revision == 'unmanaged': |
| 334 # Check again for a revision in case an initial ref was specified | 343 # Check again for a revision in case an initial ref was specified |
| 335 # in the url, for example bla.git@refs/heads/custombranch | 344 # in the url, for example bla.git@refs/heads/custombranch |
| 336 revision = deps_revision | 345 revision = deps_revision |
| 337 managed = False | 346 managed = False |
| 338 if not revision: | 347 if not revision: |
| 339 revision = default_rev | 348 revision = default_rev |
| 340 | 349 |
| 350 if managed: |
| 351 self._DisableHooks() |
| 352 |
| 341 if gclient_utils.IsDateRevision(revision): | 353 if gclient_utils.IsDateRevision(revision): |
| 342 # Date-revisions only work on git-repositories if the reflog hasn't | 354 # Date-revisions only work on git-repositories if the reflog hasn't |
| 343 # expired yet. Use rev-list to get the corresponding revision. | 355 # expired yet. Use rev-list to get the corresponding revision. |
| 344 # git rev-list -n 1 --before='time-stamp' branchname | 356 # git rev-list -n 1 --before='time-stamp' branchname |
| 345 if options.transitive: | 357 if options.transitive: |
| 346 self.Print('Warning: --transitive only works for SVN repositories.') | 358 self.Print('Warning: --transitive only works for SVN repositories.') |
| 347 revision = default_rev | 359 revision = default_rev |
| 348 | 360 |
| 349 rev_str = ' at %s' % revision | 361 rev_str = ' at %s' % revision |
| 350 files = [] if file_list is not None else None | 362 files = [] if file_list is not None else None |
| (...skipping 438 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 789 | 801 |
| 790 Once we've cloned the repo, we checkout a working branch if the specified | 802 Once we've cloned the repo, we checkout a working branch if the specified |
| 791 revision is a branch head. If it is a tag or a specific commit, then we | 803 revision is a branch head. If it is a tag or a specific commit, then we |
| 792 leave HEAD detached as it makes future updates simpler -- in this case the | 804 leave HEAD detached as it makes future updates simpler -- in this case the |
| 793 user should first create a new branch or switch to an existing branch before | 805 user should first create a new branch or switch to an existing branch before |
| 794 making changes in the repo.""" | 806 making changes in the repo.""" |
| 795 if not options.verbose: | 807 if not options.verbose: |
| 796 # git clone doesn't seem to insert a newline properly before printing | 808 # git clone doesn't seem to insert a newline properly before printing |
| 797 # to stdout | 809 # to stdout |
| 798 self.Print('') | 810 self.Print('') |
| 799 template_path = os.path.join( | |
| 800 os.path.dirname(THIS_FILE_PATH), 'git-templates') | |
| 801 cfg = gclient_utils.DefaultIndexPackConfig(url) | 811 cfg = gclient_utils.DefaultIndexPackConfig(url) |
| 802 clone_cmd = cfg + [ | 812 clone_cmd = cfg + ['clone', '--no-checkout', '--progress'] |
| 803 'clone', '--no-checkout', '--progress', '--template=%s' % template_path] | |
| 804 if self.cache_dir: | 813 if self.cache_dir: |
| 805 clone_cmd.append('--shared') | 814 clone_cmd.append('--shared') |
| 806 if options.verbose: | 815 if options.verbose: |
| 807 clone_cmd.append('--verbose') | 816 clone_cmd.append('--verbose') |
| 808 clone_cmd.append(url) | 817 clone_cmd.append(url) |
| 809 # If the parent directory does not exist, Git clone on Windows will not | 818 # If the parent directory does not exist, Git clone on Windows will not |
| 810 # create it, so we need to do it manually. | 819 # create it, so we need to do it manually. |
| 811 parent_dir = os.path.dirname(self.checkout_path) | 820 parent_dir = os.path.dirname(self.checkout_path) |
| 812 gclient_utils.safe_makedirs(parent_dir) | 821 gclient_utils.safe_makedirs(parent_dir) |
| 813 tmp_dir = tempfile.mkdtemp( | 822 tmp_dir = tempfile.mkdtemp( |
| (...skipping 675 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1489 new_command.append('--force') | 1498 new_command.append('--force') |
| 1490 if command[0] != 'checkout' and scm.SVN.AssertVersion('1.6')[0]: | 1499 if command[0] != 'checkout' and scm.SVN.AssertVersion('1.6')[0]: |
| 1491 new_command.extend(('--accept', 'theirs-conflict')) | 1500 new_command.extend(('--accept', 'theirs-conflict')) |
| 1492 elif options.manually_grab_svn_rev: | 1501 elif options.manually_grab_svn_rev: |
| 1493 new_command.append('--force') | 1502 new_command.append('--force') |
| 1494 if command[0] != 'checkout' and scm.SVN.AssertVersion('1.6')[0]: | 1503 if command[0] != 'checkout' and scm.SVN.AssertVersion('1.6')[0]: |
| 1495 new_command.extend(('--accept', 'postpone')) | 1504 new_command.extend(('--accept', 'postpone')) |
| 1496 elif command[0] != 'checkout' and scm.SVN.AssertVersion('1.6')[0]: | 1505 elif command[0] != 'checkout' and scm.SVN.AssertVersion('1.6')[0]: |
| 1497 new_command.extend(('--accept', 'postpone')) | 1506 new_command.extend(('--accept', 'postpone')) |
| 1498 return new_command | 1507 return new_command |
| OLD | NEW |