Radish alpha
h
Radicle Heartwood Protocol & Stack
Radicle
Git (anonymous pull)
Log in to clone via SSH
Make use of `git2::Repository::refname_to_id`
Alexis Sellier committed 3 years ago
commit 111480cd6ef496b1a5bed2283b2a0f05181db77e
parent 94f7675c72867de3bf97e4d5c42154f9fba87770
2 files changed +5 -13
modified radicle/src/rad.rs
@@ -125,10 +125,8 @@ pub fn fork_remote<G: Signer, S: storage::WriteStorage>(
    let repository = storage.repository(proj)?;

    let raw = repository.raw();
-
    let remote_head = raw
-
        .find_reference(&git::refs::storage::branch(remote, &project.default_branch))?
-
        .target()
-
        .ok_or(ForkError::InvalidReference)?;
+
    let remote_head =
+
        raw.refname_to_id(&git::refs::storage::branch(remote, &project.default_branch))?;
    raw.reference(
        &git::refs::storage::branch(me, &project.default_branch),
        remote_head,
@@ -136,10 +134,7 @@ pub fn fork_remote<G: Signer, S: storage::WriteStorage>(
        &format!("creating default branch for {me}"),
    )?;

-
    let remote_id = raw
-
        .find_reference(&git::refs::storage::id(remote))?
-
        .target()
-
        .ok_or(ForkError::InvalidReference)?;
+
    let remote_id = raw.refname_to_id(&git::refs::storage::id(remote))?;
    raw.reference(
        &git::refs::storage::id(me),
        remote_id,
modified radicle/src/storage/git.rs
@@ -437,11 +437,8 @@ impl ReadRepository for Repository {
        remote: &RemoteId,
        reference: &git::Qualified,
    ) -> Result<Oid, git::Error> {
-
        // TODO: Use native git2 function for this.
-
        let oid = self
-
            .reference(remote, reference)?
-
            .target()
-
            .ok_or(git::Error::NotFound(git::NotFound::NoRefTarget))?;
+
        let name = reference.with_namespace(remote.into());
+
        let oid = self.backend.refname_to_id(&name)?;

        Ok(oid.into())
    }