Show More
@@ -382,14 +382,16 b' class pulloperation(object):' | |||||
382 | afterward. |
|
382 | afterward. | |
383 | """ |
|
383 | """ | |
384 |
|
384 | |||
385 | def __init__(self, repo, remote): |
|
385 | def __init__(self, repo, remote, heads=None): | |
386 | # repo we pull from |
|
386 | # repo we pull from | |
387 | self.repo = repo |
|
387 | self.repo = repo | |
388 | # repo we pull to |
|
388 | # repo we pull to | |
389 | self.remote = remote |
|
389 | self.remote = remote | |
|
390 | # revision we try to pull (None is "all") | |||
|
391 | self.heads = heads | |||
390 |
|
392 | |||
391 | def pull(repo, remote, heads=None, force=False): |
|
393 | def pull(repo, remote, heads=None, force=False): | |
392 | pullop = pulloperation(repo, remote) |
|
394 | pullop = pulloperation(repo, remote, heads) | |
393 | if pullop.remote.local(): |
|
395 | if pullop.remote.local(): | |
394 | missing = set(pullop.remote.requirements) - pullop.repo.supported |
|
396 | missing = set(pullop.remote.requirements) - pullop.repo.supported | |
395 | if missing: |
|
397 | if missing: | |
@@ -406,43 +408,46 b' def pull(repo, remote, heads=None, force' | |||||
406 | try: |
|
408 | try: | |
407 | tmp = discovery.findcommonincoming(pullop.repo.unfiltered(), |
|
409 | tmp = discovery.findcommonincoming(pullop.repo.unfiltered(), | |
408 | pullop.remote, |
|
410 | pullop.remote, | |
409 |
heads=heads, |
|
411 | heads=pullop.heads, | |
|
412 | force=force) | |||
410 | common, fetch, rheads = tmp |
|
413 | common, fetch, rheads = tmp | |
411 | if not fetch: |
|
414 | if not fetch: | |
412 | pullop.repo.ui.status(_("no changes found\n")) |
|
415 | pullop.repo.ui.status(_("no changes found\n")) | |
413 | result = 0 |
|
416 | result = 0 | |
414 | else: |
|
417 | else: | |
415 | tr = pullop.repo.transaction(trname) |
|
418 | tr = pullop.repo.transaction(trname) | |
416 | if heads is None and list(common) == [nullid]: |
|
419 | if pullop.heads is None and list(common) == [nullid]: | |
417 | pullop.repo.ui.status(_("requesting all changes\n")) |
|
420 | pullop.repo.ui.status(_("requesting all changes\n")) | |
418 | elif heads is None and pullop.remote.capable('changegroupsubset'): |
|
421 | elif (pullop.heads is None | |
|
422 | and pullop.remote.capable('changegroupsubset')): | |||
419 | # issue1320, avoid a race if remote changed after discovery |
|
423 | # issue1320, avoid a race if remote changed after discovery | |
420 | heads = rheads |
|
424 | pullop.heads = rheads | |
421 |
|
425 | |||
422 | if pullop.remote.capable('getbundle'): |
|
426 | if pullop.remote.capable('getbundle'): | |
423 | # TODO: get bundlecaps from remote |
|
427 | # TODO: get bundlecaps from remote | |
424 | cg = pullop.remote.getbundle('pull', common=common, |
|
428 | cg = pullop.remote.getbundle('pull', common=common, | |
425 | heads=heads or rheads) |
|
429 | heads=pullop.heads or rheads) | |
426 | elif heads is None: |
|
430 | elif pullop.heads is None: | |
427 | cg = pullop.remote.changegroup(fetch, 'pull') |
|
431 | cg = pullop.remote.changegroup(fetch, 'pull') | |
428 | elif not pullop.remote.capable('changegroupsubset'): |
|
432 | elif not pullop.remote.capable('changegroupsubset'): | |
429 | raise util.Abort(_("partial pull cannot be done because " |
|
433 | raise util.Abort(_("partial pull cannot be done because " | |
430 | "other repository doesn't support " |
|
434 | "other repository doesn't support " | |
431 | "changegroupsubset.")) |
|
435 | "changegroupsubset.")) | |
432 | else: |
|
436 | else: | |
433 |
cg = pullop.remote.changegroupsubset(fetch, heads, |
|
437 | cg = pullop.remote.changegroupsubset(fetch, pullop.heads, | |
|
438 | 'pull') | |||
434 | result = pullop.repo.addchangegroup(cg, 'pull', |
|
439 | result = pullop.repo.addchangegroup(cg, 'pull', | |
435 | pullop.remote.url()) |
|
440 | pullop.remote.url()) | |
436 |
|
441 | |||
437 | # compute target subset |
|
442 | # compute target subset | |
438 | if heads is None: |
|
443 | if pullop.heads is None: | |
439 | # We pulled every thing possible |
|
444 | # We pulled every thing possible | |
440 | # sync on everything common |
|
445 | # sync on everything common | |
441 | subset = common + rheads |
|
446 | subset = common + rheads | |
442 | else: |
|
447 | else: | |
443 | # We pulled a specific subset |
|
448 | # We pulled a specific subset | |
444 | # sync on this subset |
|
449 | # sync on this subset | |
445 | subset = heads |
|
450 | subset = pullop.heads | |
446 |
|
451 | |||
447 | # Get remote phases data from remote |
|
452 | # Get remote phases data from remote | |
448 | remotephases = pullop.remote.listkeys('phases') |
|
453 | remotephases = pullop.remote.listkeys('phases') |
General Comments 0
You need to be logged in to leave comments.
Login now