annotate rust/hg-core/src/narrow.rs @ 53042:cdd7bf612c7b stable tip

bundle-spec: properly format boolean parameter (issue6960) This was breaking automatic clone bundle generation. This changeset fixes it and add a test to catch it in the future.
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Tue, 11 Mar 2025 02:29:42 +0100
parents b019b5798e8f
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
49489
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
1 use std::path::Path;
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
2
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
3 use crate::{
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
4 errors::HgError,
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
5 exit_codes,
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
6 filepatterns::parse_pattern_file_contents,
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
7 matchers::{
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
8 AlwaysMatcher, DifferenceMatcher, IncludeMatcher, Matcher,
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
9 NeverMatcher,
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
10 },
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
11 repo::Repo,
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
12 requirements::NARROW_REQUIREMENT,
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
13 sparse::{self, SparseConfigError, SparseWarning},
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
14 };
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
15
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
16 /// The file in .hg/store/ that indicates which paths exit in the store
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
17 const FILENAME: &str = "narrowspec";
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
18 /// The file in .hg/ that indicates which paths exit in the dirstate
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
19 const DIRSTATE_FILENAME: &str = "narrowspec.dirstate";
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
20
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
21 /// Pattern prefixes that are allowed in narrow patterns. This list MUST
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
22 /// only contain patterns that are fast and safe to evaluate. Keep in mind
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
23 /// that patterns are supplied by clients and executed on remote servers
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
24 /// as part of wire protocol commands. That means that changes to this
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
25 /// data structure influence the wire protocol and should not be taken
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
26 /// lightly - especially removals.
52039
ae1ab6d71f4a rust: implement `From<SparseConfigWarning>` for `HgError`
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50854
diff changeset
27 pub const VALID_PREFIXES: [&str; 2] = ["path:", "rootfilesin:"];
49489
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
28
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
29 /// Return the matcher for the current narrow spec, and all configuration
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
30 /// warnings to display.
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
31 pub fn matcher(
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
32 repo: &Repo,
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
33 ) -> Result<(Box<dyn Matcher + Sync>, Vec<SparseWarning>), SparseConfigError> {
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
34 let mut warnings = vec![];
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
35 if !repo.requirements().contains(NARROW_REQUIREMENT) {
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
36 return Ok((Box::new(AlwaysMatcher), warnings));
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
37 }
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
38 // Treat "narrowspec does not exist" the same as "narrowspec file exists
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
39 // and is empty".
49930
e98fd81bb151 rust-clippy: fix most warnings in `hg-core`
Rapha?l Gom?s <rgomes@octobus.net>
parents: 49915
diff changeset
40 let store_spec = repo.store_vfs().try_read(FILENAME)?.unwrap_or_default();
e98fd81bb151 rust-clippy: fix most warnings in `hg-core`
Rapha?l Gom?s <rgomes@octobus.net>
parents: 49915
diff changeset
41 let working_copy_spec = repo
e98fd81bb151 rust-clippy: fix most warnings in `hg-core`
Rapha?l Gom?s <rgomes@octobus.net>
parents: 49915
diff changeset
42 .hg_vfs()
e98fd81bb151 rust-clippy: fix most warnings in `hg-core`
Rapha?l Gom?s <rgomes@octobus.net>
parents: 49915
diff changeset
43 .try_read(DIRSTATE_FILENAME)?
e98fd81bb151 rust-clippy: fix most warnings in `hg-core`
Rapha?l Gom?s <rgomes@octobus.net>
parents: 49915
diff changeset
44 .unwrap_or_default();
49489
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
45 if store_spec != working_copy_spec {
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
46 return Err(HgError::abort(
49982
7faedeb24eb2 rhg: fix user-facing error message so it matches Python implementation
Rapha?l Gom?s <rgomes@octobus.net>
parents: 49930
diff changeset
47 "abort: working copy's narrowspec is stale",
49489
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
48 exit_codes::STATE_ERROR,
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
49 Some("run 'hg tracked --update-working-copy'".into()),
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
50 )
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
51 .into());
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
52 }
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
53
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
54 let config = sparse::parse_config(
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
55 &store_spec,
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
56 sparse::SparseConfigContext::Narrow,
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
57 )?;
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
58
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
59 warnings.extend(config.warnings);
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
60
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
61 if !config.profiles.is_empty() {
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
62 // TODO (from Python impl) maybe do something with profiles?
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
63 return Err(SparseConfigError::IncludesInNarrow);
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
64 }
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
65 validate_patterns(&config.includes)?;
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
66 validate_patterns(&config.excludes)?;
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
67
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
68 if config.includes.is_empty() {
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
69 return Ok((Box::new(NeverMatcher), warnings));
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
70 }
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
71
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
72 let (patterns, subwarnings) = parse_pattern_file_contents(
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
73 &config.includes,
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
74 Path::new(""),
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
75 None,
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
76 false,
50854
796b5d6693a4 rust: simplify pattern file parsing
Spencer Baugh <sbaugh@janestreet.com>
parents: 49982
diff changeset
77 true,
49489
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
78 )?;
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
79 warnings.extend(subwarnings.into_iter().map(From::from));
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
80
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
81 let mut m: Box<dyn Matcher + Sync> =
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
82 Box::new(IncludeMatcher::new(patterns)?);
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
83
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
84 let (patterns, subwarnings) = parse_pattern_file_contents(
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
85 &config.excludes,
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
86 Path::new(""),
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
87 None,
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
88 false,
50854
796b5d6693a4 rust: simplify pattern file parsing
Spencer Baugh <sbaugh@janestreet.com>
parents: 49982
diff changeset
89 true,
49489
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
90 )?;
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
91 if !patterns.is_empty() {
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
92 warnings.extend(subwarnings.into_iter().map(From::from));
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
93 let exclude_matcher = Box::new(IncludeMatcher::new(patterns)?);
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
94 m = Box::new(DifferenceMatcher::new(m, exclude_matcher));
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
95 }
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
96
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
97 Ok((m, warnings))
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
98 }
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
99
52719
77b95a4abbb2 narrow: stricter validation of narrowspec patterns in rhg
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents: 52039
diff changeset
100 fn is_whitespace(b: &u8) -> bool {
77b95a4abbb2 narrow: stricter validation of narrowspec patterns in rhg
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents: 52039
diff changeset
101 // should match what .strip() in Python does
77b95a4abbb2 narrow: stricter validation of narrowspec patterns in rhg
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents: 52039
diff changeset
102 b.is_ascii_whitespace() || *b == 0x0b
77b95a4abbb2 narrow: stricter validation of narrowspec patterns in rhg
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents: 52039
diff changeset
103 }
77b95a4abbb2 narrow: stricter validation of narrowspec patterns in rhg
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents: 52039
diff changeset
104
77b95a4abbb2 narrow: stricter validation of narrowspec patterns in rhg
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents: 52039
diff changeset
105 fn starts_or_ends_with_whitespace(s: &[u8]) -> bool {
77b95a4abbb2 narrow: stricter validation of narrowspec patterns in rhg
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents: 52039
diff changeset
106 let w = |b: Option<&u8>| b.map(is_whitespace).unwrap_or(false);
77b95a4abbb2 narrow: stricter validation of narrowspec patterns in rhg
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents: 52039
diff changeset
107 w(s.first()) || w(s.last())
77b95a4abbb2 narrow: stricter validation of narrowspec patterns in rhg
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents: 52039
diff changeset
108 }
77b95a4abbb2 narrow: stricter validation of narrowspec patterns in rhg
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents: 52039
diff changeset
109
52720
b019b5798e8f rhg: fix a bug where only the first pattern in narrowspec was validated
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents: 52719
diff changeset
110 fn validate_pattern(pattern: &[u8]) -> Result<(), SparseConfigError> {
b019b5798e8f rhg: fix a bug where only the first pattern in narrowspec was validated
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents: 52719
diff changeset
111 if starts_or_ends_with_whitespace(pattern) {
b019b5798e8f rhg: fix a bug where only the first pattern in narrowspec was validated
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents: 52719
diff changeset
112 return Err(SparseConfigError::WhitespaceAtEdgeOfPattern(
b019b5798e8f rhg: fix a bug where only the first pattern in narrowspec was validated
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents: 52719
diff changeset
113 pattern.to_owned(),
b019b5798e8f rhg: fix a bug where only the first pattern in narrowspec was validated
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents: 52719
diff changeset
114 ));
b019b5798e8f rhg: fix a bug where only the first pattern in narrowspec was validated
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents: 52719
diff changeset
115 }
b019b5798e8f rhg: fix a bug where only the first pattern in narrowspec was validated
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents: 52719
diff changeset
116 for prefix in VALID_PREFIXES.iter() {
b019b5798e8f rhg: fix a bug where only the first pattern in narrowspec was validated
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents: 52719
diff changeset
117 if pattern.starts_with(prefix.as_bytes()) {
b019b5798e8f rhg: fix a bug where only the first pattern in narrowspec was validated
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents: 52719
diff changeset
118 return Ok(());
b019b5798e8f rhg: fix a bug where only the first pattern in narrowspec was validated
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents: 52719
diff changeset
119 }
b019b5798e8f rhg: fix a bug where only the first pattern in narrowspec was validated
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents: 52719
diff changeset
120 }
b019b5798e8f rhg: fix a bug where only the first pattern in narrowspec was validated
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents: 52719
diff changeset
121 Err(SparseConfigError::InvalidNarrowPrefix(pattern.to_owned()))
b019b5798e8f rhg: fix a bug where only the first pattern in narrowspec was validated
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents: 52719
diff changeset
122 }
b019b5798e8f rhg: fix a bug where only the first pattern in narrowspec was validated
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents: 52719
diff changeset
123
49489
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
124 fn validate_patterns(patterns: &[u8]) -> Result<(), SparseConfigError> {
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
125 for pattern in patterns.split(|c| *c == b'\n') {
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
126 if pattern.is_empty() {
52720
b019b5798e8f rhg: fix a bug where only the first pattern in narrowspec was validated
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents: 52719
diff changeset
127 // TODO: probably not intentionally allowed (only because `split`
b019b5798e8f rhg: fix a bug where only the first pattern in narrowspec was validated
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents: 52719
diff changeset
128 // produces "fake" empty line at the end)
49489
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
129 continue;
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
130 }
52720
b019b5798e8f rhg: fix a bug where only the first pattern in narrowspec was validated
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents: 52719
diff changeset
131 validate_pattern(pattern)?
49489
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
132 }
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
133 Ok(())
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents:
diff changeset
134 }