Mercurial > public > mercurial-scm > hg-stable
diff rust/hg-core/src/repo.rs @ 48463:5734b03ecf3e
rhg: Initial repository locking
Initial Rust implementation of locking based on the `.hg/wlock` symlink (or file),
with lock breaking when the recorded pid and hostname show that a lock was
left by a local process that is not running anymore (as it might have been
killed).
Differential Revision: https://phab.mercurial-scm.org/D11835
author | Simon Sapin <simon.sapin@octobus.net> |
---|---|
date | Mon, 22 Mar 2021 09:07:10 +0100 |
parents | 005ae1a343f8 |
children | c8659e61073d |
line wrap: on
line diff
--- a/rust/hg-core/src/repo.rs Mon Nov 29 17:37:08 2021 +0100 +++ b/rust/hg-core/src/repo.rs Mon Mar 22 09:07:10 2021 +0100 @@ -6,6 +6,7 @@ use crate::errors::HgError; use crate::errors::HgResultExt; use crate::exit_codes; +use crate::lock::{try_with_lock_no_wait, LockError}; use crate::manifest::{Manifest, Manifestlog}; use crate::revlog::filelog::Filelog; use crate::revlog::revlog::RevlogError; @@ -243,6 +244,13 @@ } } + pub fn try_with_wlock_no_wait<R>( + &self, + f: impl FnOnce() -> R, + ) -> Result<R, LockError> { + try_with_lock_no_wait(self.hg_vfs(), "wlock", f) + } + pub fn has_dirstate_v2(&self) -> bool { self.requirements .contains(requirements::DIRSTATE_V2_REQUIREMENT)