annotate rust/hg-core/examples/nodemap/main.rs @ 50542:dc201a09e82c

clonebundle: add a `filter_bundle_url` function This function does nothing by default, but give extension the opportunity to alter the URL, typically, this could be used to inject authentication token when serving clone bundle for private repositories.
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Fri, 26 May 2023 17:41:25 +0200
parents 0d301f4180f5
children 4c5f6e95df84
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
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 }