Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 0c128da

Browse files
committed
feat: バージョンを2.2.0に更新し、GitServiceのリモート接続エラーハンドリングを改善
1 parent c599f0e commit 0c128da

6 files changed

Lines changed: 34 additions & 32 deletions

File tree

Cargo.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "wk-371tti-net"
3-
version = "2.1.5"
3+
version = "2.2.0"
44
edition = "2024"
55

66
[dependencies]

src/git/mod.rs

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ use std::{
55
};
66

77
use gix::{Repository, bstr::ByteSlice};
8-
use log::info;
8+
use log::{error, info};
99

1010
use crate::config::Config;
1111

@@ -136,19 +136,23 @@ impl GitService {
136136
}
137137

138138
fn fetch_origin(&self) -> Result<(), GitServiceError> {
139-
let auth_url = self.config.git_config.auth_able_url();
140-
141139
let remote = self
142140
.repo
143-
.find_fetch_remote(Some(auth_url.as_bytes().as_bstr()))
144-
.map_err(GitServiceError::FailedFetchOriginUrl)?;
141+
.find_remote("origin")
142+
.map_err(GitServiceError::FailedFetchOrigin)?;
143+
144+
let remote = remote.with_url(self.config.git_config.auth_able_url().as_bytes().as_bstr())
145+
.map_err(|err| GitServiceError::FailedOperation(format!("Failed to set remote URL: {}", err)))?;
145146

146147
let should_interrupt = AtomicBool::new(false);
147148
let mut progress = gix::progress::Discard;
148149

149-
let _outcome = remote
150-
.connect(gix::remote::Direction::Fetch)
151-
.map_err(GitServiceError::FailedRemoteConnect)?
150+
let connection = remote.connect(gix::remote::Direction::Fetch).map_err(|e| {
151+
error!("remote connect error: {:?}", e);
152+
GitServiceError::FailedRemoteConnect(e)
153+
})?;
154+
155+
let _outcome = connection
152156
.prepare_fetch(&mut progress, Default::default())
153157
.map_err(GitServiceError::FailedRemotePrepareFetch)?
154158
.receive(&mut progress, &should_interrupt)
@@ -319,7 +323,7 @@ pub enum GitServiceError {
319323
FailedCloneBranchConfig(gix::refs::name::Error),
320324
FailedFetch(gix::clone::fetch::Error),
321325
FailedCheckout(gix::clone::checkout::main_worktree::Error),
322-
FailedFetchOriginUrl(gix::remote::find::for_fetch::Error),
326+
FailedFetchOrigin(gix::remote::find::existing::Error),
323327
FailedRemoteConnect(gix::remote::connect::Error),
324328
FailedRemotePrepareFetch(gix::remote::fetch::prepare::Error),
325329
FailedRemoteReceive(gix::remote::fetch::Error),
@@ -354,7 +358,7 @@ impl std::fmt::Display for GitServiceError {
354358
}
355359
GitServiceError::FailedFetch(_) => write!(f, "Failed to fetch repository"),
356360
GitServiceError::FailedCheckout(_) => write!(f, "Failed to checkout worktree"),
357-
GitServiceError::FailedFetchOriginUrl(_) => write!(f, "Failed to find origin remote"),
361+
GitServiceError::FailedFetchOrigin(_) => write!(f, "Failed to find origin remote"),
358362
GitServiceError::FailedRemoteConnect(_) => write!(f, "Failed to connect remote"),
359363
GitServiceError::FailedRemotePrepareFetch(_) => {
360364
write!(f, "Failed to prepare remote fetch")
@@ -411,8 +415,8 @@ impl std::fmt::Debug for GitServiceError {
411415
GitServiceError::FailedCheckout(err) => {
412416
write!(f, "GitServiceError::FailedCheckout({:?})", err)
413417
}
414-
GitServiceError::FailedFetchOriginUrl(err) => {
415-
write!(f, "GitServiceError::FailedFetchOriginUrl({:?})", err)
418+
GitServiceError::FailedFetchOrigin(err) => {
419+
write!(f, "GitServiceError::FailedFetchOrigin({:?})", err)
416420
}
417421
GitServiceError::FailedRemoteConnect(err) => {
418422
write!(f, "GitServiceError::FailedRemoteConnect({:?})", err)

src/main.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,9 @@ async fn main() -> std::io::Result<()> {
7070
["icon.png"] => conn
7171
.add_header("Cache-Control", "public, max-age=300, must-revalidate")
7272
.png_body(include_bytes!("../static/icon.png")),
73+
["371tti_icon.png"] => conn
74+
.add_header("Cache-Control", "public, max-age=300, must-revalidate")
75+
.png_body(include_bytes!("../static/371tti_icon.png")),
7376
["ls", path @ ..] => match conn.c.ls_routing(path).await {
7477
Ok(result) => match conn.json_body_serialized(&result) {
7578
Ok(c) => c,

src/scheduler/task.rs

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -89,15 +89,19 @@ pub fn cron_task() -> BoxedTask {
8989
)
9090
.await;
9191

92-
ctx.scheduler
93-
.push_task(
94-
TaskID::GIT_UPDATE,
95-
git_update_task,
96-
TaskPriority::NORMAL,
97-
None,
98-
None,
99-
)
100-
.await;
92+
if ctx.config.git_config.enable_remote {
93+
ctx.scheduler
94+
.push_task(
95+
TaskID::GIT_UPDATE,
96+
git_update_task,
97+
TaskPriority::NORMAL,
98+
None,
99+
None,
100+
)
101+
.await;
102+
} else {
103+
log::info!("Remote Git repository is disabled, skipping clone/load");
104+
}
101105

102106
if task_id.counter() % 12 == 0 {
103107
// 1時間に1回? スケジューラーの実装忘れた

src/web/context.rs

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ use srv_session::{
1111
use crate::{
1212
SESSION_COOKIE_NAME, TASK_SCHEDULER_WORKER_COUNT,
1313
config::Config,
14-
git::GitService,
1514
scheduler::{TaskID, TaskPriority, TaskScheduler, task},
1615
state::{AccountKV, SessionKV, Storage},
1716
web::{
@@ -64,14 +63,6 @@ impl SiteContext {
6463
config.http_config.account_timeout,
6564
config.hash_config.clone(),
6665
);
67-
GitService::load_or_clone_async(config.clone())
68-
.await
69-
.map_err(|err| {
70-
std::io::Error::new(
71-
std::io::ErrorKind::Other,
72-
format!("Failed to initialize GitService: {}", err),
73-
)
74-
})?;
7566
let shared: Arc<SiteContextShared> = Arc::new(SiteContextShared {
7667
ls_api: LsAPI::new(config.clone()),
7768
docs_router: DocsRouter::new(config.clone()),

0 commit comments

Comments
 (0)