summaryrefslogtreecommitdiff
path: root/server/common/src/git.rs
diff options
context:
space:
mode:
authorJoel Klinghed <the_jk@spawned.biz>2025-06-04 00:11:41 +0200
committerJoel Klinghed <the_jk@spawned.biz>2025-06-04 00:11:41 +0200
commita84d3cb7e9659b57ad3bbca6cc894a46fbf741fd (patch)
tree9a032c6e6c716436084f346790a7901a09b67e23 /server/common/src/git.rs
parentcd971e758ba7669b94ea3d1d3c2bf2376550820f (diff)
Make integration actually work
Add logs Add remote keys for each user
Diffstat (limited to 'server/common/src/git.rs')
-rw-r--r--server/common/src/git.rs17
1 files changed, 17 insertions, 0 deletions
diff --git a/server/common/src/git.rs b/server/common/src/git.rs
index ac0bdb3..6678db7 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,15 @@ 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 +464,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 +487,7 @@ impl Repository {
path,
socket,
githook,
+ ssh_config,
bare,
lock: RwLock::new(RepoData::new()),
}
@@ -500,6 +513,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
}