This is an archive of the discontinued Mercurial Phabricator instance.

subrepo: fix a crash when archiving an svn or git subrepo
ClosedPublic

Authored by mharbison72 on Dec 24 2019, 2:03 AM.

Details

Summary

Only hgsubrepos have a repository attribute. This is pretty hacky, but probably
the best we can do on stable. Pushing the lfstatus check down into the wrapper
for hgsubrepo (and dropping the check for lfstatus at the top of
hgsubrepoarchive()) resulted in various test failures because:

  1. hgsubrepoarchive isn't returning the number of files archived at the bottom, resulting in an error about += NoneType
  2. These copypasta archive wrappers don't use progress bars
  3. Largefiles are *not* currently archived when using extdiff (68822b7cdd01), but pushing this context manager down into the subrepo resulted in it apparently doing so (as evidenced by progress bars being dropped)

The other uses of lfstatus() are not in the substate processing loop, so they
shouldn't be an issue.

I initially put testcases in this test for largefiles-{on,off}, and it flagged
a bunch of exit code differences for cat and diff, so I backed that off.

Diff Detail

Repository
rHG Mercurial
Lint
Automatic diff as part of commit; lint not applicable.
Unit
Automatic diff as part of commit; unit tests not applicable.

Event Timeline

mharbison72 created this revision.Dec 24 2019, 2:03 AM
This revision was not accepted when it landed; it landed in state Needs Review.
This revision was automatically updated to reflect the committed changes.