Skip to content

Conversation

Copy link
Contributor

Copilot AI commented Oct 28, 2025

Closes #649

Migrates path handling from std::path::{Path, PathBuf} to camino::{Utf8Path, Utf8PathBuf} for guaranteed UTF-8 paths, eliminating unnecessary lossy conversions.

Changes

Type system migration (200+ sites)

  • All path type signatures: PathUtf8Path, PathBufUtf8PathBuf
  • Import statements updated across 56 files
  • Global CWD converted to Utf8PathBuf

Simplified string conversions

  • Removed 60+ .display() calls - Utf8Path implements Display directly
  • Removed 15+ .to_string_lossy() calls - direct to_string() or as_str() available
  • Replaced .to_str() with .as_str() for extension/filename handling

External API boundaries

  • tempfile::TempDir::path(): Added Utf8Path::from_path() conversions
  • which::which/which_all: Convert results via Utf8PathBuf::from_path_buf()
  • std::fs::read_dir: Convert DirEntry::path() in installers
  • std::env::current_exe(): Convert to Utf8PathBuf where needed

Compatibility layer

  • archive.rs and fs.rs retain std::path for low-level operations (Component, path separators)
  • Functions like create_symlink_or_copy keep &Path signatures, callers use .as_std_path()

Example

Before:

let path: PathBuf = /* ... */;
format!("Path: {}", path.to_string_lossy())

After:

let path: Utf8PathBuf = /* ... */;
format!("Path: {}", path)  // Direct Display impl

Status

93% complete - 22 remaining errors in edge cases (PATH env splitting, trait bounds for generic path types).

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • dl.google.com
    • Triggering command: /home/REDACTED/work/prek/prek/target/debug/prek run -v (dns block)
    • Triggering command: /home/REDACTED/work/prek/prek/target/debug/prek run (dns block)
  • mirrors.aliyun.com
    • Triggering command: /home/REDACTED/work/prek/prek/target/debug/prek run (dns block)
    • Triggering command: /home/REDACTED/work/prek/prek/target/debug/prek install-hooks (dns block)
    • Triggering command: /home/REDACTED/work/prek/prek/target/debug/prek install --install-hooks (dns block)
  • mirrors.cloud.tencent.com
    • Triggering command: /home/REDACTED/work/prek/prek/target/debug/prek run (dns block)
    • Triggering command: /home/REDACTED/work/prek/prek/target/debug/prek install-hooks (dns block)
    • Triggering command: /home/REDACTED/work/prek/prek/target/debug/prek install --install-hooks (dns block)
  • pypi.tuna.tsinghua.edu.cn
    • Triggering command: /home/REDACTED/work/prek/prek/target/debug/prek run (dns block)
    • Triggering command: /home/REDACTED/work/prek/prek/target/debug/prek install-hooks (dns block)
    • Triggering command: /home/REDACTED/work/prek/prek/target/debug/prek install --install-hooks (dns block)

If you need me to access, download, or install something from one of these locations, you can either:

Original prompt

Replace all usage of Path and PathBuf to Utf8Path and Utf8PathBuf from camino crate.

Since Utf8Path and Utf8PathBuf can safely convert into String/&str, remove all uncesasry .to_string_lossy() calls.

The camino crate doc: https://docs.rs/camino/latest/camino/index.html


💬 We'd love your input! Share your thoughts on Copilot coding agent in our 2 minute survey.

Copilot AI and others added 4 commits October 28, 2025 09:22
- Add camino dependency to Cargo.toml
- Replace std::path imports with camino imports in 56+ files
- Update type annotations from Path/PathBuf to Utf8Path/Utf8PathBuf
- Replace Path::new() calls with Utf8Path::new()
- Convert CWD to Utf8PathBuf
- Remove unnecessary .to_string_lossy() and .display() calls
- Add conversions between std::path and camino where needed for compatibility

Co-authored-by: j178 <[email protected]>
- Remove remaining .display() calls on Utf8Path/Utf8PathBuf
- Add conversions from std::path::PathBuf to Utf8PathBuf where needed
- Handle which::which_all results (PathBuf to Utf8PathBuf conversion)
- Fix tempfile::TempDir path conversions throughout codebase
- Convert paths for fs-err and archive functions
- Update store.rs to handle UTF-8 path conversions

Co-authored-by: j178 <[email protected]>
…art 3

- Remove .display() calls from main.rs, clean.rs, completion.rs, install.rs, selector.rs, config.rs
- Fix .to_string_lossy() calls to use .to_string() for Utf8Path
- Fix .to_str() calls to use .as_str() for Utf8Path
- Update identify.rs to use Utf8Path methods directly (extension(), file_name())
- Fix meta_hooks.rs path conversions
- Convert std::env::current_exe() results to Utf8PathBuf

Co-authored-by: j178 <[email protected]>
- Convert which::which and which::which_all results from PathBuf to Utf8PathBuf
- Fix git.rs GIT static initialization
- Fix resolve_command in languages/mod.rs
- Handle which::which_all iterator conversion in uv.rs
- Fix installer.rs entry.path() conversions in golang, node, and lua
- Remove remaining .to_string_lossy() calls (process.rs, run.rs)
- Convert DirEntry paths to Utf8PathBuf in multiple installers

Co-authored-by: j178 <[email protected]>
Copilot AI changed the title [WIP] Replace Path and PathBuf with Utf8Path and Utf8PathBuf Replace std::path with camino for UTF-8 path handling Oct 28, 2025
Copilot AI requested a review from j178 October 28, 2025 09:43
Copilot finished work on behalf of j178 October 28, 2025 09:43
@codecov
Copy link

codecov bot commented Oct 28, 2025

Codecov Report

❌ Patch coverage is 92.79503% with 58 lines in your changes missing coverage. Please review.
✅ Project coverage is 90.06%. Comparing base (59b82c7) to head (66b1a7c).

Files with missing lines Patch % Lines
src/path.rs 91.52% 15 Missing ⚠️
src/languages/node/installer.rs 70.00% 6 Missing ⚠️
src/store.rs 71.42% 6 Missing ⚠️
src/languages/python/uv.rs 77.27% 5 Missing ⚠️
src/languages/golang/installer.rs 71.42% 4 Missing ⚠️
src/languages/mod.rs 83.33% 3 Missing ⚠️
...uiltin/pre_commit_hooks/fix_trailing_whitespace.rs 93.10% 2 Missing ⚠️
src/cli/hook_impl.rs 60.00% 2 Missing ⚠️
src/cli/run/filter.rs 93.93% 2 Missing ⚠️
src/fs.rs 33.33% 2 Missing ⚠️
... and 9 more
Additional details and impacted files
@@            Coverage Diff             @@
##           master     #984      +/-   ##
==========================================
+ Coverage   89.93%   90.06%   +0.12%     
==========================================
  Files          66       67       +1     
  Lines       12223    12377     +154     
==========================================
+ Hits        10993    11147     +154     
  Misses       1230     1230              

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@github-actions
Copy link

github-actions bot commented Oct 28, 2025

📦 Cargo Bloat Comparison

Binary size change: +0.62% (16.1 MiB → 16.2 MiB)

Expand for cargo-bloat output

Head Branch Results

 File  .text     Size          Crate Name
 0.6%   1.3% 101.4KiB          prek? <prek::cli::Command as clap_builder::derive::Subcommand>::augment_subcommands
 0.5%   1.1%  85.8KiB           prek prek::builtin::pre_commit_hooks::Implemented::run::{{closure}}
 0.5%   1.1%  85.7KiB           prek prek::languages::<impl prek::config::Language>::run::{{closure}}
 0.3%   0.7%  49.7KiB           prek prek::run::{{closure}}
 0.3%   0.6%  43.8KiB           prek prek::archive::unpack::{{closure}}
 0.3%   0.6%  43.1KiB           prek prek::languages::<impl prek::config::Language>::install::{{closure}}
 0.2%   0.5%  40.9KiB regex_automata regex_automata::meta::strategy::new
 0.2%   0.5%  40.1KiB          prek? <prek::cli::RunArgs as clap_builder::derive::Args>::augment_args
 0.2%   0.4%  33.4KiB           prek prek::workspace::Workspace::discover
 0.2%   0.4%  33.3KiB           prek prek::languages::node::installer::NodeInstaller::install::{{closure}}
 0.2%   0.4%  32.4KiB           prek prek::cli::run::run::run::{{closure}}
 0.2%   0.4%  31.8KiB             h2 h2::proto::connection::DynConnection<B>::recv_frame
 0.2%   0.4%  31.7KiB             h2 h2::proto::connection::Connection<T,P,B>::poll
 0.2%   0.4%  27.6KiB           prek prek::identify::by_extension::{{closure}}
 0.2%   0.3%  26.2KiB           prek prek::languages::golang::installer::GoInstaller::install::{{closure}}
 0.2%   0.3%  26.2KiB     hyper_util hyper_util::client::legacy::client::Client<C,B>::send_request::{{closure}}
 0.2%   0.3%  25.8KiB     hyper_util hyper_util::client::legacy::client::Client<C,B>::connect_to::{{closure}}::{{closure}}::{{closure}}
 0.2%   0.3%  25.0KiB        globset globset::GlobSetBuilder::build
 0.2%   0.3%  25.0KiB           prek prek::main
 0.1%   0.3%  23.7KiB          hyper hyper::proto::h1::dispatch::Dispatcher<D,Bs,I,T>::poll_loop
39.9%  87.9%   6.5MiB                And 10220 smaller methods. Use -n N to show more.
45.4% 100.0%   7.3MiB                .text section size, the file size is 16.2MiB

Base Branch Results

 File  .text     Size          Crate Name
 0.6%   1.3% 101.1KiB          prek? <prek::cli::Command as clap_builder::derive::Subcommand>::augment_subcommands
 0.5%   1.2%  88.0KiB           prek prek::languages::<impl prek::config::Language>::run::{{closure}}
 0.5%   1.1%  85.8KiB           prek prek::builtin::pre_commit_hooks::Implemented::run::{{closure}}
 0.4%   0.9%  63.8KiB           prek prek::archive::unpack::{{closure}}
 0.3%   0.7%  49.2KiB           prek prek::run::{{closure}}
 0.3%   0.6%  42.0KiB           prek prek::languages::<impl prek::config::Language>::install::{{closure}}
 0.2%   0.5%  40.9KiB regex_automata regex_automata::meta::strategy::new
 0.2%   0.5%  40.1KiB          prek? <prek::cli::RunArgs as clap_builder::derive::Args>::augment_args
 0.2%   0.4%  32.9KiB           prek prek::workspace::Workspace::discover
 0.2%   0.4%  32.8KiB           prek prek::cli::run::run::run::{{closure}}
 0.2%   0.4%  32.3KiB           prek prek::languages::node::installer::NodeInstaller::install::{{closure}}
 0.2%   0.4%  31.8KiB             h2 h2::proto::connection::DynConnection<B>::recv_frame
 0.2%   0.4%  31.7KiB             h2 h2::proto::connection::Connection<T,P,B>::poll
 0.2%   0.4%  27.6KiB           prek prek::identify::by_extension::{{closure}}
 0.2%   0.3%  26.2KiB     hyper_util hyper_util::client::legacy::client::Client<C,B>::send_request::{{closure}}
 0.2%   0.3%  25.8KiB     hyper_util hyper_util::client::legacy::client::Client<C,B>::connect_to::{{closure}}::{{closure}}::{{closure}}
 0.2%   0.3%  25.0KiB        globset globset::GlobSetBuilder::build
 0.2%   0.3%  25.0KiB           prek prek::main
 0.1%   0.3%  24.2KiB           prek prek::languages::golang::installer::GoInstaller::install::{{closure}}
 0.1%   0.3%  23.7KiB          hyper hyper::proto::h1::dispatch::Dispatcher<D,Bs,I,T>::poll_loop
39.8%  87.7%   6.4MiB                And 10186 smaller methods. Use -n N to show more.
45.4% 100.0%   7.3MiB                .text section size, the file size is 16.1MiB

@github-actions
Copy link

⚡ Hotpath Performance Profile

Latency change: +0.00% (N/A → N/A)
Allocation change: +0.00% (N/A → N/A)

Benchmark: Running prek run --all-files --verbose on the prek repository

Expand for detailed profiling output

PR Branch Profile


Base Branch Profile


@github-actions
Copy link

github-actions bot commented Oct 29, 2025

Performance Comparison

Total Elapsed Time: 37.42ms → 42.11ms (+12.5%)

Profiling Mode: timing - Execution duration of functions.

+-----------------------+------------------+--------------------------------+--------------------------------+--------------------------------+--------------------------------+------------------------------+
| Function              | Calls            | Avg                            | P95                            | P99                            | Total                          | % Total                      |
+-----------------------+------------------+--------------------------------+--------------------------------+--------------------------------+--------------------------------+------------------------------+
| prek                  | 1 → 1 (+0.0%)    | 36.77ms → 41.48ms (+12.8%)     | 36.80ms → 41.48ms (+12.7%)     | 36.80ms → 41.48ms (+12.7%)     | 36.77ms → 41.48ms (+12.8%)     | 100.00% → 100.00% (+0.0%)    |
+-----------------------+------------------+--------------------------------+--------------------------------+--------------------------------+--------------------------------+------------------------------+
| run::run              | 1 → 1 (+0.0%)    | 36.54ms → 41.24ms (+12.9%)     | 36.57ms → 41.25ms (+12.8%)     | 36.57ms → 41.25ms (+12.8%)     | 36.54ms → 41.24ms (+12.9%)     | 99.36% → 99.41% (+0.1%)      |
+-----------------------+------------------+--------------------------------+--------------------------------+--------------------------------+--------------------------------+------------------------------+
| run::run_hooks        | 1 → 1 (+0.0%)    | 18.11ms → 22.83ms (+26.1%) ⚠️  | 18.12ms → 22.84ms (+26.0%) ⚠️  | 18.12ms → 22.84ms (+26.0%) ⚠️  | 18.11ms → 22.83ms (+26.1%) ⚠️  | 49.25% → 55.04% (+11.8%)     |
+-----------------------+------------------+--------------------------------+--------------------------------+--------------------------------+--------------------------------+------------------------------+
| run::run_hook         | 1 → 1 (+0.0%)    | 13.38ms → 15.60ms (+16.5%)     | 13.39ms → 15.60ms (+16.5%)     | 13.39ms → 15.60ms (+16.5%)     | 13.38ms → 15.60ms (+16.5%)     | 36.39% → 37.59% (+3.3%)      |
+-----------------------+------------------+--------------------------------+--------------------------------+--------------------------------+--------------------------------+------------------------------+
| run::install_hooks    | 1 → 1 (+0.0%)    | 12.34ms → 12.26ms (-0.7%)      | 12.35ms → 12.26ms (-0.7%)      | 12.35ms → 12.26ms (-0.7%)      | 12.34ms → 12.26ms (-0.7%)      | 33.56% → 29.55% (-11.9%)     |
+-----------------------+------------------+--------------------------------+--------------------------------+--------------------------------+--------------------------------+------------------------------+
| filter::collect_files | 1 → 1 (+0.0%)    | 1.69ms → 1.67ms (-0.8%)        | 1.69ms → 1.67ms (-0.8%)        | 1.69ms → 1.67ms (-0.8%)        | 1.69ms → 1.67ms (-0.8%)        | 4.58% → 4.03% (-12.0%)       |
+-----------------------+------------------+--------------------------------+--------------------------------+--------------------------------+--------------------------------+------------------------------+
| store::clone_repo     | 2 → 2 (+0.0%)    | 6.57µs → 6.47µs (-1.4%)        | 6.74µs → 6.52µs (-3.1%)        | 6.74µs → 6.52µs (-3.1%)        | 13.13µs → 12.94µs (-1.4%)      | 0.03% → 0.03% (+0.0%)        |
+-----------------------+------------------+--------------------------------+--------------------------------+--------------------------------+--------------------------------+------------------------------+

Generated with hotpath

📊 View Raw JSON Metrics

PR Metrics

{
  "hotpath_profiling_mode": "timing",
  "total_elapsed": 42114990,
  "description": "Execution duration of functions.",
  "caller_name": "prek",
  "output": {
    "run::run": {
      "calls": 1,
      "avg": 41242660,
      "p95": 41254911,
      "p99": 41254911,
      "total": 41242660,
      "percent_total": 9941
    },
    "prek": {
      "calls": 1,
      "avg": 41484231,
      "p95": 41484287,
      "p99": 41484287,
      "total": 41484231,
      "percent_total": 10000
    },
    "run::install_hooks": {
      "calls": 1,
      "avg": 12261939,
      "p95": 12263423,
      "p99": 12263423,
      "total": 12261939,
      "percent_total": 2955
    },
    "run::run_hook": {
      "calls": 1,
      "avg": 15597366,
      "p95": 15597567,
      "p99": 15597567,
      "total": 15597366,
      "percent_total": 3759
    },
    "filter::collect_files": {
      "calls": 1,
      "avg": 1673940,
      "p95": 1674239,
      "p99": 1674239,
      "total": 1673940,
      "percent_total": 403
    },
    "run::run_hooks": {
      "calls": 1,
      "avg": 22834008,
      "p95": 22839295,
      "p99": 22839295,
      "total": 22834008,
      "percent_total": 5504
    },
    "store::clone_repo": {
      "calls": 2,
      "avg": 6472,
      "p95": 6523,
      "p99": 6523,
      "total": 12944,
      "percent_total": 3
    }
  }
}

Main Branch Metrics

{
  "hotpath_profiling_mode": "timing",
  "total_elapsed": 37423031,
  "description": "Execution duration of functions.",
  "caller_name": "prek",
  "output": {
    "run::run_hook": {
      "calls": 1,
      "avg": 13382831,
      "p95": 13385727,
      "p99": 13385727,
      "total": 13382831,
      "percent_total": 3639
    },
    "prek": {
      "calls": 1,
      "avg": 36774641,
      "p95": 36798463,
      "p99": 36798463,
      "total": 36774641,
      "percent_total": 10000
    },
    "run::install_hooks": {
      "calls": 1,
      "avg": 12343562,
      "p95": 12345343,
      "p99": 12345343,
      "total": 12343562,
      "percent_total": 3356
    },
    "run::run": {
      "calls": 1,
      "avg": 36542311,
      "p95": 36569087,
      "p99": 36569087,
      "total": 36542311,
      "percent_total": 9936
    },
    "store::clone_repo": {
      "calls": 2,
      "avg": 6567,
      "p95": 6735,
      "p99": 6735,
      "total": 13134,
      "percent_total": 3
    },
    "filter::collect_files": {
      "calls": 1,
      "avg": 1687630,
      "p95": 1688575,
      "p99": 1688575,
      "total": 1687630,
      "percent_total": 458
    },
    "run::run_hooks": {
      "calls": 1,
      "avg": 18113227,
      "p95": 18120703,
      "p99": 18120703,
      "total": 18113227,
      "percent_total": 4925
    }
  }
}

@github-actions
Copy link

github-actions bot commented Oct 29, 2025

Performance Comparison

Total Elapsed Time: 36.79ms → 41.45ms (+12.7%)

Profiling Mode: alloc_count_total - Total number of heap allocations during each function call (including nested calls).

+-----------------------+------------------+--------------------------+--------------------------+--------------------------+--------------------------+------------------------------+
| Function              | Calls            | Avg                      | P95                      | P99                      | Total                    | % Total                      |
+-----------------------+------------------+--------------------------+--------------------------+--------------------------+--------------------------+------------------------------+
| prek                  | 1 → 1 (+0.0%)    | 12276 → 12300 (+0.2%)    | 12279 → 12303 (+0.2%)    | 12279 → 12303 (+0.2%)    | 12276 → 12300 (+0.2%)    | 100.00% → 100.00% (+0.0%)    |
+-----------------------+------------------+--------------------------+--------------------------+--------------------------+--------------------------+------------------------------+
| run::run              | 1 → 1 (+0.0%)    | 12148 → 12180 (+0.3%)    | 12151 → 12183 (+0.3%)    | 12151 → 12183 (+0.3%)    | 12148 → 12180 (+0.3%)    | 98.95% → 99.02% (+0.1%)      |
+-----------------------+------------------+--------------------------+--------------------------+--------------------------+--------------------------+------------------------------+
| run::run_hooks        | 1 → 1 (+0.0%)    | 3441 → 3465 (+0.7%)      | 3441 → 3465 (+0.7%)      | 3441 → 3465 (+0.7%)      | 3441 → 3465 (+0.7%)      | 28.03% → 28.17% (+0.5%)      |
+-----------------------+------------------+--------------------------+--------------------------+--------------------------+--------------------------+------------------------------+
| run::run_hook         | 1 → 1 (+0.0%)    | 3361 → 3387 (+0.8%)      | 3361 → 3387 (+0.8%)      | 3361 → 3387 (+0.8%)      | 3361 → 3387 (+0.8%)      | 27.37% → 27.53% (+0.6%)      |
+-----------------------+------------------+--------------------------+--------------------------+--------------------------+--------------------------+------------------------------+
| filter::collect_files | 1 → 1 (+0.0%)    | 404 → 406 (+0.5%)        | 404 → 406 (+0.5%)        | 404 → 406 (+0.5%)        | 404 → 406 (+0.5%)        | 3.29% → 3.30% (+0.3%)        |
+-----------------------+------------------+--------------------------+--------------------------+--------------------------+--------------------------+------------------------------+
| run::install_hooks    | 1 → 1 (+0.0%)    | 71 → 71 (+0.0%)          | 71 → 71 (+0.0%)          | 71 → 71 (+0.0%)          | 71 → 71 (+0.0%)          | 0.57% → 0.57% (+0.0%)        |
+-----------------------+------------------+--------------------------+--------------------------+--------------------------+--------------------------+------------------------------+
| store::clone_repo     | 2 → 2 (+0.0%)    | 7 → 7 (+0.0%)            | 7 → 7 (+0.0%)            | 7 → 7 (+0.0%)            | 14 → 14 (+0.0%)          | 0.11% → 0.11% (+0.0%)        |
+-----------------------+------------------+--------------------------+--------------------------+--------------------------+--------------------------+------------------------------+

Generated with hotpath

📊 View Raw JSON Metrics

PR Metrics

{
  "hotpath_profiling_mode": "alloc-count-total",
  "total_elapsed": 41453549,
  "description": "Total number of heap allocations during each function call (including nested calls).",
  "caller_name": "prek",
  "output": {
    "prek": {
      "calls": 1,
      "avg": 12300,
      "p95": 12303,
      "p99": 12303,
      "total": 12300,
      "percent_total": 10000
    },
    "run::run_hook": {
      "calls": 1,
      "avg": 3387,
      "p95": 3387,
      "p99": 3387,
      "total": 3387,
      "percent_total": 2753
    },
    "run::install_hooks": {
      "calls": 1,
      "avg": 71,
      "p95": 71,
      "p99": 71,
      "total": 71,
      "percent_total": 57
    },
    "run::run_hooks": {
      "calls": 1,
      "avg": 3465,
      "p95": 3465,
      "p99": 3465,
      "total": 3465,
      "percent_total": 2817
    },
    "run::run": {
      "calls": 1,
      "avg": 12180,
      "p95": 12183,
      "p99": 12183,
      "total": 12180,
      "percent_total": 9902
    },
    "store::clone_repo": {
      "calls": 2,
      "avg": 7,
      "p95": 7,
      "p99": 7,
      "total": 14,
      "percent_total": 11
    },
    "filter::collect_files": {
      "calls": 1,
      "avg": 406,
      "p95": 406,
      "p99": 406,
      "total": 406,
      "percent_total": 330
    }
  }
}

Main Branch Metrics

{
  "hotpath_profiling_mode": "alloc-count-total",
  "total_elapsed": 36785829,
  "description": "Total number of heap allocations during each function call (including nested calls).",
  "caller_name": "prek",
  "output": {
    "run::run_hook": {
      "calls": 1,
      "avg": 3361,
      "p95": 3361,
      "p99": 3361,
      "total": 3361,
      "percent_total": 2737
    },
    "filter::collect_files": {
      "calls": 1,
      "avg": 404,
      "p95": 404,
      "p99": 404,
      "total": 404,
      "percent_total": 329
    },
    "prek": {
      "calls": 1,
      "avg": 12276,
      "p95": 12279,
      "p99": 12279,
      "total": 12276,
      "percent_total": 10000
    },
    "run::run": {
      "calls": 1,
      "avg": 12148,
      "p95": 12151,
      "p99": 12151,
      "total": 12148,
      "percent_total": 9895
    },
    "run::run_hooks": {
      "calls": 1,
      "avg": 3441,
      "p95": 3441,
      "p99": 3441,
      "total": 3441,
      "percent_total": 2803
    },
    "store::clone_repo": {
      "calls": 2,
      "avg": 7,
      "p95": 7,
      "p99": 7,
      "total": 14,
      "percent_total": 11
    },
    "run::install_hooks": {
      "calls": 1,
      "avg": 71,
      "p95": 71,
      "p99": 71,
      "total": 71,
      "percent_total": 57
    }
  }
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Use camino::Utf8PathBuf

2 participants