summaryrefslogtreecommitdiff
path: root/server/common/src/git.rs
diff options
context:
space:
mode:
authorJoel Klinghed <the_jk@spawned.biz>2025-02-20 22:53:27 +0100
committerJoel Klinghed <the_jk@spawned.biz>2025-02-20 22:53:27 +0100
commite940d84f69e3fd627731d5d3f698d6f838797862 (patch)
tree779eefcde993e22c0a69c18a3cb6e1cb9d17aad3 /server/common/src/git.rs
parentbf025b4977543a371df9dbdddfe9cc2f02f2a8d0 (diff)
WIPWIP
Diffstat (limited to 'server/common/src/git.rs')
-rw-r--r--server/common/src/git.rs14
1 files changed, 14 insertions, 0 deletions
diff --git a/server/common/src/git.rs b/server/common/src/git.rs
index ac0bdb3..02a9c0a 100644
--- a/server/common/src/git.rs
+++ b/server/common/src/git.rs
@@ -49,6 +49,7 @@ pub struct Repository {
project_id: Option<String>,
socket: Option<PathBuf>,
githook: Option<PathBuf>,
+ ssh_config: Option<PathBuf>,
// Lock for any repo task, 90% of all tasks are readers but there are some writers
// where nothing else may be done.
@@ -138,6 +139,12 @@ impl RepoData {
self.config_set(repo, "eyeballs.socket", relative.to_str().unwrap())
.await?;
}
+ if let Some(ssh_config) = repo.ssh_config() {
+ let relative = diff_paths(ssh_config, repo.path()).unwrap();
+ self.config_set(repo, "core.sshcommand",
+ format!("ssh -F {}", relative.to_str().unwrap()).as_str())
+ .await?;
+ }
// Handled by pre-receive hook, allow fast forwards for reviews that expect it.
self.config_set(repo, "receive.denyNonFastForwards", "false")
@@ -454,10 +461,12 @@ impl Repository {
remote: Option<impl Into<String>>,
project_id: Option<impl Into<String>>,
githook: Option<impl Into<PathBuf>>,
+ ssh_config: Option<impl Into<PathBuf>>,
) -> Self {
let path = path.into();
let project_id = project_id.map(|x| x.into());
let githook = githook.map(|x| x.into());
+ let ssh_config = ssh_config.map(|x| x.into());
let socket: Option<PathBuf>;
if let Some(project_id) = &project_id {
socket = Some(
@@ -475,6 +484,7 @@ impl Repository {
path,
socket,
githook,
+ ssh_config,
bare,
lock: RwLock::new(RepoData::new()),
}
@@ -500,6 +510,10 @@ impl Repository {
self.githook.as_deref()
}
+ pub fn ssh_config(&self) -> Option<&Path> {
+ self.ssh_config.as_deref()
+ }
+
pub fn is_bare(&self) -> bool {
self.bare
}