summaryrefslogtreecommitdiffstats
path: root/project.py
diff options
context:
space:
mode:
Diffstat (limited to 'project.py')
-rw-r--r--project.py36
1 files changed, 29 insertions, 7 deletions
diff --git a/project.py b/project.py
index 0637f4bf..1cfaaae5 100644
--- a/project.py
+++ b/project.py
@@ -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):