rust/hg-core/examples/nodemap/main.rs
author pacien <pacien.trangirard@pacien.net>
Fri, 28 Apr 2023 11:50:49 +0200
changeset 50461 a6522a7de594
parent 49920 0d301f4180f5
child 50979 4c5f6e95df84
permissions -rw-r--r--
stabletailgraph: omit uninteresting linear parts in test log The test uses tags for the nodes of interest. There is no need to print the linear parts which exist only to force the rank.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
44386
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
     1
// Copyright 2019-2020 Georges Racinet <georges.racinet@octobus.net>
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
     2
//
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
     3
// This software may be used and distributed according to the terms of the
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
     4
// GNU General Public License version 2 or any later version.
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
     5
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
     6
use hg::revlog::node::*;
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
     7
use hg::revlog::nodemap::*;
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
     8
use hg::revlog::*;
47955
e834b79def74 rust: Switch to the memmap2-rs crate
Simon Sapin <simon.sapin@octobus.net>
parents: 46432
diff changeset
     9
use memmap2::MmapOptions;
44386
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
    10
use rand::Rng;
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
    11
use std::fs::File;
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
    12
use std::io;
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
    13
use std::io::Write;
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
    14
use std::path::{Path, PathBuf};
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
    15
use std::time::Instant;
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
    16
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
    17
mod index;
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
    18
use index::Index;
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
    19
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
    20
fn mmap_index(repo_path: &Path) -> Index {
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
    21
    let mut path = PathBuf::from(repo_path);
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
    22
    path.extend([".hg", "store", "00changelog.i"].iter());
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
    23
    Index::load_mmap(path)
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
    24
}
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
    25
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
    26
fn mmap_nodemap(path: &Path) -> NodeTree {
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
    27
    let file = File::open(path).unwrap();
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
    28
    let mmap = unsafe { MmapOptions::new().map(&file).unwrap() };
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
    29
    let len = mmap.len();
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
    30
    NodeTree::load_bytes(Box::new(mmap), len)
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
    31
}
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
    32
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
    33
/// Scan the whole index and create the corresponding nodemap file at `path`
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
    34
fn create(index: &Index, path: &Path) -> io::Result<()> {
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
    35
    let mut file = File::create(path)?;
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
    36
    let start = Instant::now();
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
    37
    let mut nm = NodeTree::default();
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
    38
    for rev in 0..index.len() {
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
    39
        let rev = rev as Revision;
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
    40
        nm.insert(index, index.node(rev).unwrap(), rev).unwrap();
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
    41
    }
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
    42
    eprintln!("Nodemap constructed in RAM in {:?}", start.elapsed());
49920
0d301f4180f5 rust-clippy: use `write_all` since we're not expecting a partial write
Raphaël Gomès <rgomes@octobus.net>
parents: 49914
diff changeset
    43
    file.write_all(&nm.into_readonly_and_added_bytes().1)?;
44386
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
    44
    eprintln!("Nodemap written to disk");
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
    45
    Ok(())
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
    46
}
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
    47
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
    48
fn query(index: &Index, nm: &NodeTree, prefix: &str) {
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
    49
    let start = Instant::now();
46432
18a261b11b20 rust: Remove hex parsing from the nodemap
Simon Sapin <simon.sapin@octobus.net>
parents: 46427
diff changeset
    50
    let res = NodePrefix::from_hex(prefix).map(|p| nm.find_bin(index, p));
44386
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
    51
    println!("Result found in {:?}: {:?}", start.elapsed(), res);
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
    52
}
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
    53
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
    54
fn bench(index: &Index, nm: &NodeTree, queries: usize) {
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
    55
    let len = index.len() as u32;
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
    56
    let mut rng = rand::thread_rng();
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
    57
    let nodes: Vec<Node> = (0..queries)
49914
58074252db3c rust: run `cargo clippy`
Raphaël Gomès <rgomes@octobus.net>
parents: 49637
diff changeset
    58
        .map(|_| *index.node((rng.gen::<u32>() % len) as Revision).unwrap())
44386
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
    59
        .collect();
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
    60
    if queries < 10 {
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
    61
        let nodes_hex: Vec<String> =
46427
6380efb82191 rust: replace Node::encode_hex with std::fmt::LowerHex
Simon Sapin <simon.sapin@octobus.net>
parents: 44386
diff changeset
    62
            nodes.iter().map(|n| format!("{:x}", n)).collect();
44386
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
    63
        println!("Nodes: {:?}", nodes_hex);
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
    64
    }
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
    65
    let mut last: Option<Revision> = None;
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
    66
    let start = Instant::now();
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
    67
    for node in nodes.iter() {
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
    68
        last = nm.find_bin(index, node.into()).unwrap();
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
    69
    }
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
    70
    let elapsed = start.elapsed();
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
    71
    println!(
46427
6380efb82191 rust: replace Node::encode_hex with std::fmt::LowerHex
Simon Sapin <simon.sapin@octobus.net>
parents: 44386
diff changeset
    72
        "Did {} queries in {:?} (mean {:?}), last was {:x} with result {:?}",
44386
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
    73
        queries,
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
    74
        elapsed,
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
    75
        elapsed / (queries as u32),
46427
6380efb82191 rust: replace Node::encode_hex with std::fmt::LowerHex
Simon Sapin <simon.sapin@octobus.net>
parents: 44386
diff changeset
    76
        nodes.last().unwrap(),
44386
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
    77
        last
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
    78
    );
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
    79
}
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
    80
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
    81
fn main() {
49637
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
    82
    use clap::{Parser, Subcommand};
44386
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
    83
49637
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
    84
    #[derive(Parser)]
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
    85
    #[command()]
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
    86
    /// Nodemap pure Rust example
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
    87
    struct App {
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
    88
        // Path to the repository, always necessary for its index
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
    89
        #[arg(short, long)]
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
    90
        repository: PathBuf,
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
    91
        // Path to the nodemap file, independent of REPOSITORY
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
    92
        #[arg(short, long)]
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
    93
        nodemap_file: PathBuf,
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
    94
        #[command(subcommand)]
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
    95
        command: Command,
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
    96
    }
44386
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
    97
49637
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
    98
    #[derive(Subcommand)]
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
    99
    enum Command {
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
   100
        /// Create `NODEMAP_FILE` by scanning repository index
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
   101
        Create,
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
   102
        /// Query `NODEMAP_FILE` for `prefix`
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
   103
        Query { prefix: String },
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
   104
        /// Perform #`QUERIES` random successful queries on `NODEMAP_FILE`
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
   105
        Bench { queries: usize },
44386
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
   106
    }
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
   107
49637
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
   108
    let app = App::parse();
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
   109
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
   110
    let repo = &app.repository;
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
   111
    let nm_path = &app.nodemap_file;
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
   112
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
   113
    let index = mmap_index(repo);
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
   114
    let nm = mmap_nodemap(nm_path);
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
   115
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
   116
    match &app.command {
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
   117
        Command::Create => {
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
   118
            println!(
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
   119
                "Creating nodemap file {} for repository {}",
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
   120
                nm_path.display(),
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
   121
                repo.display()
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
   122
            );
49914
58074252db3c rust: run `cargo clippy`
Raphaël Gomès <rgomes@octobus.net>
parents: 49637
diff changeset
   123
            create(&index, Path::new(nm_path)).unwrap();
49637
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
   124
        }
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
   125
        Command::Bench { queries } => {
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
   126
            println!(
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
   127
                "Doing {} random queries in nodemap file {} of repository {}",
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
   128
                queries,
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
   129
                nm_path.display(),
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
   130
                repo.display()
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
   131
            );
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
   132
            bench(&index, &nm, *queries);
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
   133
        }
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
   134
        Command::Query { prefix } => {
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
   135
            println!(
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
   136
                "Querying {} in nodemap file {} of repository {}",
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
   137
                prefix,
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
   138
                nm_path.display(),
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
   139
                repo.display()
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
   140
            );
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
   141
            query(&index, &nm, prefix);
14bfd22a57a9 hg-core: upgrade `clap` dependency
Raphaël Gomès <rgomes@octobus.net>
parents: 47955
diff changeset
   142
        }
44386
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
   143
    }
8f7c6656ac79 rust-nodemap: pure Rust example
Georges Racinet <georges.racinet@octobus.net>
parents:
diff changeset
   144
}