helper: Don't require `GIT_DIR` for listing refs

This commit is contained in:
cloudhead 2024-10-21 10:36:19 +02:00
parent 855327d303
commit 6763bf31e1
No known key found for this signature in database
1 changed files with 6 additions and 5 deletions

View File

@ -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,