##// END OF EJS Templates
mergestate: determine if active without looking for state files on disk...
mergestate: determine if active without looking for state files on disk I couldn't think of a reason that we need to check state files on disk to determine if a merge is active. I could imagine them being for there for detecting broken state files that would then be cleaned up by some later command, but we always delete the entire `.hg/merge/` tree, so that doesn't seem to be it. The checks were added in 4e932dc5c113 (resolve: abort when not applicable (BC), 2014-04-18). Perhaps there were needed for that and then made obsolete by 6062593d8b06 (resolve: don't abort resolve -l even when no merge is in progress, 2014-05-23). The reason I want to delete the checks is that I think `ms = mergestate.read(repo); ms.active() and ms.local` should be a valid pattern, but it crashes when the merge state file is an empty file if we consider mere presence of the file as "active". Differential Revision: https://phab.mercurial-scm.org/D8118

File last commit:

r41277:168041fa default
r44878:5e3402a0 default
Show More
testing.rs
72 lines | 1.7 KiB | application/rls-services+xml | RustLexer
// testing.rs
//
// Copyright 2018 Georges Racinet <georges.racinet@octobus.net>
//
// This software may be used and distributed according to the terms of the
// GNU General Public License version 2 or any later version.
use crate::{Graph, GraphError, Revision, NULL_REVISION};
/// A stub `Graph`, same as the one from `test-ancestor.py`
///
/// o 13
/// |
/// | o 12
/// | |
/// | | o 11
/// | | |\
/// | | | | o 10
/// | | | | |
/// | o---+ | 9
/// | | | | |
/// o | | | | 8
/// / / / /
/// | | o | 7
/// | | | |
/// o---+ | 6
/// / / /
/// | | o 5
/// | |/
/// | o 4
/// | |
/// o | 3
/// | |
/// | o 2
/// |/
/// o 1
/// |
/// o 0
#[derive(Clone, Debug)]
pub struct SampleGraph;
impl Graph for SampleGraph {
fn parents(&self, rev: Revision) -> Result<[Revision; 2], GraphError> {
match rev {
0 => Ok([NULL_REVISION, NULL_REVISION]),
1 => Ok([0, NULL_REVISION]),
2 => Ok([1, NULL_REVISION]),
3 => Ok([1, NULL_REVISION]),
4 => Ok([2, NULL_REVISION]),
5 => Ok([4, NULL_REVISION]),
6 => Ok([4, NULL_REVISION]),
7 => Ok([4, NULL_REVISION]),
8 => Ok([NULL_REVISION, NULL_REVISION]),
9 => Ok([6, 7]),
10 => Ok([5, NULL_REVISION]),
11 => Ok([3, 7]),
12 => Ok([9, NULL_REVISION]),
13 => Ok([8, NULL_REVISION]),
r => Err(GraphError::ParentOutOfRange(r)),
}
}
}
// A Graph represented by a vector whose indices are revisions
// and values are parents of the revisions
pub type VecGraph = Vec<[Revision; 2]>;
impl Graph for VecGraph {
fn parents(&self, rev: Revision) -> Result<[Revision; 2], GraphError> {
Ok(self[rev as usize])
}
}