##// END OF EJS Templates
bundle: support multiple destinations...
marmoute -
r47710:946db896 default
parent child Browse files
Show More
@@ -382,7 +382,10 b' def _getbundle(repo, dest, **opts):'
382 if btype:
382 if btype:
383 opts['type'] = btype
383 opts['type'] = btype
384 try:
384 try:
385 commands.bundle(ui, repo, tmpfn, dest, **opts)
385 dests = []
386 if dest:
387 dests = [dest]
388 commands.bundle(ui, repo, tmpfn, *dests, **opts)
386 return util.readfile(tmpfn)
389 return util.readfile(tmpfn)
387 finally:
390 finally:
388 try:
391 try:
@@ -1531,10 +1531,10 b' def branches(ui, repo, active=False, clo'
1531 ),
1531 ),
1532 ]
1532 ]
1533 + remoteopts,
1533 + remoteopts,
1534 _(b'[-f] [-t BUNDLESPEC] [-a] [-r REV]... [--base REV]... FILE [DEST]'),
1534 _(b'[-f] [-t BUNDLESPEC] [-a] [-r REV]... [--base REV]... FILE [DEST]...'),
1535 helpcategory=command.CATEGORY_IMPORT_EXPORT,
1535 helpcategory=command.CATEGORY_IMPORT_EXPORT,
1536 )
1536 )
1537 def bundle(ui, repo, fname, dest=None, **opts):
1537 def bundle(ui, repo, fname, *dests, **opts):
1538 """create a bundle file
1538 """create a bundle file
1539
1539
1540 Generate a bundle file containing data to be transferred to another
1540 Generate a bundle file containing data to be transferred to another
@@ -1545,7 +1545,7 b' def bundle(ui, repo, fname, dest=None, *'
1545 all the nodes you specify with --base parameters. Otherwise, hg
1545 all the nodes you specify with --base parameters. Otherwise, hg
1546 will assume the repository has all the nodes in destination, or
1546 will assume the repository has all the nodes in destination, or
1547 default-push/default if no destination is specified, where destination
1547 default-push/default if no destination is specified, where destination
1548 is the repository you provide through DEST option.
1548 is the repositories you provide through DEST option.
1549
1549
1550 You can change bundle format with the -t/--type option. See
1550 You can change bundle format with the -t/--type option. See
1551 :hg:`help bundlespec` for documentation on this format. By default,
1551 :hg:`help bundlespec` for documentation on this format. By default,
@@ -1590,9 +1590,9 b' def bundle(ui, repo, fname, dest=None, *'
1590 )
1590 )
1591
1591
1592 if opts.get(b'all'):
1592 if opts.get(b'all'):
1593 if dest:
1593 if dests:
1594 raise error.InputError(
1594 raise error.InputError(
1595 _(b"--all is incompatible with specifying a destination")
1595 _(b"--all is incompatible with specifying destinations")
1596 )
1596 )
1597 if opts.get(b'base'):
1597 if opts.get(b'base'):
1598 ui.warn(_(b"ignoring --base because --all was specified\n"))
1598 ui.warn(_(b"ignoring --base because --all was specified\n"))
@@ -1605,31 +1605,54 b' def bundle(ui, repo, fname, dest=None, *'
1605 )
1605 )
1606
1606
1607 if base:
1607 if base:
1608 if dest:
1608 if dests:
1609 raise error.InputError(
1609 raise error.InputError(
1610 _(b"--base is incompatible with specifying a destination")
1610 _(b"--base is incompatible with specifying destinations")
1611 )
1611 )
1612 common = [repo[rev].node() for rev in base]
1612 common = [repo[rev].node() for rev in base]
1613 heads = [repo[r].node() for r in revs] if revs else None
1613 heads = [repo[r].node() for r in revs] if revs else None
1614 outgoing = discovery.outgoing(repo, common, heads)
1614 outgoing = discovery.outgoing(repo, common, heads)
1615 missing = outgoing.missing
1616 excluded = outgoing.excluded
1615 else:
1617 else:
1616 dest = ui.expandpath(dest or b'default-push', dest or b'default')
1618 missing = set()
1617 dest, branches = urlutil.parseurl(dest, opts.get(b'branch'))
1619 excluded = set()
1618 other = hg.peer(repo, opts, dest)
1620 for path in urlutil.get_push_paths(repo, ui, dests):
1619 revs = [repo[r].hex() for r in revs]
1621 other = hg.peer(repo, opts, path.rawloc)
1620 revs, checkout = hg.addbranchrevs(repo, repo, branches, revs)
1622 if revs is not None:
1621 heads = revs and pycompat.maplist(repo.lookup, revs) or revs
1623 hex_revs = [repo[r].hex() for r in revs]
1622 outgoing = discovery.findcommonoutgoing(
1624 else:
1623 repo,
1625 hex_revs = None
1624 other,
1626 branches = (path.branch, [])
1625 onlyheads=heads,
1627 head_revs, checkout = hg.addbranchrevs(
1626 force=opts.get(b'force'),
1628 repo, repo, branches, hex_revs
1627 portable=True,
1629 )
1630 heads = (
1631 head_revs
1632 and pycompat.maplist(repo.lookup, head_revs)
1633 or head_revs
1634 )
1635 outgoing = discovery.findcommonoutgoing(
1636 repo,
1637 other,
1638 onlyheads=heads,
1639 force=opts.get(b'force'),
1640 portable=True,
1641 )
1642 missing.update(outgoing.missing)
1643 excluded.update(outgoing.excluded)
1644
1645 if not missing:
1646 scmutil.nochangesfound(ui, repo, not base and excluded)
1647 return 1
1648
1649 if heads:
1650 outgoing = discovery.outgoing(
1651 repo, missingroots=missing, ancestorsof=heads
1628 )
1652 )
1629
1653 else:
1630 if not outgoing.missing:
1654 outgoing = discovery.outgoing(repo, missingroots=missing)
1631 scmutil.nochangesfound(ui, repo, not base and outgoing.excluded)
1655 outgoing.excluded = sorted(excluded)
1632 return 1
1633
1656
1634 if cgversion == b'01': # bundle1
1657 if cgversion == b'01': # bundle1
1635 bversion = b'HG10' + bundlespec.wirecompression
1658 bversion = b'HG10' + bundlespec.wirecompression
@@ -171,14 +171,15 b''
171 should fail
171 should fail
172
172
173 $ hg -R test bundle --base 2 -r tip test-bundle-branch1.hg test-3
173 $ hg -R test bundle --base 2 -r tip test-bundle-branch1.hg test-3
174 abort: --base is incompatible with specifying a destination
174 abort: --base is incompatible with specifying destinations
175 [10]
175 [10]
176 $ hg -R test bundle -a -r tip test-bundle-branch1.hg test-3
176 $ hg -R test bundle -a -r tip test-bundle-branch1.hg test-3
177 abort: --all is incompatible with specifying a destination
177 abort: --all is incompatible with specifying destinations
178 [10]
178 [10]
179 $ hg -R test bundle -r tip test-bundle-branch1.hg
179 $ hg -R test bundle -r tip test-bundle-branch1.hg
180 abort: repository default-push not found
180 config error: default repository not configured!
181 [255]
181 (see 'hg help config.paths')
182 [30]
182
183
183 $ hg -R test bundle --base 2 -r tip test-bundle-branch1.hg
184 $ hg -R test bundle --base 2 -r tip test-bundle-branch1.hg
184 2 changesets found
185 2 changesets found
@@ -170,6 +170,11 b' push'
170 date: Thu Jan 01 00:00:00 1970 +0000
170 date: Thu Jan 01 00:00:00 1970 +0000
171 summary: C
171 summary: C
172
172
173 $ hg bundle -R test-repo-bare bundle.hg ./branch-E-push ./branch-G-push ./branch-H-push
174 searching for changes
175 searching for changes
176 searching for changes
177 6 changesets found
173 $ hg push --force -R test-repo-bare ./branch-E-push ./branch-G-push ./branch-H-push
178 $ hg push --force -R test-repo-bare ./branch-E-push ./branch-G-push ./branch-H-push
174 pushing to ./branch-E-push
179 pushing to ./branch-E-push
175 searching for changes
180 searching for changes
@@ -351,6 +356,11 b' We only push a specific branch with --re'
351 date: Thu Jan 01 00:00:00 1970 +0000
356 date: Thu Jan 01 00:00:00 1970 +0000
352 summary: C
357 summary: C
353
358
359 $ hg bundle -R test-repo-bare bundle.hg ./branch-E-push ./branch-G-push ./branch-H-push --rev default
360 searching for changes
361 searching for changes
362 searching for changes
363 2 changesets found
354 $ hg push --force -R test-repo-bare ./branch-E-push ./branch-G-push ./branch-H-push --rev default
364 $ hg push --force -R test-repo-bare ./branch-E-push ./branch-G-push ./branch-H-push --rev default
355 pushing to ./branch-E-push
365 pushing to ./branch-E-push
356 searching for changes
366 searching for changes
@@ -429,6 +439,11 b' Same push, but the first one is a no-op'
429 date: Thu Jan 01 00:00:00 1970 +0000
439 date: Thu Jan 01 00:00:00 1970 +0000
430 summary: C
440 summary: C
431
441
442 $ hg bundle -R test-repo-bare bundle.hg ./branch-G-push ./branch-H-push ./branch-E-push --rev default
443 searching for changes
444 searching for changes
445 searching for changes
446 2 changesets found
432 $ hg push --force -R test-repo-bare ./branch-G-push ./branch-H-push ./branch-E-push --rev default
447 $ hg push --force -R test-repo-bare ./branch-G-push ./branch-H-push ./branch-E-push --rev default
433 pushing to ./branch-G-push
448 pushing to ./branch-G-push
434 searching for changes
449 searching for changes
General Comments 0
You need to be logged in to leave comments. Login now