[PATCH] largefiles: makes verify to work on local content by default (issue4242) (BC)

Sean Farley sean at farley.io
Thu Mar 17 15:45:45 EDT 2016


Piotr Listkiewicz <piotr.listkiewicz at gmail.com> writes:

>>
>> I re-read the code, and it seems you get the point. Perhaps "local" has two
>> different meanings:
>>  a) a repository alongside the current working directory
>>  b) repositories that are stored in local filesystem (includes (a))
>> New "--remote" options switches (a), and "--lfc" seems to work only for
>> (b).
>> So "--lfc" (without --remote) should always work. On the other hand,
>> "--lfc --remote" won't work if the peer repository is stored remotely.
>> Should we raise error in that case? I don't know...
>
>
> I checked this once again, and before this patch --lfc works even weirder
> than i thought.  So how --lfc works depends on how value
> default/default-push in hgrc is specified. The cases are:
>
> 1) there is no default or is sth wrong with default
> --lfc works as expected, checks locally existence and content
> in code this is localrepo with remote set to repo we invoke the command
>
> 2) default is pointing at repository on local file system (default starts
> with file:")
>
> --lfc checks file existence and content but on the repository pointed by
> default(not on the repository the command was invoked)
>
> in code this is localrepo with remote set to repo pointed by default
>
> 3) default is pointing by http on some place on web
>
> --lfc checks file existence but not content.
>
> in code this is wirestore with remote set to repo pointed by default
>
> What is more, --large and --lfa also choose repository to check in this
> strange way. Option --lfc by design wasn't prepared to work on remote
> repository, because authors thought that it was too expensive to enable it.
> For now there are several different paths to resolve it:
>
> 1) makes --large, --lfa, --lfc do checks locally by default, with --remote
> checks on remote and we accept that --lfc is expensive operation on remote
> repo. In my view that would be what user expects
>
> 2) makes --large, --lfa do checks by default, with --remote checks on
> remote(with remote we mean outside of repository, it can be on the same
> machine). Option --lfc always would be doing local checks, with --remote it
> would abort msg  "cannot --lfc and --remote at the same time".
>
> However from the point of current implementation it cant be handled so
> easily because wirestore doesn't do any content check, localstore is doing
> no matter if remote is the same repository or other repository on the same
> machine.
>
> 3) makes --large, --lfa, --lfc do checks only locally
>
> In my view current behaviour is so weird that choosing any alternative
> would be step in good direction. What do you suggest?

Mads, have you seen this?


More information about the Mercurial-devel mailing list