Radish alpha
h
Radicle Heartwood Protocol & Stack
Radicle
Git (anonymous pull)
Log in to clone via SSH
remote-helper: Parse base revision early
✓ CI success Lorenz Leutgeb committed 8 months ago
commit 98a665119a472ec846ea2d34fda16bbb461a8976
parent 101fbff8094bb6665963b5a819f0ba9ec2abdc6b
1 passed (1 total) View logs
2 files changed +8 -6
modified crates/radicle-remote-helper/src/main.rs
@@ -33,7 +33,6 @@ use radicle::storage::{ReadRepository, WriteStorage};
use radicle::version::Version;
use radicle::{cob, profile};
use radicle::{git, storage, Profile};
-
use radicle_cli::git::Rev;
use radicle_cli::terminal as cli;

pub const VERSION: Version = Version {
@@ -162,7 +161,7 @@ pub struct Options {
    /// Open patch in draft mode.
    draft: bool,
    /// Patch base to use, when opening or updating a patch.
-
    base: Option<Rev>,
+
    base: Option<git::Oid>,
    /// Patch message.
    message: cli::patch::Message,
    verbosity: Verbosity,
@@ -299,8 +298,11 @@ fn push_option(args: &[&str], opts: &mut Options) -> Result<(), Error> {
                    opts.message.append(val);
                }
                "patch.base" => {
-
                    let base = cli::args::rev(&val.into()).map_err(|e| Error::Base(e.into()))?;
-
                    opts.base = Some(base);
+
                    let repo = git::raw::Repository::open_from_env()?;
+
                    let object = repo
+
                        .revparse_single(val)
+
                        .map_err(|e| Error::Base(e.into()))?;
+
                    opts.base = Some(git::Oid::from(object.id()));
                }
                other => {
                    return Err(Error::UnsupportedPushOption(other.to_owned()));
modified crates/radicle-remote-helper/src/push.rs
@@ -506,7 +506,7 @@ where

    let (_, target) = stored.canonical_head()?;
    let base = if let Some(base) = opts.base {
-
        base.resolve(working)?
+
        base
    } else {
        stored.merge_base(&target, &head)?
    };
@@ -638,7 +638,7 @@ where
    let (_, target) = stored.canonical_head()?;
    let head: git::Oid = commit;
    let base = if let Some(base) = opts.base {
-
        base.resolve(working)?
+
        base
    } else {
        stored.merge_base(&target, &head)?
    };