remove dependence of projects controller towards repo actions

This commit is contained in:
Kiril Videlov 2024-07-07 23:19:48 +02:00
parent 50577f3865
commit 569d282700
No known key found for this signature in database
GPG Key ID: A4C733025427C471
2 changed files with 10 additions and 11 deletions

View File

@ -16,6 +16,8 @@ use crate::{
};
use crate::{error::Code, git::CommitHeadersV2};
use super::Config;
pub struct ProjectRepo {
git_repository: git2::Repository,
project: projects::Project,
@ -137,14 +139,9 @@ pub trait RepoActions {
P: AsRef<std::path::Path>;
fn get_head(&self) -> Result<git2::Reference>;
fn git_index_size(&self) -> Result<usize>;
fn config(&self) -> super::Config;
}
impl RepoActions for ProjectRepo {
fn config(&self) -> super::Config {
super::Config::from(&self.git_repository)
}
fn git_index_size(&self) -> Result<usize> {
let head = self.git_repository.index()?.len();
Ok(head)
@ -657,7 +654,7 @@ impl RepoActions for ProjectRepo {
}
fn signatures(project_repo: &ProjectRepo) -> Result<(git2::Signature, git2::Signature)> {
let config = project_repo.config();
let config: Config = project_repo.repo().into();
let author = match (config.user_name()?, config.user_email()?) {
(None, Some(email)) => git2::Signature::now(&email, &email)?,

View File

@ -10,7 +10,7 @@ use bstr::BString;
use super::{storage, storage::UpdateRequest, Project, ProjectId};
use crate::projects::AuthKey;
use crate::{error, project_repository};
use crate::{git::RepositoryExt, project_repository::RepoActions};
use crate::{git::RepositoryExt, project_repository::Config};
#[async_trait]
pub trait Watchers {
@ -217,15 +217,17 @@ impl Controller {
pub fn get_local_config(&self, id: ProjectId, key: &str) -> Result<Option<String>> {
let project = self.projects_storage.get(id)?;
let repo = project_repository::ProjectRepo::open(&project)?;
repo.config().get_local(key)
let project_repo = project_repository::ProjectRepo::open(&project)?;
let config: Config = project_repo.repo().into();
config.get_local(key)
}
pub fn set_local_config(&self, id: ProjectId, key: &str, value: &str) -> Result<()> {
let project = self.projects_storage.get(id)?;
let repo = project_repository::ProjectRepo::open(&project)?;
repo.config().set_local(key, value)
let project_repo = project_repository::ProjectRepo::open(&project)?;
let config: Config = project_repo.repo().into();
config.set_local(key, value)
}
pub fn check_signing_settings(&self, id: ProjectId) -> Result<bool> {