equal
deleted
inserted
replaced
1303 |
1303 |
1304 All the ancestors of base are in self and in remote. |
1304 All the ancestors of base are in self and in remote. |
1305 """ |
1305 """ |
1306 m = self.changelog.nodemap |
1306 m = self.changelog.nodemap |
1307 search = [] |
1307 search = [] |
1308 fetch = {} |
1308 fetch = set() |
1309 seen = {} |
1309 seen = set() |
1310 seenbranch = {} |
1310 seenbranch = set() |
1311 if base == None: |
1311 if base == None: |
1312 base = {} |
1312 base = {} |
1313 |
1313 |
1314 if not heads: |
1314 if not heads: |
1315 heads = remote.heads() |
1315 heads = remote.heads() |
1359 continue |
1359 continue |
1360 elif n[1] and n[1] in m: # do we know the base? |
1360 elif n[1] and n[1] in m: # do we know the base? |
1361 self.ui.debug(_("found incomplete branch %s:%s\n") |
1361 self.ui.debug(_("found incomplete branch %s:%s\n") |
1362 % (short(n[0]), short(n[1]))) |
1362 % (short(n[0]), short(n[1]))) |
1363 search.append(n[0:2]) # schedule branch range for scanning |
1363 search.append(n[0:2]) # schedule branch range for scanning |
1364 seenbranch[n] = 1 |
1364 seenbranch.add(n) |
1365 else: |
1365 else: |
1366 if n[1] not in seen and n[1] not in fetch: |
1366 if n[1] not in seen and n[1] not in fetch: |
1367 if n[2] in m and n[3] in m: |
1367 if n[2] in m and n[3] in m: |
1368 self.ui.debug(_("found new changeset %s\n") % |
1368 self.ui.debug(_("found new changeset %s\n") % |
1369 short(n[1])) |
1369 short(n[1])) |
1370 fetch[n[1]] = 1 # earliest unknown |
1370 fetch.add(n[1]) # earliest unknown |
1371 for p in n[2:4]: |
1371 for p in n[2:4]: |
1372 if p in m: |
1372 if p in m: |
1373 base[p] = 1 # latest known |
1373 base[p] = 1 # latest known |
1374 |
1374 |
1375 for p in n[2:4]: |
1375 for p in n[2:4]: |
1376 if p not in req and p not in m: |
1376 if p not in req and p not in m: |
1377 r.append(p) |
1377 r.append(p) |
1378 req.add(p) |
1378 req.add(p) |
1379 seen[n[0]] = 1 |
1379 seen.add(n[0]) |
1380 |
1380 |
1381 if r: |
1381 if r: |
1382 reqcnt += 1 |
1382 reqcnt += 1 |
1383 self.ui.debug(_("request %d: %s\n") % |
1383 self.ui.debug(_("request %d: %s\n") % |
1384 (reqcnt, " ".join(map(short, r)))) |
1384 (reqcnt, " ".join(map(short, r)))) |
1400 self.ui.debug(_("narrowing %d:%d %s\n") % (f, len(l), short(i))) |
1400 self.ui.debug(_("narrowing %d:%d %s\n") % (f, len(l), short(i))) |
1401 if i in m: |
1401 if i in m: |
1402 if f <= 2: |
1402 if f <= 2: |
1403 self.ui.debug(_("found new branch changeset %s\n") % |
1403 self.ui.debug(_("found new branch changeset %s\n") % |
1404 short(p)) |
1404 short(p)) |
1405 fetch[p] = 1 |
1405 fetch.add(p) |
1406 base[i] = 1 |
1406 base[i] = 1 |
1407 else: |
1407 else: |
1408 self.ui.debug(_("narrowed branch search to %s:%s\n") |
1408 self.ui.debug(_("narrowed branch search to %s:%s\n") |
1409 % (short(p), short(i))) |
1409 % (short(p), short(i))) |
1410 newsearch.append((p, i)) |
1410 newsearch.append((p, i)) |
1411 break |
1411 break |
1412 p, f = i, f * 2 |
1412 p, f = i, f * 2 |
1413 search = newsearch |
1413 search = newsearch |
1414 |
1414 |
1415 # sanity check our fetch list |
1415 # sanity check our fetch list |
1416 for f in fetch.keys(): |
1416 for f in fetch: |
1417 if f in m: |
1417 if f in m: |
1418 raise error.RepoError(_("already have changeset ") |
1418 raise error.RepoError(_("already have changeset ") |
1419 + short(f[:4])) |
1419 + short(f[:4])) |
1420 |
1420 |
1421 if base.keys() == [nullid]: |
1421 if base.keys() == [nullid]: |
1427 self.ui.debug(_("found new changesets starting at ") + |
1427 self.ui.debug(_("found new changesets starting at ") + |
1428 " ".join([short(f) for f in fetch]) + "\n") |
1428 " ".join([short(f) for f in fetch]) + "\n") |
1429 |
1429 |
1430 self.ui.debug(_("%d total queries\n") % reqcnt) |
1430 self.ui.debug(_("%d total queries\n") % reqcnt) |
1431 |
1431 |
1432 return base.keys(), fetch.keys(), heads |
1432 return base.keys(), list(fetch), heads |
1433 |
1433 |
1434 def findoutgoing(self, remote, base=None, heads=None, force=False): |
1434 def findoutgoing(self, remote, base=None, heads=None, force=False): |
1435 """Return list of nodes that are roots of subsets not in remote |
1435 """Return list of nodes that are roots of subsets not in remote |
1436 |
1436 |
1437 If base dict is specified, assume that these nodes and their parents |
1437 If base dict is specified, assume that these nodes and their parents |