use std::path::Path;
use std::process::Command;
pub mod defaults;
pub mod mappings;
pub mod ops;
pub mod system;
pub use defaults::detect_default_base_ref;
pub use system::{CommitInfo, SystemGit, init_repo};
pub(crate) fn git_cmd_for_path(repo_path: &Path) -> Command {
let mut cmd = Command::new("git");
cmd.arg("-C").arg(repo_path);
cmd.env_clear();
if let Some(path) = std::env::var_os("PATH") {
cmd.env("PATH", path);
}
for key in ["HOME", "USERPROFILE", "HOMEDRIVE", "HOMEPATH"] {
if let Some(val) = std::env::var_os(key) {
cmd.env(key, val);
}
}
for key in [
"SSH_AUTH_SOCK",
"SSH_ASKPASS",
"DISPLAY",
"GIT_ASKPASS",
"GIT_SSH",
"GIT_SSH_COMMAND",
"GIT_TERMINAL_PROMPT",
] {
if let Some(val) = std::env::var_os(key) {
cmd.env(key, val);
}
}
cmd.arg("-c").arg("protocol.version=2");
cmd.arg("-c").arg("advice.detachedHead=false");
cmd.arg("-c").arg("core.quotePath=false");
cmd
}