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): |