Skip to content

Commit c6a3741

Browse files
committed
jj-lib 0.3.0 - removes libgit2, needs tokio's exts (but not its runtime)
1 parent f21cc4e commit c6a3741

7 files changed

Lines changed: 70 additions & 157 deletions

File tree

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
---
2+
agent: agent
3+
---
4+
In **src-tauri/**, run `cargo tree -d` to see duplicate crate dependencies. Some of these will be due to a dependency version used by jj-lib or jj-cli differing from what's in Cargo.toml. Update Cargo.toml to match jj's versions.

src-tauri/Cargo.lock

Lines changed: 11 additions & 101 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src-tauri/Cargo.toml

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -26,15 +26,12 @@ tauri-plugin-shell = "~2.2.0"
2626
tauri-plugin-window-state = "2.0.0"
2727
tauri-plugin-log = "2.0.0"
2828

29-
jj-lib = { version = "0.29", features = ["vendored-openssl", "watchman"] }
30-
jj-cli = { version = "0.29", default-features = false, features = [
31-
"git",
32-
"vendored-openssl",
33-
] }
29+
jj-lib = { version = "0.30", features = ["watchman"] }
30+
jj-cli = { version = "0.30" }
3431

3532
# deps shared with JJ, which we try to keep on the same version
36-
anyhow = "1.0.93"
37-
clap = { version = "4.5.20", features = [
33+
anyhow = "1.0.100"
34+
clap = { version = "4.5.53", features = [
3835
"derive",
3936
"deprecated",
4037
"wrap_help",
@@ -44,25 +41,25 @@ config = { version = "0.13.4", default-features = false, features = ["toml"] }
4441
dirs = "5.0.1"
4542
dunce = "1.0.5"
4643
itertools = "0.14"
47-
indexmap = "2.6"
44+
indexmap = "2.12"
4845
gix = { version = "0.71", default-features = false, features = [
4946
"index",
5047
"max-performance-safe",
5148
"blob-diff",
5249
] }
5350
pollster = "0.4"
5451
serde = { version = "1.0", features = ["derive"] }
55-
serde_json = "1.0.132"
56-
toml_edit = { version = "0.22.23", features = ["serde"] }
57-
thiserror = "1.0.68"
52+
serde_json = "1.0.145"
53+
toml_edit = { version = "0.22.27", features = ["serde"] }
54+
thiserror = "2.0.17"
5855

5956
# deps used by JJ but with different features
60-
chrono = { version = "0.4.38", features = ["serde"] }
61-
git2 = { version = "0.20.1", features = ["vendored-libgit2"] }
57+
chrono = { version = "0.4.42", features = ["serde"] }
6258

6359
# extra deps not used by JJ
6460
log = "0.4"
6561
futures-util = "0.3.31"
62+
tokio = { version = "1.48", features = ["io-util"] }
6663
ts-rs = { version = "7.1.1", features = ["chrono-impl"], optional = true }
6764

6865
[target."cfg(windows)".dependencies]

src-tauri/src/worker/gui_util.rs

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ use std::{
1313

1414
use anyhow::{Context, Result, anyhow};
1515
use chrono::TimeZone;
16-
use git2::Repository;
1716
use itertools::Itertools;
1817
use jj_cli::{cli_util::short_operation_hash, git_util::is_colocated_git_workspace, revset_util};
1918
use jj_lib::{
@@ -171,11 +170,10 @@ impl WorkspaceSession<'_> {
171170
Ok(self.operation.repo.store().get_commit(id)?)
172171
}
173172

174-
pub fn git_repo(&self) -> Result<Option<Repository>> {
175-
match self.operation.git_backend() {
176-
Some(backend) => Ok(Some(Repository::open(backend.git_repo_path())?)),
177-
None => Ok(None),
178-
}
173+
pub fn git_repo(&self) -> Option<gix::Repository> {
174+
self.operation
175+
.git_backend()
176+
.map(|backend| backend.git_repo())
179177
}
180178

181179
pub fn load_at_head(&mut self) -> Result<bool> {
@@ -420,12 +418,11 @@ impl WorkspaceSession<'_> {
420418
pub fn format_config(&self) -> Result<messages::RepoConfig> {
421419
let absolute_path = self.workspace.workspace_root().into();
422420

423-
let git_remotes = match self.git_repo()? {
421+
let git_remotes = match self.git_repo() {
424422
Some(repo) => repo
425-
.remotes()?
426-
.iter()
427-
.flatten()
428-
.map(|s| s.to_owned())
423+
.remote_names()
424+
.into_iter()
425+
.map(|s| s.to_string())
429426
.collect(),
430427
None => vec![],
431428
};

src-tauri/src/worker/mutations.rs

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@ use std::sync::Arc;
44
use anyhow::{Context, Result, anyhow};
55
use indexmap::IndexMap;
66
use itertools::Itertools;
7-
use jj_lib::backend::{FileId, MergedTreeId, TreeValue};
7+
use jj_lib::backend::{CopyId, FileId, MergedTreeId, TreeValue};
8+
use jj_lib::conflicts::{self, ConflictMarkerStyle, MaterializedTreeValue};
89
use jj_lib::merge::Merge;
910
use jj_lib::merged_tree::{MergedTree, MergedTreeBuilder};
1011
use jj_lib::ref_name::{RefNameBuf, RemoteName, RemoteNameBuf, RemoteRefSymbol};
@@ -26,6 +27,7 @@ use jj_lib::{
2627
str_util::StringPattern,
2728
};
2829
use pollster::block_on;
30+
use tokio::io::AsyncReadExt;
2931

3032
use crate::messages::{
3133
AbandonRevisions, BackoutRevisions, CheckoutRevision, CopyChanges, CopyHunk, CreateRef,
@@ -1422,7 +1424,7 @@ impl Mutation for GitFetch {
14221424
fn execute(self: Box<Self>, ws: &mut WorkspaceSession) -> Result<MutationResult> {
14231425
let mut tx = ws.start_transaction()?;
14241426

1425-
let git_repo = match ws.git_repo()? {
1427+
let git_repo = match ws.git_repo() {
14261428
Some(git_repo) => git_repo,
14271429
None => precondition!("No git backend"),
14281430
};
@@ -1435,9 +1437,9 @@ impl Mutation for GitFetch {
14351437
GitFetch::AllRemotes { branch_ref } => {
14361438
let branch_name = branch_ref.as_branch()?;
14371439
for remote_name in git_repo
1438-
.remotes()?
1440+
.remote_names()
14391441
.into_iter()
1440-
.filter_map(|remote| remote.map(|remote| remote.to_owned()))
1442+
.map(|remote| remote.to_string())
14411443
{
14421444
remote_patterns.push((remote_name, Some(branch_name.to_owned())));
14431445
}
@@ -1570,14 +1572,12 @@ fn classify_branch_push(
15701572
}
15711573

15721574
fn read_file_content(store: &Arc<Store>, tree: &MergedTree, path: &RepoPath) -> Result<Vec<u8>> {
1573-
use jj_lib::conflicts::{self, ConflictMarkerStyle, MaterializedTreeValue};
1574-
15751575
let entry = tree.path_value(path)?;
15761576
match entry.into_resolved() {
15771577
Ok(Some(TreeValue::File { id, .. })) => {
1578-
let mut reader = store.read_file(path, &id)?;
1578+
let mut reader = block_on(store.read_file(path, &id))?;
15791579
let mut content = Vec::new();
1580-
reader.read_to_end(&mut content)?;
1580+
block_on(reader.read_to_end(&mut content))?;
15811581
Ok(content)
15821582
}
15831583
Ok(Some(_)) => Ok(Vec::new()),
@@ -1718,6 +1718,7 @@ fn update_tree_entry(
17181718
Merge::normal(TreeValue::File {
17191719
id: new_blob,
17201720
executable,
1721+
copy_id: CopyId::placeholder(),
17211722
}),
17221723
);
17231724
let new_tree_id = builder.write_tree(store)?;

0 commit comments

Comments
 (0)