Mercurial > public > mercurial-scm > hg-stable
comparison mercurial/localrepo.py @ 2827:2a0c599f7bb0
fetch: hold lock and wlock across all operations
author | Vadim Gelfer <vadim.gelfer@gmail.com> |
---|---|
date | Tue, 08 Aug 2006 17:08:59 -0700 |
parents | 987c31e2a08c |
children | e78cad1f6b1f |
comparison
equal
deleted
inserted
replaced
2826:bce6918b0474 | 2827:2a0c599f7bb0 |
---|---|
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 |