diff options
-rw-r--r-- | project.py | 245 | ||||
-rw-r--r-- | subcmds/init.py | 2 |
2 files changed, 125 insertions, 122 deletions
@@ -85,7 +85,7 @@ def _ProjectHooks(): | |||
85 | global _project_hook_list | 85 | global _project_hook_list |
86 | if _project_hook_list is None: | 86 | if _project_hook_list is None: |
87 | d = os.path.realpath(os.path.abspath(os.path.dirname(__file__))) | 87 | d = os.path.realpath(os.path.abspath(os.path.dirname(__file__))) |
88 | d = os.path.join(d , 'hooks') | 88 | d = os.path.join(d, 'hooks') |
89 | _project_hook_list = [os.path.join(d, x) for x in os.listdir(d)] | 89 | _project_hook_list = [os.path.join(d, x) for x in os.listdir(d)] |
90 | return _project_hook_list | 90 | return _project_hook_list |
91 | 91 | ||
@@ -183,28 +183,28 @@ class ReviewableBranch(object): | |||
183 | class StatusColoring(Coloring): | 183 | class StatusColoring(Coloring): |
184 | def __init__(self, config): | 184 | def __init__(self, config): |
185 | Coloring.__init__(self, config, 'status') | 185 | Coloring.__init__(self, config, 'status') |
186 | self.project = self.printer('header', attr = 'bold') | 186 | self.project = self.printer('header', attr='bold') |
187 | self.branch = self.printer('header', attr = 'bold') | 187 | self.branch = self.printer('header', attr='bold') |
188 | self.nobranch = self.printer('nobranch', fg = 'red') | 188 | self.nobranch = self.printer('nobranch', fg='red') |
189 | self.important = self.printer('important', fg = 'red') | 189 | self.important = self.printer('important', fg='red') |
190 | 190 | ||
191 | self.added = self.printer('added', fg = 'green') | 191 | self.added = self.printer('added', fg='green') |
192 | self.changed = self.printer('changed', fg = 'red') | 192 | self.changed = self.printer('changed', fg='red') |
193 | self.untracked = self.printer('untracked', fg = 'red') | 193 | self.untracked = self.printer('untracked', fg='red') |
194 | 194 | ||
195 | 195 | ||
196 | class DiffColoring(Coloring): | 196 | class DiffColoring(Coloring): |
197 | def __init__(self, config): | 197 | def __init__(self, config): |
198 | Coloring.__init__(self, config, 'diff') | 198 | Coloring.__init__(self, config, 'diff') |
199 | self.project = self.printer('header', attr = 'bold') | 199 | self.project = self.printer('header', attr='bold') |
200 | 200 | ||
201 | class _Annotation: | 201 | class _Annotation(object): |
202 | def __init__(self, name, value, keep): | 202 | def __init__(self, name, value, keep): |
203 | self.name = name | 203 | self.name = name |
204 | self.value = value | 204 | self.value = value |
205 | self.keep = keep | 205 | self.keep = keep |
206 | 206 | ||
207 | class _CopyFile: | 207 | class _CopyFile(object): |
208 | def __init__(self, src, dest, abssrc, absdest): | 208 | def __init__(self, src, dest, abssrc, absdest): |
209 | self.src = src | 209 | self.src = src |
210 | self.dest = dest | 210 | self.dest = dest |
@@ -232,7 +232,7 @@ class _CopyFile: | |||
232 | except IOError: | 232 | except IOError: |
233 | _error('Cannot copy file %s to %s', src, dest) | 233 | _error('Cannot copy file %s to %s', src, dest) |
234 | 234 | ||
235 | class _LinkFile: | 235 | class _LinkFile(object): |
236 | def __init__(self, src, dest, abssrc, absdest): | 236 | def __init__(self, src, dest, abssrc, absdest): |
237 | self.src = src | 237 | self.src = src |
238 | self.dest = dest | 238 | self.dest = dest |
@@ -259,9 +259,9 @@ class _LinkFile: | |||
259 | class RemoteSpec(object): | 259 | class RemoteSpec(object): |
260 | def __init__(self, | 260 | def __init__(self, |
261 | name, | 261 | name, |
262 | url = None, | 262 | url=None, |
263 | review = None, | 263 | review=None, |
264 | revision = None): | 264 | revision=None): |
265 | self.name = name | 265 | self.name = name |
266 | self.url = url | 266 | self.url = url |
267 | self.review = review | 267 | self.review = review |
@@ -521,15 +521,15 @@ class Project(object): | |||
521 | relpath, | 521 | relpath, |
522 | revisionExpr, | 522 | revisionExpr, |
523 | revisionId, | 523 | revisionId, |
524 | rebase = True, | 524 | rebase=True, |
525 | groups = None, | 525 | groups=None, |
526 | sync_c = False, | 526 | sync_c=False, |
527 | sync_s = False, | 527 | sync_s=False, |
528 | clone_depth = None, | 528 | clone_depth=None, |
529 | upstream = None, | 529 | upstream=None, |
530 | parent = None, | 530 | parent=None, |
531 | is_derived = False, | 531 | is_derived=False, |
532 | dest_branch = None): | 532 | dest_branch=None): |
533 | """Init a Project object. | 533 | """Init a Project object. |
534 | 534 | ||
535 | Args: | 535 | Args: |
@@ -586,8 +586,8 @@ class Project(object): | |||
586 | self.linkfiles = [] | 586 | self.linkfiles = [] |
587 | self.annotations = [] | 587 | self.annotations = [] |
588 | self.config = GitConfig.ForRepository( | 588 | self.config = GitConfig.ForRepository( |
589 | gitdir = self.gitdir, | 589 | gitdir=self.gitdir, |
590 | defaults = self.manifest.globalConfig) | 590 | defaults=self.manifest.globalConfig) |
591 | 591 | ||
592 | if self.worktree: | 592 | if self.worktree: |
593 | self.work_git = self._GitGetByExec(self, bare=False, gitdir=gitdir) | 593 | self.work_git = self._GitGetByExec(self, bare=False, gitdir=gitdir) |
@@ -880,8 +880,8 @@ class Project(object): | |||
880 | cmd.append('--') | 880 | cmd.append('--') |
881 | p = GitCommand(self, | 881 | p = GitCommand(self, |
882 | cmd, | 882 | cmd, |
883 | capture_stdout = True, | 883 | capture_stdout=True, |
884 | capture_stderr = True) | 884 | capture_stderr=True) |
885 | has_diff = False | 885 | has_diff = False |
886 | for line in p.process.stdout: | 886 | for line in p.process.stdout: |
887 | if not has_diff: | 887 | if not has_diff: |
@@ -966,7 +966,7 @@ class Project(object): | |||
966 | return None | 966 | return None |
967 | 967 | ||
968 | def UploadForReview(self, branch=None, | 968 | def UploadForReview(self, branch=None, |
969 | people=([],[]), | 969 | people=([], []), |
970 | auto_topic=False, | 970 | auto_topic=False, |
971 | draft=False, | 971 | draft=False, |
972 | dest_branch=None): | 972 | dest_branch=None): |
@@ -1027,13 +1027,13 @@ class Project(object): | |||
1027 | ref_spec = ref_spec + '%' + ','.join(rp) | 1027 | ref_spec = ref_spec + '%' + ','.join(rp) |
1028 | cmd.append(ref_spec) | 1028 | cmd.append(ref_spec) |
1029 | 1029 | ||
1030 | if GitCommand(self, cmd, bare = True).Wait() != 0: | 1030 | if GitCommand(self, cmd, bare=True).Wait() != 0: |
1031 | raise UploadError('Upload failed') | 1031 | raise UploadError('Upload failed') |
1032 | 1032 | ||
1033 | msg = "posted to %s for %s" % (branch.remote.review, dest_branch) | 1033 | msg = "posted to %s for %s" % (branch.remote.review, dest_branch) |
1034 | self.bare_git.UpdateRef(R_PUB + branch.name, | 1034 | self.bare_git.UpdateRef(R_PUB + branch.name, |
1035 | R_HEADS + branch.name, | 1035 | R_HEADS + branch.name, |
1036 | message = msg) | 1036 | message=msg) |
1037 | 1037 | ||
1038 | 1038 | ||
1039 | ## Sync ## | 1039 | ## Sync ## |
@@ -1134,7 +1134,7 @@ class Project(object): | |||
1134 | and not self._RemoteFetch(initial=is_new, quiet=quiet, alt_dir=alt_dir, | 1134 | and not self._RemoteFetch(initial=is_new, quiet=quiet, alt_dir=alt_dir, |
1135 | current_branch_only=current_branch_only, | 1135 | current_branch_only=current_branch_only, |
1136 | no_tags=no_tags)): | 1136 | no_tags=no_tags)): |
1137 | return False | 1137 | return False |
1138 | 1138 | ||
1139 | if self.worktree: | 1139 | if self.worktree: |
1140 | self._InitMRef() | 1140 | self._InitMRef() |
@@ -1330,7 +1330,7 @@ class Project(object): | |||
1330 | 1330 | ||
1331 | if cnt_mine > 0 and self.rebase: | 1331 | if cnt_mine > 0 and self.rebase: |
1332 | def _dorebase(): | 1332 | def _dorebase(): |
1333 | self._Rebase(upstream = '%s^1' % last_mine, onto = revid) | 1333 | self._Rebase(upstream='%s^1' % last_mine, onto=revid) |
1334 | self._CopyAndLinkFiles() | 1334 | self._CopyAndLinkFiles() |
1335 | syncbuf.later2(self, _dorebase) | 1335 | syncbuf.later2(self, _dorebase) |
1336 | elif local_changes: | 1336 | elif local_changes: |
@@ -1385,11 +1385,11 @@ class Project(object): | |||
1385 | return True | 1385 | return True |
1386 | 1386 | ||
1387 | all_refs = self.bare_ref.all | 1387 | all_refs = self.bare_ref.all |
1388 | if (R_HEADS + name) in all_refs: | 1388 | if R_HEADS + name in all_refs: |
1389 | return GitCommand(self, | 1389 | return GitCommand(self, |
1390 | ['checkout', name, '--'], | 1390 | ['checkout', name, '--'], |
1391 | capture_stdout = True, | 1391 | capture_stdout=True, |
1392 | capture_stderr = True).Wait() == 0 | 1392 | capture_stderr=True).Wait() == 0 |
1393 | 1393 | ||
1394 | branch = self.GetBranch(name) | 1394 | branch = self.GetBranch(name) |
1395 | branch.remote = self.GetRemote(self.remote.name) | 1395 | branch.remote = self.GetRemote(self.remote.name) |
@@ -1416,8 +1416,8 @@ class Project(object): | |||
1416 | 1416 | ||
1417 | if GitCommand(self, | 1417 | if GitCommand(self, |
1418 | ['checkout', '-b', branch.name, revid], | 1418 | ['checkout', '-b', branch.name, revid], |
1419 | capture_stdout = True, | 1419 | capture_stdout=True, |
1420 | capture_stderr = True).Wait() == 0: | 1420 | capture_stderr=True).Wait() == 0: |
1421 | branch.Save() | 1421 | branch.Save() |
1422 | return True | 1422 | return True |
1423 | return False | 1423 | return False |
@@ -1463,8 +1463,8 @@ class Project(object): | |||
1463 | 1463 | ||
1464 | return GitCommand(self, | 1464 | return GitCommand(self, |
1465 | ['checkout', name, '--'], | 1465 | ['checkout', name, '--'], |
1466 | capture_stdout = True, | 1466 | capture_stdout=True, |
1467 | capture_stderr = True).Wait() == 0 | 1467 | capture_stderr=True).Wait() == 0 |
1468 | 1468 | ||
1469 | def AbandonBranch(self, name): | 1469 | def AbandonBranch(self, name): |
1470 | """Destroy a local topic branch. | 1470 | """Destroy a local topic branch. |
@@ -1498,8 +1498,8 @@ class Project(object): | |||
1498 | 1498 | ||
1499 | return GitCommand(self, | 1499 | return GitCommand(self, |
1500 | ['branch', '-D', name], | 1500 | ['branch', '-D', name], |
1501 | capture_stdout = True, | 1501 | capture_stdout=True, |
1502 | capture_stderr = True).Wait() == 0 | 1502 | capture_stderr=True).Wait() == 0 |
1503 | 1503 | ||
1504 | def PruneHeads(self): | 1504 | def PruneHeads(self): |
1505 | """Prune any topic branches already merged into upstream. | 1505 | """Prune any topic branches already merged into upstream. |
@@ -1516,7 +1516,7 @@ class Project(object): | |||
1516 | rev = self.GetRevisionId(left) | 1516 | rev = self.GetRevisionId(left) |
1517 | if cb is not None \ | 1517 | if cb is not None \ |
1518 | and not self._revlist(HEAD + '...' + rev) \ | 1518 | and not self._revlist(HEAD + '...' + rev) \ |
1519 | and not self.IsDirty(consider_untracked = False): | 1519 | and not self.IsDirty(consider_untracked=False): |
1520 | self.work_git.DetachHead(HEAD) | 1520 | self.work_git.DetachHead(HEAD) |
1521 | kill.append(cb) | 1521 | kill.append(cb) |
1522 | 1522 | ||
@@ -1549,7 +1549,7 @@ class Project(object): | |||
1549 | 1549 | ||
1550 | kept = [] | 1550 | kept = [] |
1551 | for branch in kill: | 1551 | for branch in kill: |
1552 | if (R_HEADS + branch) in left: | 1552 | if R_HEADS + branch in left: |
1553 | branch = self.GetBranch(branch) | 1553 | branch = self.GetBranch(branch) |
1554 | base = branch.LocalMerge | 1554 | base = branch.LocalMerge |
1555 | if not base: | 1555 | if not base: |
@@ -1599,8 +1599,8 @@ class Project(object): | |||
1599 | def parse_gitmodules(gitdir, rev): | 1599 | def parse_gitmodules(gitdir, rev): |
1600 | cmd = ['cat-file', 'blob', '%s:.gitmodules' % rev] | 1600 | cmd = ['cat-file', 'blob', '%s:.gitmodules' % rev] |
1601 | try: | 1601 | try: |
1602 | p = GitCommand(None, cmd, capture_stdout = True, capture_stderr = True, | 1602 | p = GitCommand(None, cmd, capture_stdout=True, capture_stderr=True, |
1603 | bare = True, gitdir = gitdir) | 1603 | bare=True, gitdir=gitdir) |
1604 | except GitError: | 1604 | except GitError: |
1605 | return [], [] | 1605 | return [], [] |
1606 | if p.Wait() != 0: | 1606 | if p.Wait() != 0: |
@@ -1612,8 +1612,8 @@ class Project(object): | |||
1612 | os.write(fd, p.stdout) | 1612 | os.write(fd, p.stdout) |
1613 | os.close(fd) | 1613 | os.close(fd) |
1614 | cmd = ['config', '--file', temp_gitmodules_path, '--list'] | 1614 | cmd = ['config', '--file', temp_gitmodules_path, '--list'] |
1615 | p = GitCommand(None, cmd, capture_stdout = True, capture_stderr = True, | 1615 | p = GitCommand(None, cmd, capture_stdout=True, capture_stderr=True, |
1616 | bare = True, gitdir = gitdir) | 1616 | bare=True, gitdir=gitdir) |
1617 | if p.Wait() != 0: | 1617 | if p.Wait() != 0: |
1618 | return [], [] | 1618 | return [], [] |
1619 | gitmodules_lines = p.stdout.split('\n') | 1619 | gitmodules_lines = p.stdout.split('\n') |
@@ -1646,8 +1646,8 @@ class Project(object): | |||
1646 | cmd = ['ls-tree', rev, '--'] | 1646 | cmd = ['ls-tree', rev, '--'] |
1647 | cmd.extend(paths) | 1647 | cmd.extend(paths) |
1648 | try: | 1648 | try: |
1649 | p = GitCommand(None, cmd, capture_stdout = True, capture_stderr = True, | 1649 | p = GitCommand(None, cmd, capture_stdout=True, capture_stderr=True, |
1650 | bare = True, gitdir = gitdir) | 1650 | bare=True, gitdir=gitdir) |
1651 | except GitError: | 1651 | except GitError: |
1652 | return [] | 1652 | return [] |
1653 | if p.Wait() != 0: | 1653 | if p.Wait() != 0: |
@@ -1682,24 +1682,24 @@ class Project(object): | |||
1682 | continue | 1682 | continue |
1683 | 1683 | ||
1684 | remote = RemoteSpec(self.remote.name, | 1684 | remote = RemoteSpec(self.remote.name, |
1685 | url = url, | 1685 | url=url, |
1686 | review = self.remote.review, | 1686 | review=self.remote.review, |
1687 | revision = self.remote.revision) | 1687 | revision=self.remote.revision) |
1688 | subproject = Project(manifest = self.manifest, | 1688 | subproject = Project(manifest=self.manifest, |
1689 | name = name, | 1689 | name=name, |
1690 | remote = remote, | 1690 | remote=remote, |
1691 | gitdir = gitdir, | 1691 | gitdir=gitdir, |
1692 | objdir = objdir, | 1692 | objdir=objdir, |
1693 | worktree = worktree, | 1693 | worktree=worktree, |
1694 | relpath = relpath, | 1694 | relpath=relpath, |
1695 | revisionExpr = self.revisionExpr, | 1695 | revisionExpr=self.revisionExpr, |
1696 | revisionId = rev, | 1696 | revisionId=rev, |
1697 | rebase = self.rebase, | 1697 | rebase=self.rebase, |
1698 | groups = self.groups, | 1698 | groups=self.groups, |
1699 | sync_c = self.sync_c, | 1699 | sync_c=self.sync_c, |
1700 | sync_s = self.sync_s, | 1700 | sync_s=self.sync_s, |
1701 | parent = self, | 1701 | parent=self, |
1702 | is_derived = True) | 1702 | is_derived=True) |
1703 | result.append(subproject) | 1703 | result.append(subproject) |
1704 | result.extend(subproject.GetDerivedSubprojects()) | 1704 | result.extend(subproject.GetDerivedSubprojects()) |
1705 | return result | 1705 | return result |
@@ -1764,8 +1764,15 @@ class Project(object): | |||
1764 | if is_sha1 or tag_name is not None: | 1764 | if is_sha1 or tag_name is not None: |
1765 | if self._CheckForSha1(): | 1765 | if self._CheckForSha1(): |
1766 | return True | 1766 | return True |
1767 | if is_sha1 and (not self.upstream or ID_RE.match(self.upstream)): | 1767 | if is_sha1 and not depth: |
1768 | current_branch_only = False | 1768 | # When syncing a specific commit and --depth is not set: |
1769 | # * if upstream is explicitly specified and is not a sha1, fetch only | ||
1770 | # upstream as users expect only upstream to be fetch. | ||
1771 | # Note: The commit might not be in upstream in which case the sync | ||
1772 | # will fail. | ||
1773 | # * otherwise, fetch all branches to make sure we end up with the | ||
1774 | # specific commit. | ||
1775 | current_branch_only = self.upstream and not ID_RE.match(self.upstream) | ||
1769 | 1776 | ||
1770 | if not name: | 1777 | if not name: |
1771 | name = self.remote.name | 1778 | name = self.remote.name |
@@ -1840,12 +1847,17 @@ class Project(object): | |||
1840 | spec.append(tag_name) | 1847 | spec.append(tag_name) |
1841 | 1848 | ||
1842 | branch = self.revisionExpr | 1849 | branch = self.revisionExpr |
1843 | if is_sha1: | 1850 | if is_sha1 and depth: |
1844 | branch = self.upstream | 1851 | # Shallow checkout of a specific commit, fetch from that commit and not |
1845 | if branch is not None and branch.strip(): | 1852 | # the heads only as the commit might be deeper in the history. |
1846 | if not branch.startswith('refs/'): | 1853 | spec.append(branch) |
1847 | branch = R_HEADS + branch | 1854 | else: |
1848 | spec.append(str((u'+%s:' % branch) + remote.ToLocal(branch))) | 1855 | if is_sha1: |
1856 | branch = self.upstream | ||
1857 | if branch is not None and branch.strip(): | ||
1858 | if not branch.startswith('refs/'): | ||
1859 | branch = R_HEADS + branch | ||
1860 | spec.append(str((u'+%s:' % branch) + remote.ToLocal(branch))) | ||
1849 | cmd.extend(spec) | 1861 | cmd.extend(spec) |
1850 | 1862 | ||
1851 | shallowfetch = self.config.GetString('repo.shallowfetch') | 1863 | shallowfetch = self.config.GetString('repo.shallowfetch') |
@@ -1853,9 +1865,9 @@ class Project(object): | |||
1853 | GitCommand(self, ['fetch', '--unshallow', name] + shallowfetch.split(), | 1865 | GitCommand(self, ['fetch', '--unshallow', name] + shallowfetch.split(), |
1854 | bare=True, ssh_proxy=ssh_proxy).Wait() | 1866 | bare=True, ssh_proxy=ssh_proxy).Wait() |
1855 | if depth: | 1867 | if depth: |
1856 | self.config.SetString('repo.shallowfetch', ' '.join(spec)) | 1868 | self.config.SetString('repo.shallowfetch', ' '.join(spec)) |
1857 | else: | 1869 | else: |
1858 | self.config.SetString('repo.shallowfetch', None) | 1870 | self.config.SetString('repo.shallowfetch', None) |
1859 | 1871 | ||
1860 | ok = False | 1872 | ok = False |
1861 | for _i in range(2): | 1873 | for _i in range(2): |
@@ -2037,7 +2049,7 @@ class Project(object): | |||
2037 | if self._allrefs: | 2049 | if self._allrefs: |
2038 | raise GitError('%s checkout %s ' % (self.name, rev)) | 2050 | raise GitError('%s checkout %s ' % (self.name, rev)) |
2039 | 2051 | ||
2040 | def _CherryPick(self, rev, quiet=False): | 2052 | def _CherryPick(self, rev): |
2041 | cmd = ['cherry-pick'] | 2053 | cmd = ['cherry-pick'] |
2042 | cmd.append(rev) | 2054 | cmd.append(rev) |
2043 | cmd.append('--') | 2055 | cmd.append('--') |
@@ -2045,7 +2057,7 @@ class Project(object): | |||
2045 | if self._allrefs: | 2057 | if self._allrefs: |
2046 | raise GitError('%s cherry-pick %s ' % (self.name, rev)) | 2058 | raise GitError('%s cherry-pick %s ' % (self.name, rev)) |
2047 | 2059 | ||
2048 | def _Revert(self, rev, quiet=False): | 2060 | def _Revert(self, rev): |
2049 | cmd = ['revert'] | 2061 | cmd = ['revert'] |
2050 | cmd.append('--no-edit') | 2062 | cmd.append('--no-edit') |
2051 | cmd.append(rev) | 2063 | cmd.append(rev) |
@@ -2062,7 +2074,7 @@ class Project(object): | |||
2062 | if GitCommand(self, cmd).Wait() != 0: | 2074 | if GitCommand(self, cmd).Wait() != 0: |
2063 | raise GitError('%s reset --hard %s ' % (self.name, rev)) | 2075 | raise GitError('%s reset --hard %s ' % (self.name, rev)) |
2064 | 2076 | ||
2065 | def _Rebase(self, upstream, onto = None): | 2077 | def _Rebase(self, upstream, onto=None): |
2066 | cmd = ['rebase'] | 2078 | cmd = ['rebase'] |
2067 | if onto is not None: | 2079 | if onto is not None: |
2068 | cmd.extend(['--onto', onto]) | 2080 | cmd.extend(['--onto', onto]) |
@@ -2117,7 +2129,7 @@ class Project(object): | |||
2117 | 2129 | ||
2118 | m = self.manifest.manifestProject.config | 2130 | m = self.manifest.manifestProject.config |
2119 | for key in ['user.name', 'user.email']: | 2131 | for key in ['user.name', 'user.email']: |
2120 | if m.Has(key, include_defaults = False): | 2132 | if m.Has(key, include_defaults=False): |
2121 | self.config.SetString(key, m.GetString(key)) | 2133 | self.config.SetString(key, m.GetString(key)) |
2122 | if self.manifest.IsMirror: | 2134 | if self.manifest.IsMirror: |
2123 | self.config.SetString('core.bare', 'true') | 2135 | self.config.SetString('core.bare', 'true') |
@@ -2126,15 +2138,6 @@ class Project(object): | |||
2126 | 2138 | ||
2127 | def _UpdateHooks(self): | 2139 | def _UpdateHooks(self): |
2128 | if os.path.exists(self.gitdir): | 2140 | if os.path.exists(self.gitdir): |
2129 | # Always recreate hooks since they can have been changed | ||
2130 | # since the latest update. | ||
2131 | hooks = self._gitdir_path('hooks') | ||
2132 | try: | ||
2133 | to_rm = os.listdir(hooks) | ||
2134 | except OSError: | ||
2135 | to_rm = [] | ||
2136 | for old_hook in to_rm: | ||
2137 | os.remove(os.path.join(hooks, old_hook)) | ||
2138 | self._InitHooks() | 2141 | self._InitHooks() |
2139 | 2142 | ||
2140 | def _InitHooks(self): | 2143 | def _InitHooks(self): |
@@ -2197,7 +2200,7 @@ class Project(object): | |||
2197 | if cur != '' or self.bare_ref.get(ref) != self.revisionId: | 2200 | if cur != '' or self.bare_ref.get(ref) != self.revisionId: |
2198 | msg = 'manifest set to %s' % self.revisionId | 2201 | msg = 'manifest set to %s' % self.revisionId |
2199 | dst = self.revisionId + '^0' | 2202 | dst = self.revisionId + '^0' |
2200 | self.bare_git.UpdateRef(ref, dst, message = msg, detach = True) | 2203 | self.bare_git.UpdateRef(ref, dst, message=msg, detach=True) |
2201 | else: | 2204 | else: |
2202 | remote = self.GetRemote(self.remote.name) | 2205 | remote = self.GetRemote(self.remote.name) |
2203 | dst = remote.ToLocal(self.revisionExpr) | 2206 | dst = remote.ToLocal(self.revisionExpr) |
@@ -2341,10 +2344,10 @@ class Project(object): | |||
2341 | '-z', | 2344 | '-z', |
2342 | '--others', | 2345 | '--others', |
2343 | '--exclude-standard'], | 2346 | '--exclude-standard'], |
2344 | bare = False, | 2347 | bare=False, |
2345 | gitdir=self._gitdir, | 2348 | gitdir=self._gitdir, |
2346 | capture_stdout = True, | 2349 | capture_stdout=True, |
2347 | capture_stderr = True) | 2350 | capture_stderr=True) |
2348 | if p.Wait() == 0: | 2351 | if p.Wait() == 0: |
2349 | out = p.stdout | 2352 | out = p.stdout |
2350 | if out: | 2353 | if out: |
@@ -2359,9 +2362,9 @@ class Project(object): | |||
2359 | p = GitCommand(self._project, | 2362 | p = GitCommand(self._project, |
2360 | cmd, | 2363 | cmd, |
2361 | gitdir=self._gitdir, | 2364 | gitdir=self._gitdir, |
2362 | bare = False, | 2365 | bare=False, |
2363 | capture_stdout = True, | 2366 | capture_stdout=True, |
2364 | capture_stderr = True) | 2367 | capture_stderr=True) |
2365 | try: | 2368 | try: |
2366 | out = p.process.stdout.read() | 2369 | out = p.process.stdout.read() |
2367 | r = {} | 2370 | r = {} |
@@ -2467,10 +2470,10 @@ class Project(object): | |||
2467 | cmdv.extend(args) | 2470 | cmdv.extend(args) |
2468 | p = GitCommand(self._project, | 2471 | p = GitCommand(self._project, |
2469 | cmdv, | 2472 | cmdv, |
2470 | bare = self._bare, | 2473 | bare=self._bare, |
2471 | gitdir=self._gitdir, | 2474 | gitdir=self._gitdir, |
2472 | capture_stdout = True, | 2475 | capture_stdout=True, |
2473 | capture_stderr = True) | 2476 | capture_stderr=True) |
2474 | r = [] | 2477 | r = [] |
2475 | for line in p.process.stdout: | 2478 | for line in p.process.stdout: |
2476 | if line[-1] == '\n': | 2479 | if line[-1] == '\n': |
@@ -2520,10 +2523,10 @@ class Project(object): | |||
2520 | cmdv.extend(args) | 2523 | cmdv.extend(args) |
2521 | p = GitCommand(self._project, | 2524 | p = GitCommand(self._project, |
2522 | cmdv, | 2525 | cmdv, |
2523 | bare = self._bare, | 2526 | bare=self._bare, |
2524 | gitdir=self._gitdir, | 2527 | gitdir=self._gitdir, |
2525 | capture_stdout = True, | 2528 | capture_stdout=True, |
2526 | capture_stderr = True) | 2529 | capture_stderr=True) |
2527 | if p.Wait() != 0: | 2530 | if p.Wait() != 0: |
2528 | raise GitError('%s %s: %s' % ( | 2531 | raise GitError('%s %s: %s' % ( |
2529 | self._project.name, | 2532 | self._project.name, |
@@ -2588,9 +2591,9 @@ class _Later(object): | |||
2588 | class _SyncColoring(Coloring): | 2591 | class _SyncColoring(Coloring): |
2589 | def __init__(self, config): | 2592 | def __init__(self, config): |
2590 | Coloring.__init__(self, config, 'reposync') | 2593 | Coloring.__init__(self, config, 'reposync') |
2591 | self.project = self.printer('header', attr = 'bold') | 2594 | self.project = self.printer('header', attr='bold') |
2592 | self.info = self.printer('info') | 2595 | self.info = self.printer('info') |
2593 | self.fail = self.printer('fail', fg='red') | 2596 | self.fail = self.printer('fail', fg='red') |
2594 | 2597 | ||
2595 | class SyncBuffer(object): | 2598 | class SyncBuffer(object): |
2596 | def __init__(self, config, detach_head=False): | 2599 | def __init__(self, config, detach_head=False): |
@@ -2652,16 +2655,16 @@ class MetaProject(Project): | |||
2652 | """ | 2655 | """ |
2653 | def __init__(self, manifest, name, gitdir, worktree): | 2656 | def __init__(self, manifest, name, gitdir, worktree): |
2654 | Project.__init__(self, | 2657 | Project.__init__(self, |
2655 | manifest = manifest, | 2658 | manifest=manifest, |
2656 | name = name, | 2659 | name=name, |
2657 | gitdir = gitdir, | 2660 | gitdir=gitdir, |
2658 | objdir = gitdir, | 2661 | objdir=gitdir, |
2659 | worktree = worktree, | 2662 | worktree=worktree, |
2660 | remote = RemoteSpec('origin'), | 2663 | remote=RemoteSpec('origin'), |
2661 | relpath = '.repo/%s' % name, | 2664 | relpath='.repo/%s' % name, |
2662 | revisionExpr = 'refs/heads/master', | 2665 | revisionExpr='refs/heads/master', |
2663 | revisionId = None, | 2666 | revisionId=None, |
2664 | groups = None) | 2667 | groups=None) |
2665 | 2668 | ||
2666 | def PreSync(self): | 2669 | def PreSync(self): |
2667 | if self.Exists: | 2670 | if self.Exists: |
@@ -2672,20 +2675,20 @@ class MetaProject(Project): | |||
2672 | self.revisionExpr = base | 2675 | self.revisionExpr = base |
2673 | self.revisionId = None | 2676 | self.revisionId = None |
2674 | 2677 | ||
2675 | def MetaBranchSwitch(self, target): | 2678 | def MetaBranchSwitch(self): |
2676 | """ Prepare MetaProject for manifest branch switch | 2679 | """ Prepare MetaProject for manifest branch switch |
2677 | """ | 2680 | """ |
2678 | 2681 | ||
2679 | # detach and delete manifest branch, allowing a new | 2682 | # detach and delete manifest branch, allowing a new |
2680 | # branch to take over | 2683 | # branch to take over |
2681 | syncbuf = SyncBuffer(self.config, detach_head = True) | 2684 | syncbuf = SyncBuffer(self.config, detach_head=True) |
2682 | self.Sync_LocalHalf(syncbuf) | 2685 | self.Sync_LocalHalf(syncbuf) |
2683 | syncbuf.Finish() | 2686 | syncbuf.Finish() |
2684 | 2687 | ||
2685 | return GitCommand(self, | 2688 | return GitCommand(self, |
2686 | ['update-ref', '-d', 'refs/heads/default'], | 2689 | ['update-ref', '-d', 'refs/heads/default'], |
2687 | capture_stdout = True, | 2690 | capture_stdout=True, |
2688 | capture_stderr = True).Wait() == 0 | 2691 | capture_stderr=True).Wait() == 0 |
2689 | 2692 | ||
2690 | 2693 | ||
2691 | @property | 2694 | @property |
diff --git a/subcmds/init.py b/subcmds/init.py index b1fcb69c..b73de71c 100644 --- a/subcmds/init.py +++ b/subcmds/init.py | |||
@@ -233,7 +233,7 @@ to update the working directory files. | |||
233 | sys.exit(1) | 233 | sys.exit(1) |
234 | 234 | ||
235 | if opt.manifest_branch: | 235 | if opt.manifest_branch: |
236 | m.MetaBranchSwitch(opt.manifest_branch) | 236 | m.MetaBranchSwitch() |
237 | 237 | ||
238 | syncbuf = SyncBuffer(m.config) | 238 | syncbuf = SyncBuffer(m.config) |
239 | m.Sync_LocalHalf(syncbuf) | 239 | m.Sync_LocalHalf(syncbuf) |