From 9224aa1a006acb6af6da8cfbee82278612bd05d0 Mon Sep 17 00:00:00 2001 From: Jordan Doyle Date: Sun, 25 May 2025 16:34:21 +0800 Subject: [PATCH] Update to Rust 2024 Edition --- Cargo.toml | 2 +- flake.lock | 25 +++++++++++++------------ flake.nix | 8 ++++++-- src/git.rs | 12 ++++++------ src/main.rs | 36 +++++++++++++++++++++--------------- src/theme.rs | 2 +- src/unified_diff_builder.rs | 2 +- tree-sitter-grammar-repository/Cargo.toml | 2 +- tree-sitter-grammar-repository/build.rs | 4 ++-- src/database/indexer.rs | 2 +- src/layers/logger.rs | 2 +- src/methods/filters.rs | 2 +- src/methods/index.rs | 2 +- src/database/schema/commit.rs | 4 ++-- src/database/schema/repository.rs | 2 +- src/database/schema/tag.rs | 2 +- src/database/schema/tree.rs | 6 +++--- src/methods/repo/about.rs | 4 ++-- src/methods/repo/commit.rs | 4 ++-- src/methods/repo/diff.rs | 6 +++--- src/methods/repo/log.rs | 4 ++-- src/methods/repo/refs.rs | 2 +- src/methods/repo/smart_git.rs | 10 +++++----- src/methods/repo/snapshot.rs | 6 +++--- src/methods/repo/summary.rs | 4 ++-- src/methods/repo/tag.rs | 4 ++-- src/methods/repo/tree.rs | 6 +++--- 27 files changed, 84 insertions(+), 81 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 50e8c12..08a9f62 100644 --- a/Cargo.toml +++ a/Cargo.toml @@ -1,8 +1,8 @@ [package] name = "rgit" description = "A gitweb/cgit-like interface" version = "0.1.5" -edition = "2021" +edition = "2024" authors = ["Jordan Doyle "] license = "WTFPL" diff --git a/flake.lock b/flake.lock index ddc0516..3d6543c 100644 --- a/flake.lock +++ a/flake.lock @@ -1,13 +1,13 @@ { "nodes": { "advisory-db": { "flake": false, "locked": { - "lastModified": 1746174207, - "narHash": "sha256-/ZPWm1dsz3tXREXGQfa/W6UsQ+J3Pvi0A0U1DZVgLqU=", + "lastModified": 1747937073, + "narHash": "sha256-52H8P6jAHEwRvg7rXr4Z7h1KHZivO8T1Z9tN6R0SWJg=", "owner": "rustsec", "repo": "advisory-db", - "rev": "4584ad9a5ea16ce196317cf4d3593e974fb4a8a1", + "rev": "bccf313a98c034573ac4170e6271749113343d97", "type": "github" }, "original": { @@ -18,11 +18,11 @@ }, "crane": { "locked": { - "lastModified": 1746291859, - "narHash": "sha256-DdWJLA+D5tcmrRSg5Y7tp/qWaD05ATI4Z7h22gd1h7Q=", + "lastModified": 1748047550, + "narHash": "sha256-t0qLLqb4C1rdtiY8IFRH5KIapTY/n3Lqt57AmxEv9mk=", "owner": "ipetkov", "repo": "crane", - "rev": "dfd9a8dfd09db9aad544c4d3b6c47b12562544a5", + "rev": "b718a78696060df6280196a6f992d04c87a16aef", "type": "github" }, "original": { @@ -69,16 +69,15 @@ }, "nixpkgs": { "locked": { - "lastModified": 1746282974, - "narHash": "sha256-+mBFyA/Viq1m6qZkdRsg1w+SGlI0WGy9qlvVEHSAaho=", + "lastModified": 1748159586, + "narHash": "sha256-xeCMAhKjhDjVFsfJcftv+CWcExYo+X8IBUW8L947ww4=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "328d7e75d76c2fef489056c7195ae3f913a0f5fa", + "rev": "7382d075365a977c4a9c8aa4c5e4abed15f00ee1", "type": "github" }, "original": { "owner": "NixOS", - "ref": "staging-next", "repo": "nixpkgs", "type": "github" } @@ -130,11 +129,11 @@ "nixpkgs": "nixpkgs_2" }, "locked": { - "lastModified": 1746216483, - "narHash": "sha256-4h3s1L/kKqt3gMDcVfN8/4v2jqHrgLIe4qok4ApH5x4=", + "lastModified": 1747912973, + "narHash": "sha256-XgxghfND8TDypxsMTPU2GQdtBEsHTEc3qWE6RVEk8O0=", "owner": "numtide", "repo": "treefmt-nix", - "rev": "29ec5026372e0dec56f890e50dbe4f45930320fd", + "rev": "020cb423808365fa3f10ff4cb8c0a25df35065a3", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index e4466d9..ae07132 100644 --- a/flake.nix +++ a/flake.nix @@ -1,6 +1,6 @@ { inputs = { - nixpkgs.url = "github:NixOS/nixpkgs/staging-next"; + nixpkgs.url = "github:NixOS/nixpkgs"; crane.url = "github:ipetkov/crane"; utils.url = "github:numtide/flake-utils"; @@ -60,6 +60,7 @@ nativeBuildInputs = with pkgs; [ cmake clang makeBinaryWrapper ]; LIBCLANG_PATH = "${pkgs.clang.cc.lib}/lib"; ROCKSDB_LIB_DIR = "${pkgs.rocksdb}/lib"; + SNAPPY_LIB_DIR = "${pkgs.snappy}/lib"; }; cargoArtifacts = craneLib.buildDepsOnly (commonArgs // { src = cargoOnlySrc; }); buildArgs = commonArgs // { @@ -97,9 +98,12 @@ devShells.default = craneLib.devShell { checks = self.checks.${system}; - packages = with pkgs; [ rust-analyzer ]; + packages = with pkgs; [ rust-analyzer clang ]; RUST_SRC_PATH = pkgs.rustPlatform.rustLibSrc; + LIBCLANG_PATH = "${pkgs.clang.cc.lib}/lib"; TREE_SITTER_GRAMMAR_LIB_DIR = rgit-grammar; + ROCKSDB_LIB_DIR = "${pkgs.rocksdb}/lib"; + SNAPPY_LIB_DIR = "${pkgs.snappy}/lib"; }; nixosModules.default = { config, lib, pkgs, ... }: diff --git a/src/git.rs b/src/git.rs index f3ed9c4..b85502f 100644 --- a/src/git.rs +++ a/src/git.rs @@ -1,17 +1,17 @@ -use anyhow::{anyhow, Context, Result}; +use anyhow::{Context, Result, anyhow}; use axum::response::IntoResponse; -use bytes::{buf::Writer, BufMut, Bytes, BytesMut}; +use bytes::{BufMut, Bytes, BytesMut, buf::Writer}; use comrak::{ComrakPlugins, Options}; use flate2::write::GzEncoder; use gix::{ + ObjectId, ThreadSafeRepository, actor::SignatureRef, bstr::{BStr, BString, ByteSlice, ByteVec}, - diff::blob::{platform::prepare_diff::Operation, Sink}, + diff::blob::{Sink, platform::prepare_diff::Operation}, object::Kind, - objs::{tree::EntryRef, CommitRef, TagRef}, + objs::{CommitRef, TagRef, tree::EntryRef}, prelude::TreeEntryRefExt, traverse::tree::visit::Action, - ObjectId, ThreadSafeRepository, }; use itertools::Either; use moka::future::Cache; @@ -34,7 +34,7 @@ use crate::{ methods::filters::DisplayHexBuffer, - syntax_highlight::{format_file, format_file_inner, ComrakHighlightAdapter, FileIdentifier}, + syntax_highlight::{ComrakHighlightAdapter, FileIdentifier, format_file, format_file_inner}, unified_diff_builder::{Callback, UnifiedDiffBuilder}, }; diff --git a/src/main.rs b/src/main.rs index f557146..f679199 100644 --- a/src/main.rs +++ a/src/main.rs @@ -14,30 +14,30 @@ use anyhow::Context; use askama::Template; use axum::{ + Extension, Router, body::Body, http, http::{HeaderValue, StatusCode}, response::{IntoResponse, Response}, routing::get, - Extension, Router, }; use clap::Parser; use const_format::formatcp; use database::schema::{ - prefixes::{TREE_FAMILY, TREE_ITEM_FAMILY}, SCHEMA_VERSION, + prefixes::{TREE_FAMILY, TREE_ITEM_FAMILY}, }; use rocksdb::{Options, SliceTransform}; use tokio::{ net::TcpListener, - signal::unix::{signal, SignalKind}, + signal::unix::{SignalKind, signal}, sync::mpsc, }; use tower_http::{cors::CorsLayer, timeout::TimeoutLayer}; use tower_layer::layer_fn; -use tracing::{error, info, instrument, warn}; +use tracing::{error, info, instrument, level_filters::LevelFilter, warn}; use tracing_subscriber::{ - fmt::format::FmtSpan, layer::SubscriberExt, util::SubscriberInitExt, EnvFilter, + EnvFilter, fmt::format::FmtSpan, layer::SubscriberExt, util::SubscriberInitExt, }; use xxhash_rust::const_xxh3; @@ -127,12 +127,10 @@ async fn main() -> Result<(), anyhow::Error> { let args: Args = Args::parse(); - if std::env::var_os("RUST_LOG").is_none() { - std::env::set_var("RUST_LOG", "info"); - } - let logger_layer = tracing_subscriber::fmt::layer().with_span_events(FmtSpan::CLOSE); - let env_filter = EnvFilter::from_default_env(); + let env_filter = EnvFilter::builder() + .with_default_directive(LevelFilter::INFO.into()) + .from_env()?; tracing_subscriber::registry() .with(env_filter) @@ -312,13 +310,15 @@ ) -> Result<(), tokio::task::JoinError> { let (indexer_wakeup_send, mut indexer_wakeup_recv) = mpsc::channel(10); - std::thread::spawn(move || loop { - info!("Running periodic index"); - crate::database::indexer::run(&scan_path, repository_list.as_deref(), &db); - info!("Finished periodic index"); - - if indexer_wakeup_recv.blocking_recv().is_none() { - break; + std::thread::spawn(move || { + loop { + info!("Running periodic index"); + crate::database::indexer::run(&scan_path, repository_list.as_deref(), &db); + info!("Finished periodic index"); + + if indexer_wakeup_recv.blocking_recv().is_none() { + break; + } } }); @@ -328,7 +328,7 @@ match refresh_interval { RefreshInterval::Never => futures_util::future::pending().await, RefreshInterval::Duration(v) => tokio::time::sleep(v).await, - }; + } }; async move { diff --git a/src/theme.rs b/src/theme.rs index b14a701..2410865 100644 --- a/src/theme.rs +++ a/src/theme.rs @@ -1,8 +1,8 @@ use std::fmt::{Formatter, Write}; use serde::{ - de::{value::MapAccessDeserializer, Error, MapAccess, Visitor}, Deserialize, Deserializer, + de::{Error, MapAccess, Visitor, value::MapAccessDeserializer}, }; #[derive(Deserialize)] diff --git a/src/unified_diff_builder.rs b/src/unified_diff_builder.rs index 38094ab..9b0da1f 100644 --- a/src/unified_diff_builder.rs +++ a/src/unified_diff_builder.rs @@ -1,11 +1,11 @@ //! Heavily based on [`gix::diff::blob::UnifiedDiffBuilder`] but provides //! a callback that can be used for styling the diffs. use std::{fmt::Write, ops::Range}; use gix::diff::blob::{ - intern::{InternedInput, Interner, Token}, Sink, + intern::{InternedInput, Interner, Token}, }; pub(crate) trait Callback { diff --git a/tree-sitter-grammar-repository/Cargo.toml b/tree-sitter-grammar-repository/Cargo.toml index 88c6678..4734dfe 100644 --- a/tree-sitter-grammar-repository/Cargo.toml +++ a/tree-sitter-grammar-repository/Cargo.toml @@ -1,8 +1,8 @@ [package] name = "tree-sitter-grammar-repository" description = "tree-sitter grammars built from Helix with support for dynamic linking" version = "0.0.1" -edition = "2021" +edition = "2024" authors = ["Jordan Doyle "] license = "WTFPL" diff --git a/tree-sitter-grammar-repository/build.rs b/tree-sitter-grammar-repository/build.rs index 4ea8c86..44311ae 100644 --- a/tree-sitter-grammar-repository/build.rs +++ a/tree-sitter-grammar-repository/build.rs @@ -8,7 +8,7 @@ sync::LazyLock, }; -use anyhow::{bail, Context}; +use anyhow::{Context, bail}; use heck::{ToSnakeCase, ToUpperCamelCase}; use quote::{format_ident, quote}; use serde::Deserialize; @@ -357,7 +357,7 @@ Ok(Some(quote! { pub mod #name { - extern "C" { + unsafe extern "C" { fn #ffi() -> *const (); } diff --git a/src/database/indexer.rs b/src/database/indexer.rs index 717b5f6..67e8e5d 100644 --- a/src/database/indexer.rs +++ a/src/database/indexer.rs @@ -9,11 +9,11 @@ use anyhow::Context; use gix::{ + ObjectId, Reference, Url, bstr::{BStr, ByteSlice}, objs::tree::EntryKind, refs::Category, url::Scheme, - ObjectId, Reference, Url, }; use itertools::{Either, Itertools}; use rocksdb::WriteBatch; diff --git a/src/layers/logger.rs b/src/layers/logger.rs index 6e1a578..666b0ef 100644 --- a/src/layers/logger.rs +++ a/src/layers/logger.rs @@ -15,7 +15,7 @@ use futures_util::future::{FutureExt, Join, Map, Ready}; use tokio::task::futures::TaskLocalFuture; use tower_service::Service; -use tracing::{error, info, instrument::Instrumented, Instrument, Span}; +use tracing::{Instrument, Span, error, info, instrument::Instrumented}; use uuid::Uuid; use super::UnwrapInfallible; diff --git a/src/methods/filters.rs b/src/methods/filters.rs index e39b3d2..6669d4f 100644 --- a/src/methods/filters.rs +++ a/src/methods/filters.rs @@ -12,7 +12,7 @@ rend::{i32_le, i64_le}, tuple::ArchivedTuple2, }; -use time::{format_description::well_known::Rfc3339, OffsetDateTime, UtcOffset}; +use time::{OffsetDateTime, UtcOffset, format_description::well_known::Rfc3339}; // pub fn format_time(s: impl Borrow) -> Result { pub fn format_time(s: impl Into) -> Result { diff --git a/src/methods/index.rs b/src/methods/index.rs index 592001f..398eb0c 100644 --- a/src/methods/index.rs +++ a/src/methods/index.rs @@ -1,10 +1,10 @@ use std::{cell::RefCell, sync::Arc}; use anyhow::Context; use askama::Template; use axum::{ - response::{IntoResponse, Response}, Extension, + response::{IntoResponse, Response}, }; use itertools::{Either, Itertools}; diff --git a/src/database/schema/commit.rs b/src/database/schema/commit.rs index 12307b4..9311ed1 100644 --- a/src/database/schema/commit.rs +++ a/src/database/schema/commit.rs @@ -1,7 +1,7 @@ use std::sync::Arc; use anyhow::Context; -use gix::{actor::SignatureRef, objs::CommitRef, ObjectId}; +use gix::{ObjectId, actor::SignatureRef, objs::CommitRef}; use rkyv::{Archive, Serialize}; use rocksdb::{IteratorMode, ReadOptions, WriteBatch}; use time::{OffsetDateTime, UtcOffset}; @@ -9,9 +9,9 @@ use yoke::{Yoke, Yokeable}; use crate::database::schema::{ + Yoked, prefixes::{COMMIT_COUNT_FAMILY, COMMIT_FAMILY}, repository::RepositoryId, - Yoked, }; #[derive(Serialize, Archive, Debug, Yokeable)] diff --git a/src/database/schema/repository.rs b/src/database/schema/repository.rs index 8092c1c..58a1f9e 100644 --- a/src/database/schema/repository.rs +++ a/src/database/schema/repository.rs @@ -7,10 +7,10 @@ use yoke::{Yoke, Yokeable}; use crate::database::schema::{ + Yoked, commit::CommitTree, prefixes::{COMMIT_FAMILY, REFERENCE_FAMILY, REPOSITORY_FAMILY, TAG_FAMILY}, tag::TagTree, - Yoked, }; #[derive(Serialize, Archive, Debug, PartialEq, Eq, Hash, Yokeable)] diff --git a/src/database/schema/tag.rs b/src/database/schema/tag.rs index b2db248..e1f0d76 100644 --- a/src/database/schema/tag.rs +++ a/src/database/schema/tag.rs @@ -6,10 +6,10 @@ use yoke::{Yoke, Yokeable}; use crate::database::schema::{ + Yoked, commit::{ArchivedAuthor, Author}, prefixes::TAG_FAMILY, repository::RepositoryId, - Yoked, }; #[derive(Serialize, Archive, Debug, Yokeable)] diff --git a/src/database/schema/tree.rs b/src/database/schema/tree.rs index c25f6cd..0bbf69a 100644 --- a/src/database/schema/tree.rs +++ a/src/database/schema/tree.rs @@ -1,15 +1,15 @@ use std::collections::BTreeMap; use anyhow::Context; -use gix::{bstr::BStr, ObjectId}; +use gix::{ObjectId, bstr::BStr}; use itertools::{Either, Itertools}; use rkyv::{Archive, Serialize}; -use rocksdb::{WriteBatch, DB}; +use rocksdb::{DB, WriteBatch}; use yoke::{Yoke, Yokeable}; use super::{ - prefixes::{TREE_FAMILY, TREE_ITEM_FAMILY}, Yoked, + prefixes::{TREE_FAMILY, TREE_ITEM_FAMILY}, }; #[derive(Serialize, Archive, Debug, PartialEq, Eq, Hash)] diff --git a/src/methods/repo/about.rs b/src/methods/repo/about.rs index b597f31..23b73c1 100644 --- a/src/methods/repo/about.rs +++ a/src/methods/repo/about.rs @@ -1,17 +1,17 @@ use std::sync::Arc; use askama::Template; -use axum::{extract::Query, response::IntoResponse, Extension}; +use axum::{Extension, extract::Query, response::IntoResponse}; use serde::Deserialize; use crate::{ + Git, git::ReadmeFormat, into_response, methods::{ filters, repo::{Repository, RepositoryPath, Result}, }, - Git, }; #[derive(Deserialize)] diff --git a/src/methods/repo/commit.rs b/src/methods/repo/commit.rs index 53f8a19..2fedf16 100644 --- a/src/methods/repo/commit.rs +++ a/src/methods/repo/commit.rs @@ -1,17 +1,17 @@ use std::sync::Arc; use askama::Template; -use axum::{extract::Query, response::IntoResponse, Extension}; +use axum::{Extension, extract::Query, response::IntoResponse}; use serde::Deserialize; use crate::{ + Git, git::{Commit, OpenRepository}, into_response, methods::{ filters, repo::{Repository, RepositoryPath, Result}, }, - Git, }; #[derive(Template)] diff --git a/src/methods/repo/diff.rs b/src/methods/repo/diff.rs index d170173..767e731 100644 --- a/src/methods/repo/diff.rs +++ a/src/methods/repo/diff.rs @@ -1,24 +1,24 @@ use std::{fmt::Write, sync::Arc}; use askama::Template; use axum::{ + Extension, extract::Query, http::HeaderValue, response::{IntoResponse, Response}, - Extension, }; use bytes::{BufMut, BytesMut}; use clap::crate_version; use time::format_description::well_known::Rfc2822; use crate::{ + Git, git::Commit, http, into_response, methods::{ filters, - repo::{commit::UriQuery, Repository, RepositoryPath, Result}, + repo::{Repository, RepositoryPath, Result, commit::UriQuery}, }, - Git, }; #[derive(Template)] diff --git a/src/methods/repo/log.rs b/src/methods/repo/log.rs index 1882317..65f88c2 100644 --- a/src/methods/repo/log.rs +++ a/src/methods/repo/log.rs @@ -1,8 +1,8 @@ use std::sync::Arc; use anyhow::Context; use askama::Template; -use axum::{extract::Query, response::IntoResponse, Extension}; +use axum::{Extension, extract::Query, response::IntoResponse}; use serde::Deserialize; use crate::{ @@ -10,7 +10,7 @@ into_response, methods::{ filters, - repo::{Repository, Result, DEFAULT_BRANCHES}, + repo::{DEFAULT_BRANCHES, Repository, Result}, }, }; diff --git a/src/methods/repo/refs.rs b/src/methods/repo/refs.rs index f81b062..8c3d08d 100644 --- a/src/methods/repo/refs.rs +++ a/src/methods/repo/refs.rs @@ -9,7 +9,7 @@ }; use anyhow::Context; use askama::Template; -use axum::{response::IntoResponse, Extension}; +use axum::{Extension, response::IntoResponse}; use rkyv::string::ArchivedString; use yoke::Yoke; diff --git a/src/methods/repo/smart_git.rs b/src/methods/repo/smart_git.rs index 56998d0..ce928e8 100644 --- a/src/methods/repo/smart_git.rs +++ a/src/methods/repo/smart_git.rs @@ -1,14 +1,14 @@ use std::{io, io::ErrorKind, path::Path, process::Stdio, str::FromStr}; -use anyhow::{anyhow, Context}; +use anyhow::{Context, anyhow}; use axum::{ + Extension, body::Body, http::{ - header::{HeaderMap, HeaderName, HeaderValue}, Method, Uri, + header::{HeaderMap, HeaderName, HeaderValue}, }, response::{IntoResponse, Response}, - Extension, }; use bytes::{Buf, Bytes, BytesMut}; use futures_util::TryStreamExt; @@ -20,11 +20,11 @@ }; use tokio_stream::wrappers::ReceiverStream; use tokio_util::io::StreamReader; -use tracing::{debug, error, info_span, warn, Instrument}; +use tracing::{Instrument, debug, error, info_span, warn}; use crate::{ - methods::repo::{Repository, RepositoryPath, Result}, StatusCode, + methods::repo::{Repository, RepositoryPath, Result}, }; #[allow(clippy::unused_async)] diff --git a/src/methods/repo/snapshot.rs b/src/methods/repo/snapshot.rs index 70a66c5..c97ff4b 100644 --- a/src/methods/repo/snapshot.rs +++ a/src/methods/repo/snapshot.rs @@ -1,10 +1,10 @@ use std::sync::Arc; -use anyhow::{anyhow, Context}; -use axum::{body::Body, extract::Query, http::Response, Extension}; +use anyhow::{Context, anyhow}; +use axum::{Extension, body::Body, extract::Query, http::Response}; use serde::Deserialize; use tokio_stream::wrappers::ReceiverStream; -use tracing::{error, info_span, Instrument}; +use tracing::{Instrument, error, info_span}; use super::{RepositoryPath, Result}; use crate::git::Git; diff --git a/src/methods/repo/summary.rs b/src/methods/repo/summary.rs index 62c1f42..c6f3008 100644 --- a/src/methods/repo/summary.rs +++ a/src/methods/repo/summary.rs @@ -1,8 +1,8 @@ use std::{collections::BTreeMap, sync::Arc}; use anyhow::Context; use askama::Template; -use axum::{response::IntoResponse, Extension}; +use axum::{Extension, response::IntoResponse}; use axum_extra::extract::Host; use rkyv::string::ArchivedString; @@ -11,7 +11,7 @@ into_response, methods::{ filters, - repo::{Refs, Repository, Result, DEFAULT_BRANCHES}, + repo::{DEFAULT_BRANCHES, Refs, Repository, Result}, }, }; diff --git a/src/methods/repo/tag.rs b/src/methods/repo/tag.rs index 1baea7e..c71c552 100644 --- a/src/methods/repo/tag.rs +++ a/src/methods/repo/tag.rs @@ -1,18 +1,18 @@ use std::sync::Arc; use askama::Template; -use axum::{extract::Query, response::IntoResponse, Extension}; +use axum::{Extension, extract::Query, response::IntoResponse}; use serde::Deserialize; use yoke::Yoke; use crate::{ + Git, git::DetailedTag, into_response, methods::{ filters, repo::{Repository, RepositoryPath, Result}, }, - Git, }; #[derive(Deserialize)] diff --git a/src/methods/repo/tree.rs b/src/methods/repo/tree.rs index ed1e44f..6b42e6f 100644 --- a/src/methods/repo/tree.rs +++ a/src/methods/repo/tree.rs @@ -1,6 +1,6 @@ -use anyhow::{bail, Context}; +use anyhow::{Context, bail}; use askama::Template; -use axum::{extract::Query, response::IntoResponse, Extension}; +use axum::{Extension, extract::Query, response::IntoResponse}; use gix::ObjectId; use itertools::Itertools; use serde::Deserialize; @@ -16,13 +16,13 @@ YokedSortedTree, YokedTreeItem, YokedTreeItemKeyUtf8, }; use crate::{ + Git, ResponseEither, git::FileWithContent, into_response, methods::{ filters, repo::{ChildPath, Repository, RepositoryPath, Result}, }, - Git, ResponseEither, }; use super::log::get_branch_commits; -- rgit 0.1.5