diff --git a/hgext/largefiles/overrides.py b/hgext/largefiles/overrides.py --- a/hgext/largefiles/overrides.py +++ b/hgext/largefiles/overrides.py @@ -179,6 +179,11 @@ def remove_largefiles(ui, repo, *pats, * # matcher which matches only the normal files and runs the original # version of add. def override_add(orig, ui, repo, *pats, **opts): + normal = opts.pop('normal') + if normal: + if opts.get('large'): + raise util.Abort(_('--normal cannot be used with --large')) + return orig(ui, repo, *pats, **opts) bad = add_largefiles(ui, repo, *pats, **opts) installnormalfilesmatchfn(repo[None].manifest()) result = orig(ui, repo, *pats, **opts) diff --git a/hgext/largefiles/uisetup.py b/hgext/largefiles/uisetup.py --- a/hgext/largefiles/uisetup.py +++ b/hgext/largefiles/uisetup.py @@ -23,6 +23,7 @@ def uisetup(ui): entry = extensions.wrapcommand(commands.table, 'add', overrides.override_add) addopt = [('', 'large', None, _('add as largefile')), + ('', 'normal', None, _('add as normal file')), ('', 'lfsize', '', _('add all files above this size ' '(in megabytes) as largefiles ' '(default: 10)'))] diff --git a/tests/test-largefiles.t b/tests/test-largefiles.t --- a/tests/test-largefiles.t +++ b/tests/test-largefiles.t @@ -768,7 +768,18 @@ Test that renaming a largefile results i $ hg st A sub2/large6-renamed R sub2/large6 - $ cd ../.. + $ cd .. + +Test --normal flag + + $ dd if=/dev/urandom bs=2k count=11k > new-largefile 2> /dev/null + $ hg add --normal --large new-largefile + abort: --normal cannot be used with --large + [255] + $ hg add --normal new-largefile + new-largefile: up to 69 MB of RAM may be required to manage this file + (use 'hg revert new-largefile' to cancel the pending addition) + $ cd .. vanilla clients not locked out from largefiles servers on vanilla repos $ mkdir r1