Update gix

This commit is contained in:
Joscha 2024-05-11 18:17:14 +02:00
parent e68a53c608
commit 3c86c4b337
3 changed files with 187 additions and 220 deletions

View file

@ -9,7 +9,7 @@ use axum::{body::Bytes, BoxError};
use flate2::{write::GzEncoder, Compression};
use futures::TryStream;
use gix::{
bstr::ByteSlice, objs::tree::EntryMode, prelude::ObjectIdExt, worktree::stream::Entry,
bstr::ByteSlice, objs::tree::EntryKind, prelude::ObjectIdExt, worktree::stream::Entry,
ObjectId, ThreadSafeRepository,
};
use log::warn;
@ -47,17 +47,18 @@ fn write_entry(
writer: &mut tar::Builder<impl io::Write>,
) -> Result<(), BoxError> {
let mut header = tar::Header::new_gnu();
header.set_entry_type(match entry.mode {
EntryMode::Tree | EntryMode::Commit => tar::EntryType::Directory,
EntryMode::Blob | EntryMode::BlobExecutable => tar::EntryType::Regular,
EntryMode::Link => tar::EntryType::Symlink,
header.set_entry_type(match entry.mode.kind() {
EntryKind::Tree | EntryKind::Commit => tar::EntryType::Directory,
EntryKind::Blob | EntryKind::BlobExecutable => tar::EntryType::Regular,
EntryKind::Link => tar::EntryType::Symlink,
});
header.set_mode(match entry.mode {
EntryMode::BlobExecutable => 0o755, // rwxr-xr-x
_ => 0o644, // rw-r--r--
header.set_mode(if entry.mode.is_executable() {
0o755 // rwxr-xr-x
} else {
0o644 // rw-r--r--
});
if entry.mode == EntryMode::Link {
if entry.mode.is_link() {
let mut buf = vec![];
entry.read_to_end(&mut buf)?;
header.set_size(0);