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 ops::LogEntry;
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);
sanitize_git_environment(&mut cmd);
cmd.arg("-c").arg("protocol.version=2");
cmd.arg("-c").arg("advice.detachedHead=false");
cmd.arg("-c").arg("core.quotePath=false");
cmd
}
fn sanitize_git_environment(cmd: &mut Command) {
for key in [
"GIT_ALTERNATE_OBJECT_DIRECTORIES",
"GIT_CEILING_DIRECTORIES",
"GIT_COMMON_DIR",
"GIT_DIR",
"GIT_DISCOVERY_ACROSS_FILESYSTEM",
"GIT_GRAFT_FILE",
"GIT_IMPLICIT_WORK_TREE",
"GIT_INDEX_FILE",
"GIT_NAMESPACE",
"GIT_OBJECT_DIRECTORY",
"GIT_PREFIX",
"GIT_QUARANTINE_PATH",
"GIT_REPLACE_REF_BASE",
"GIT_SHALLOW_FILE",
"GIT_WORK_TREE",
] {
cmd.env_remove(key);
}
}