mirror of
https://github.com/facebook/sapling.git
synced 2024-10-07 07:17:55 +03:00
largefiles: enable subrepo support for forget
This commit is contained in:
parent
f534500188
commit
6d2831411e
@ -972,12 +972,10 @@ def overridebailifchanged(orig, repo):
|
||||
if s.modified or s.added or s.removed or s.deleted:
|
||||
raise util.Abort(_('uncommitted changes'))
|
||||
|
||||
def overrideforget(orig, ui, repo, *pats, **opts):
|
||||
installnormalfilesmatchfn(repo[None].manifest())
|
||||
result = orig(ui, repo, *pats, **opts)
|
||||
restorematchfn()
|
||||
m = composelargefilematcher(scmutil.match(repo[None], pats, opts),
|
||||
repo[None].manifest())
|
||||
def cmdutilforget(orig, ui, repo, match, prefix, explicitonly):
|
||||
normalmatcher = composenormalfilematcher(match, repo[None].manifest())
|
||||
bad, forgot = orig(ui, repo, normalmatcher, prefix, explicitonly)
|
||||
m = composelargefilematcher(match, repo[None].manifest())
|
||||
|
||||
try:
|
||||
repo.lfstatus = True
|
||||
@ -992,7 +990,7 @@ def overrideforget(orig, ui, repo, *pats, **opts):
|
||||
repo.wvfs.isdir(lfutil.standin(f)):
|
||||
ui.warn(_('not removing %s: file is already untracked\n')
|
||||
% m.rel(f))
|
||||
result = 1
|
||||
bad.append(f)
|
||||
|
||||
for f in forget:
|
||||
if ui.verbose or not m.exact(f):
|
||||
@ -1012,11 +1010,13 @@ def overrideforget(orig, ui, repo, *pats, **opts):
|
||||
standins = [lfutil.standin(f) for f in forget]
|
||||
for f in standins:
|
||||
util.unlinkpath(repo.wjoin(f), ignoremissing=True)
|
||||
repo[None].forget(standins)
|
||||
rejected = repo[None].forget(standins)
|
||||
finally:
|
||||
wlock.release()
|
||||
|
||||
return result
|
||||
bad.extend(f for f in rejected if f in m.files())
|
||||
forgot.extend(f for f in forget if f not in rejected)
|
||||
return bad, forgot
|
||||
|
||||
def _getoutgoings(repo, other, missing, addfunc):
|
||||
"""get pairs of filename and largefile hash in outgoing revisions
|
||||
|
@ -34,8 +34,7 @@ def uisetup(ui):
|
||||
entry = extensions.wrapfunction(scmutil, 'addremove',
|
||||
overrides.scmutiladdremove)
|
||||
extensions.wrapfunction(cmdutil, 'remove', overrides.cmdutilremove)
|
||||
entry = extensions.wrapcommand(commands.table, 'forget',
|
||||
overrides.overrideforget)
|
||||
extensions.wrapfunction(cmdutil, 'forget', overrides.cmdutilforget)
|
||||
|
||||
# Subrepos call status function
|
||||
entry = extensions.wrapcommand(commands.table, 'status',
|
||||
|
@ -323,4 +323,25 @@ Find an exact match to a standin (should archive nothing)
|
||||
$ hg --config extensions.largefiles= archive -S -I 'sub/sub2/.hglf/large.bin' ../archive_lf
|
||||
$ find ../archive_lf 2> /dev/null | sort
|
||||
|
||||
$ cat >> $HGRCPATH <<EOF
|
||||
> [extensions]
|
||||
> largefiles=
|
||||
> EOF
|
||||
|
||||
Test forget through a deep subrepo with the largefiles extension, both a
|
||||
largefile and a normal file. Then a largefile that hasn't been committed yet.
|
||||
$ touch sub1/sub2/untracked.txt
|
||||
$ hg forget sub1/sub2/large.bin sub1/sub2/test.txt sub1/sub2/untracked.txt
|
||||
not removing sub1/sub2/untracked.txt: file is already untracked (glob)
|
||||
[1]
|
||||
$ hg add -v --large -R sub1/sub2 sub1/sub2/untracked.txt
|
||||
adding sub1/sub2/untracked.txt as a largefile (glob)
|
||||
$ hg forget -v sub1/sub2/untracked.txt
|
||||
removing sub1/sub2/untracked.txt (glob)
|
||||
$ hg status -S
|
||||
R sub1/sub2/large.bin
|
||||
R sub1/sub2/test.txt
|
||||
? foo/bar/abc
|
||||
? sub1/sub2/untracked.txt
|
||||
|
||||
$ cd ..
|
||||
|
Loading…
Reference in New Issue
Block a user