diff --git a/man/remux.1 b/man/remux.1 index 246d2a5..a9a2f12 100644 --- a/man/remux.1 +++ b/man/remux.1 @@ -135,6 +135,9 @@ Default: '>' .It Ev REMUX_NEW_WINDOW Provides a default windows name when creating a new session. Unused if empty. Default: (unset) +.It Ev REMUX_REPO_FILE +The filename to match on when trying to find the root of a repository. +Default: '.git' .El .Sh EXIT STATUS .Bl -tag -Width Ds diff --git a/src/env.rs b/src/env.rs index 37bc192..208fa64 100644 --- a/src/env.rs +++ b/src/env.rs @@ -5,6 +5,7 @@ pub type EnvVar = (&'static str, &'static str); pub static ATTACH_SYMBOL: EnvVar = ("REMUX_ATTACH_SYMBOL", "*"); pub static CURRENT_SYMBOL: EnvVar = ("REMUX_CURRENT_SYMBOL", ">"); pub static NEW_WINDOW_NAME: EnvVar = ("REMUX_NEW_WINDOW", ""); +pub static REPO_FILE: EnvVar = ("REMUX_REPO_FILE", ".git"); pub static TMUX: &str = "TMUX"; diff --git a/src/state.rs b/src/state.rs index f14938f..4d00743 100644 --- a/src/state.rs +++ b/src/state.rs @@ -6,7 +6,7 @@ use std::{ use pico_args::Arguments; use crate::{ - env::TMUX, + env::{ env_var, REPO_FILE, TMUX }, error, flag::Flags, util::{ find, session_name } @@ -82,7 +82,7 @@ pub struct Repository { impl Repository { pub fn find() -> Option { - let path = find(".git", env::current_dir().unwrap()); + let path = find(&env_var(REPO_FILE), env::current_dir().unwrap()); if let Some(path) = path { let name = path.file_name().unwrap().to_string_lossy().to_string(); let inner = Repository { diff --git a/src/util.rs b/src/util.rs index 424befa..ccee203 100644 --- a/src/util.rs +++ b/src/util.rs @@ -51,7 +51,7 @@ pub fn terminal_enforce() { } /// recursively propagate up directories to find a child -pub fn find(target: &'static str, path: PathBuf) -> Option { +pub fn find(target: &str, path: PathBuf) -> Option { if path.join(target).exists() { return Some(path); } let parent = path.parent();