Radish alpha
h
Radicle Heartwood Protocol & Stack
Radicle
Git (anonymous pull)
Log in to clone via SSH
helper: Don't require `GIT_DIR` for listing refs
cloudhead committed 1 year ago
commit 6763bf31e1af93e9b6ef72ad99c47f3b9359b7ac
parent 855327d303566aac1d3e065d4ba7e16d9ccd18e6
1 file changed +6 -5
modified radicle-remote-helper/src/lib.rs
@@ -108,10 +108,8 @@ pub fn run(profile: radicle::Profile) -> Result<(), Error> {
        return Err(Error::RepositoryNotFound(stored.path().to_path_buf()));
    }

-
    // `GIT_DIR` is expected to be set by Git tooling, and points to the working copy.
-
    let working = env::var("GIT_DIR")
-
        .map(PathBuf::from)
-
        .map_err(|_| Error::NoGitDir)?;
+
    // `GIT_DIR` is set by Git tooling, if we're in a working copy.
+
    let working = env::var("GIT_DIR").map(PathBuf::from);
    // Whether we should output debug logs.
    let debug = radicle::profile::env::debug();

@@ -162,7 +160,7 @@ pub fn run(profile: radicle::Profile) -> Result<(), Error> {

                // N.b. `working` is the `.git` folder and `fetch::run`
                // requires the working directory.
-
                let working = working.canonicalize()?;
+
                let working = working.map_err(|_| Error::NoGitDir)?.canonicalize()?;
                let working = working.parent().ok_or_else(|| Error::NoWorkingCopy {
                    path: working.clone(),
                })?;
@@ -171,6 +169,9 @@ pub fn run(profile: radicle::Profile) -> Result<(), Error> {
                    .map_err(Error::from);
            }
            ["push", refspec] => {
+
                // We have to be in a working copy to push.
+
                let working = working.map_err(|_| Error::NoGitDir)?;
+

                return push::run(
                    vec![refspec.to_string()],
                    &working,