diff options
Diffstat (limited to 'project.py')
| -rw-r--r-- | project.py | 36 |
1 files changed, 29 insertions, 7 deletions
| @@ -211,7 +211,10 @@ class Project(object): | |||
| 211 | gitdir = self.gitdir, | 211 | gitdir = self.gitdir, |
| 212 | defaults = self.manifest.globalConfig) | 212 | defaults = self.manifest.globalConfig) |
| 213 | 213 | ||
| 214 | self.work_git = self._GitGetByExec(self, bare=False) | 214 | if self.worktree: |
| 215 | self.work_git = self._GitGetByExec(self, bare=False) | ||
| 216 | else: | ||
| 217 | self.work_git = None | ||
| 215 | self.bare_git = self._GitGetByExec(self, bare=True) | 218 | self.bare_git = self._GitGetByExec(self, bare=True) |
| 216 | 219 | ||
| 217 | @property | 220 | @property |
| @@ -489,14 +492,23 @@ class Project(object): | |||
| 489 | print >>sys.stderr | 492 | print >>sys.stderr |
| 490 | print >>sys.stderr, 'Initializing project %s ...' % self.name | 493 | print >>sys.stderr, 'Initializing project %s ...' % self.name |
| 491 | self._InitGitDir() | 494 | self._InitGitDir() |
| 495 | |||
| 492 | self._InitRemote() | 496 | self._InitRemote() |
| 493 | for r in self.extraRemotes.values(): | 497 | for r in self.extraRemotes.values(): |
| 494 | if not self._RemoteFetch(r.name): | 498 | if not self._RemoteFetch(r.name): |
| 495 | return False | 499 | return False |
| 496 | if not self._RemoteFetch(): | 500 | if not self._RemoteFetch(): |
| 497 | return False | 501 | return False |
| 498 | self._RepairAndroidImportErrors() | 502 | |
| 499 | self._InitMRef() | 503 | if self.worktree: |
| 504 | self._RepairAndroidImportErrors() | ||
| 505 | self._InitMRef() | ||
| 506 | else: | ||
| 507 | self._InitMirrorHead() | ||
| 508 | try: | ||
| 509 | os.remove(os.path.join(self.gitdir, 'FETCH_HEAD')) | ||
| 510 | except OSError: | ||
| 511 | pass | ||
| 500 | return True | 512 | return True |
| 501 | 513 | ||
| 502 | def PostRepoUpgrade(self): | 514 | def PostRepoUpgrade(self): |
| @@ -792,9 +804,11 @@ class Project(object): | |||
| 792 | def _RemoteFetch(self, name=None): | 804 | def _RemoteFetch(self, name=None): |
| 793 | if not name: | 805 | if not name: |
| 794 | name = self.remote.name | 806 | name = self.remote.name |
| 795 | return GitCommand(self, | 807 | cmd = ['fetch'] |
| 796 | ['fetch', name], | 808 | if not self.worktree: |
| 797 | bare = True).Wait() == 0 | 809 | cmd.append('--update-head-ok') |
| 810 | cmd.append(name) | ||
| 811 | return GitCommand(self, cmd, bare = True).Wait() == 0 | ||
| 798 | 812 | ||
| 799 | def _Checkout(self, rev, quiet=False): | 813 | def _Checkout(self, rev, quiet=False): |
| 800 | cmd = ['checkout'] | 814 | cmd = ['checkout'] |
| @@ -874,7 +888,10 @@ class Project(object): | |||
| 874 | remote.url = url | 888 | remote.url = url |
| 875 | remote.review = self.remote.reviewUrl | 889 | remote.review = self.remote.reviewUrl |
| 876 | 890 | ||
| 877 | remote.ResetFetch() | 891 | if self.worktree: |
| 892 | remote.ResetFetch(mirror=False) | ||
| 893 | else: | ||
| 894 | remote.ResetFetch(mirror=True) | ||
| 878 | remote.Save() | 895 | remote.Save() |
| 879 | 896 | ||
| 880 | for r in self.extraRemotes.values(): | 897 | for r in self.extraRemotes.values(): |
| @@ -897,6 +914,11 @@ class Project(object): | |||
| 897 | dst = remote.ToLocal(self.revision) | 914 | dst = remote.ToLocal(self.revision) |
| 898 | self.bare_git.symbolic_ref('-m', msg, ref, dst) | 915 | self.bare_git.symbolic_ref('-m', msg, ref, dst) |
| 899 | 916 | ||
| 917 | def _InitMirrorHead(self): | ||
| 918 | dst = self.GetRemote(self.remote.name).ToLocal(self.revision) | ||
| 919 | msg = 'manifest set to %s' % self.revision | ||
| 920 | self.bare_git.SetHead(dst, message=msg) | ||
| 921 | |||
| 900 | def _InitWorkTree(self): | 922 | def _InitWorkTree(self): |
| 901 | dotgit = os.path.join(self.worktree, '.git') | 923 | dotgit = os.path.join(self.worktree, '.git') |
| 902 | if not os.path.exists(dotgit): | 924 | if not os.path.exists(dotgit): |
