// SPDX-License-Identifier: EUPL-1.2 // SPDX-FileCopyrightText: 2021 Alyssa Ross //! libgit2's diffing API gives us a callback whenever a file diff is ready, but //! that's not very convenient for Rust code, because it can't be used as an //! iterator. So we run the diff in a thread, and send the diff information we need //! to the main thread over a channel. When the main thread is processing diff //! information too slowly, we block the diff thread until the main thread catches //! up. mod server; mod client; pub use client::DiffThread; use std::path::PathBuf; use git2::{Repository, Diff, Delta}; pub trait MakeDiff: Send + 'static { fn make_diff(self, _: &Repository) -> Result; } /// `new_path` isn't included because it's not currently used in git-girf. pub struct FileDiff { pub status: Delta, pub old_path: Option, }