diff --git a/hgext/largefiles/overrides.py b/hgext/largefiles/overrides.py index 363e808de3496653d93690718149329467d2f078_aGdleHQvbGFyZ2VmaWxlcy9vdmVycmlkZXMucHk=..12dabc22de77cabe32f932b5fe093ab6bac21f18_aGdleHQvbGFyZ2VmaWxlcy9vdmVycmlkZXMucHk= 100644 --- a/hgext/largefiles/overrides.py +++ b/hgext/largefiles/overrides.py @@ -202,6 +202,13 @@ restorematchfn() removelargefiles(ui, repo, *pats, **opts) +def overridestatusfn(orig, repo, rev2, **opts): + try: + repo._repo.lfstatus = True + return orig(repo, rev2, **opts) + finally: + repo._repo.lfstatus = False + def overridestatus(orig, ui, repo, *pats, **opts): try: repo.lfstatus = True diff --git a/hgext/largefiles/uisetup.py b/hgext/largefiles/uisetup.py index 363e808de3496653d93690718149329467d2f078_aGdleHQvbGFyZ2VmaWxlcy91aXNldHVwLnB5..12dabc22de77cabe32f932b5fe093ab6bac21f18_aGdleHQvbGFyZ2VmaWxlcy91aXNldHVwLnB5 100644 --- a/hgext/largefiles/uisetup.py +++ b/hgext/largefiles/uisetup.py @@ -12,6 +12,7 @@ httprepo, localrepo, merge, sshrepo, sshserver, wireproto from mercurial.i18n import _ from mercurial.hgweb import hgweb_mod, protocol, webcommands +from mercurial.subrepo import hgsubrepo import overrides import proto @@ -35,5 +36,7 @@ overrides.overrideremove) entry = extensions.wrapcommand(commands.table, 'forget', overrides.overrideforget) + + # Subrepos call status function entry = extensions.wrapcommand(commands.table, 'status', overrides.overridestatus) @@ -38,5 +41,8 @@ entry = extensions.wrapcommand(commands.table, 'status', overrides.overridestatus) + entry = extensions.wrapfunction(hgsubrepo, 'status', + overrides.overridestatusfn) + entry = extensions.wrapcommand(commands.table, 'log', overrides.overridelog) entry = extensions.wrapcommand(commands.table, 'rollback', diff --git a/tests/test-largefiles.t b/tests/test-largefiles.t index 363e808de3496653d93690718149329467d2f078_dGVzdHMvdGVzdC1sYXJnZWZpbGVzLnQ=..12dabc22de77cabe32f932b5fe093ab6bac21f18_dGVzdHMvdGVzdC1sYXJnZWZpbGVzLnQ= 100644 --- a/tests/test-largefiles.t +++ b/tests/test-largefiles.t @@ -1050,5 +1050,29 @@ date: Thu Jan 01 00:00:00 1970 +0000 summary: add files - +verify that large files in subrepos handled properly + $ hg init subrepo + $ echo "subrepo = subrepo" > .hgsub + $ hg add .hgsub + $ hg ci -m "add subrepo" + Invoking status precommit hook + A .hgsub + ? .hgsubstate + $ echo "rev 1" > subrepo/large.txt + $ hg -R subrepo add --large subrepo/large.txt + $ hg st + $ hg st -S + A subrepo/large.txt +# This is a workaround for not noticing the subrepo is dirty + $ hg -R subrepo ci -m "commit large file" + Invoking status precommit hook + A large.txt + $ hg ci -S -m "commit top repo" + Invoking status precommit hook + M .hgsubstate + $ hg st -S + $ echo "rev 2" > subrepo/large.txt + $ hg st -S + M subrepo/large.txt + $ cd ..