Skip to content

Commit 1881e9c

Browse files
authored
fix(context-provider): fix the issue that failed to get branch splited by slash (#4427)
1 parent b409924 commit 1881e9c

3 files changed

Lines changed: 41 additions & 11 deletions

File tree

‎crates/tabby-git/src/lib.rs‎

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,8 +110,16 @@ pub fn sync_refs(root: &Path, url: &str, refs: &Vec<String>) -> anyhow::Result<(
110110
}
111111

112112
for ref_name in refs {
113-
let branch = ref_name.rsplit('/').next().unwrap_or(ref_name);
113+
let branch = if let Some(branch) = ref_name.strip_prefix("refs/heads/") {
114+
branch
115+
} else if let Some(tag) = ref_name.strip_prefix("refs/tags/") {
116+
tag
117+
} else {
118+
ref_name
119+
};
120+
114121
// get the current branch name without refs/ prefix
122+
115123
let output = Command::new("git")
116124
.current_dir(root)
117125
.arg("symbolic-ref")

‎ee/tabby-webserver/src/service/repository/git.rs‎

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -155,15 +155,28 @@ fn to_git_repository(repo: RepositoryDAO, job_info: JobInfo) -> GitRepository {
155155

156156
let refs = if let Some(refs) = &repo.refs {
157157
let config_refs: Vec<String> = serde_json::from_str(refs).unwrap_or_default();
158-
all_refs
158+
config_refs
159159
.into_iter()
160-
.filter(|r| {
161-
let ref_name = r.name.rsplit('/').next().unwrap_or(&r.name);
162-
config_refs.iter().any(|cr| cr == ref_name)
163-
})
164-
.map(|r| GitReference {
165-
name: r.name,
166-
commit: r.commit,
160+
.map(|name| {
161+
let ref_name = all_refs
162+
.iter()
163+
.find(|r| {
164+
r.name == format!("refs/heads/{}", name)
165+
|| r.name == format!("refs/tags/{}", name)
166+
})
167+
.map(|r| r.name.clone())
168+
.unwrap_or(format!("refs/heads/{}", name));
169+
170+
let commit = all_refs
171+
.iter()
172+
.find(|r| r.name == ref_name)
173+
.map(|r| r.commit.clone())
174+
.unwrap_or_default();
175+
176+
GitReference {
177+
name: ref_name,
178+
commit,
179+
}
167180
})
168181
.collect()
169182
} else {

‎ee/tabby-webserver/src/service/repository/third_party.rs‎

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -312,14 +312,23 @@ fn to_provided_repository(value: ProvidedRepositoryDAO, job_info: JobInfo) -> Pr
312312
config_refs
313313
.into_iter()
314314
.map(|name| {
315+
let ref_name = all_refs
316+
.iter()
317+
.find(|r| {
318+
r.name == format!("refs/heads/{}", name)
319+
|| r.name == format!("refs/tags/{}", name)
320+
})
321+
.map(|r| r.name.clone())
322+
.unwrap_or(format!("refs/heads/{}", name));
323+
315324
let commit = all_refs
316325
.iter()
317-
.find(|r| r.name.rsplit('/').next().unwrap_or(&r.name) == name.as_str())
326+
.find(|r| r.name == ref_name)
318327
.map(|r| r.commit.clone())
319328
.unwrap_or_default();
320329

321330
GitReference {
322-
name: format!("refs/heads/{name}"),
331+
name: ref_name,
323332
commit,
324333
}
325334
})

0 commit comments

Comments
 (0)