hgext/narrow/narrowcommands.py
changeset 45372 77b8588dd84e
parent 43523 c21aca51b392
child 46113 59fa3890d40a
equal deleted inserted replaced
45371:e58e234096de 45372:77b8588dd84e
    25     pathutil,
    25     pathutil,
    26     pycompat,
    26     pycompat,
    27     registrar,
    27     registrar,
    28     repair,
    28     repair,
    29     repoview,
    29     repoview,
       
    30     requirements,
    30     sparse,
    31     sparse,
    31     util,
    32     util,
    32     wireprototypes,
    33     wireprototypes,
    33 )
    34 )
    34 from mercurial.interfaces import repository
       
    35 
    35 
    36 table = {}
    36 table = {}
    37 command = registrar.command(table)
    37 command = registrar.command(table)
    38 
    38 
    39 
    39 
   131 
   131 
   132 
   132 
   133 def pullnarrowcmd(orig, ui, repo, *args, **opts):
   133 def pullnarrowcmd(orig, ui, repo, *args, **opts):
   134     """Wraps pull command to allow modifying narrow spec."""
   134     """Wraps pull command to allow modifying narrow spec."""
   135     wrappedextraprepare = util.nullcontextmanager()
   135     wrappedextraprepare = util.nullcontextmanager()
   136     if repository.NARROW_REQUIREMENT in repo.requirements:
   136     if requirements.NARROW_REQUIREMENT in repo.requirements:
   137 
   137 
   138         def pullbundle2extraprepare_widen(orig, pullop, kwargs):
   138         def pullbundle2extraprepare_widen(orig, pullop, kwargs):
   139             orig(pullop, kwargs)
   139             orig(pullop, kwargs)
   140             if opts.get('depth'):
   140             if opts.get('depth'):
   141                 kwargs[b'depth'] = opts['depth']
   141                 kwargs[b'depth'] = opts['depth']
   148         return orig(ui, repo, *args, **opts)
   148         return orig(ui, repo, *args, **opts)
   149 
   149 
   150 
   150 
   151 def archivenarrowcmd(orig, ui, repo, *args, **opts):
   151 def archivenarrowcmd(orig, ui, repo, *args, **opts):
   152     """Wraps archive command to narrow the default includes."""
   152     """Wraps archive command to narrow the default includes."""
   153     if repository.NARROW_REQUIREMENT in repo.requirements:
   153     if requirements.NARROW_REQUIREMENT in repo.requirements:
   154         repo_includes, repo_excludes = repo.narrowpats
   154         repo_includes, repo_excludes = repo.narrowpats
   155         includes = set(opts.get('include', []))
   155         includes = set(opts.get('include', []))
   156         excludes = set(opts.get('exclude', []))
   156         excludes = set(opts.get('exclude', []))
   157         includes, excludes, unused_invalid = narrowspec.restrictpatterns(
   157         includes, excludes, unused_invalid = narrowspec.restrictpatterns(
   158             includes, excludes, repo_includes, repo_excludes
   158             includes, excludes, repo_includes, repo_excludes
   164     return orig(ui, repo, *args, **opts)
   164     return orig(ui, repo, *args, **opts)
   165 
   165 
   166 
   166 
   167 def pullbundle2extraprepare(orig, pullop, kwargs):
   167 def pullbundle2extraprepare(orig, pullop, kwargs):
   168     repo = pullop.repo
   168     repo = pullop.repo
   169     if repository.NARROW_REQUIREMENT not in repo.requirements:
   169     if requirements.NARROW_REQUIREMENT not in repo.requirements:
   170         return orig(pullop, kwargs)
   170         return orig(pullop, kwargs)
   171 
   171 
   172     if wireprototypes.NARROWCAP not in pullop.remote.capabilities():
   172     if wireprototypes.NARROWCAP not in pullop.remote.capabilities():
   173         raise error.Abort(_(b"server does not support narrow clones"))
   173         raise error.Abort(_(b"server does not support narrow clones"))
   174     orig(pullop, kwargs)
   174     orig(pullop, kwargs)
   480     --import-rules accepts a path to a file containing rules, allowing you to
   480     --import-rules accepts a path to a file containing rules, allowing you to
   481     add --addinclude, --addexclude rules in bulk. Like the other include and
   481     add --addinclude, --addexclude rules in bulk. Like the other include and
   482     exclude switches, the changes are applied immediately.
   482     exclude switches, the changes are applied immediately.
   483     """
   483     """
   484     opts = pycompat.byteskwargs(opts)
   484     opts = pycompat.byteskwargs(opts)
   485     if repository.NARROW_REQUIREMENT not in repo.requirements:
   485     if requirements.NARROW_REQUIREMENT not in repo.requirements:
   486         raise error.Abort(
   486         raise error.Abort(
   487             _(
   487             _(
   488                 b'the tracked command is only supported on '
   488                 b'the tracked command is only supported on '
   489                 b'repositories cloned with --narrow'
   489                 b'repositories cloned with --narrow'
   490             )
   490             )