This revision now requires changes to proceed.
martinvonz added inline comments.
martinvonz requested changes to this revision.

INLINE COMMENTS

> files.rs:207-216
> +    let name = if !name.is_absolute() {
> +        root.join(&cwd).join(&name)
> +    } else {
> +        name.to_owned()
> +    };
> +    let mut auditor = PathAuditor::new(&root);
> +    if name != root && name.starts_with(&root) {

Might be worth having a fast path for when `name` is not absolute (including 
"") and neither `name` nor `cwd` contains "../"so we don't do `let name = 
root.join(&cwd).join(&name)` immediately followed by `let name = 
name.strip_prefix(&root).unwrap()`. Especially since that seems like the common 
case. Or can that ever produce different results? Anyway, that can be done 
later.

> files.rs:220-222
> +        // Determine whether `name' is in the hierarchy at or beneath `root',
> +        // by iterating name=name.parent() until that causes no change (can't
> +        // check name == '/', because that doesn't work on windows).

Is this accurate? It looks like we break when `name.parent() == None`.

> files.rs:227-230
> +                if name.components().next().is_none() {
> +                    // `name` was actually the same as root (maybe a symlink)
> +                    return Ok("".into());
> +                }

`name.components().next()` will be `None` only if `name` is something like "/", 
right? But then we shouldn't return "" (a repo-relative path), we should error 
out.

REPOSITORY
  rHG Mercurial

CHANGES SINCE LAST ACTION
  https://phab.mercurial-scm.org/D7871/new/

REVISION DETAIL
  https://phab.mercurial-scm.org/D7871

To: Alphare, #hg-reviewers, kevincox, martinvonz
Cc: martinvonz, durin42, kevincox, mercurial-devel
_______________________________________________
Mercurial-devel mailing list
Mercurial-devel@mercurial-scm.org
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel

Reply via email to