1175 if heads: |
1175 if heads: |
1176 return subset, updated_heads.keys() |
1176 return subset, updated_heads.keys() |
1177 else: |
1177 else: |
1178 return subset |
1178 return subset |
1179 |
1179 |
1180 def pull(self, remote, heads=None, force=False): |
1180 def pull(self, remote, heads=None, force=False, lock=None): |
1181 l = self.lock() |
1181 mylock = False |
1182 |
1182 if not lock: |
1183 fetch = self.findincoming(remote, force=force) |
1183 lock = self.lock() |
1184 if fetch == [nullid]: |
1184 mylock = True |
1185 self.ui.status(_("requesting all changes\n")) |
1185 |
1186 |
1186 try: |
1187 if not fetch: |
1187 fetch = self.findincoming(remote, force=force) |
1188 self.ui.status(_("no changes found\n")) |
1188 if fetch == [nullid]: |
1189 return 0 |
1189 self.ui.status(_("requesting all changes\n")) |
1190 |
1190 |
1191 if heads is None: |
1191 if not fetch: |
1192 cg = remote.changegroup(fetch, 'pull') |
1192 self.ui.status(_("no changes found\n")) |
1193 else: |
1193 return 0 |
1194 cg = remote.changegroupsubset(fetch, heads, 'pull') |
1194 |
1195 return self.addchangegroup(cg, 'pull', remote.url()) |
1195 if heads is None: |
|
1196 cg = remote.changegroup(fetch, 'pull') |
|
1197 else: |
|
1198 cg = remote.changegroupsubset(fetch, heads, 'pull') |
|
1199 return self.addchangegroup(cg, 'pull', remote.url()) |
|
1200 finally: |
|
1201 if mylock: |
|
1202 lock.release() |
1196 |
1203 |
1197 def push(self, remote, force=False, revs=None): |
1204 def push(self, remote, force=False, revs=None): |
1198 # there are two ways to push to remote repo: |
1205 # there are two ways to push to remote repo: |
1199 # |
1206 # |
1200 # addchangegroup assumes local user can lock remote |
1207 # addchangegroup assumes local user can lock remote |