On Tue, May 10 2022, Johannes Schindelin via GitGitGadget wrote: > From: Johannes Schindelin <johannes.schindelin@xxxxxx> > > The `scalar` command needs a Scalar enlistment for many subcommands, and > looks in the current directory for such an enlistment (traversing the > parent directories until it finds one). > > These is subcommands can also be called with an optional argument > specifying the enlistment. Here, too, we traverse parent directories as > needed, until we find an enlistment. > > However, if the specified directory does not even exist, or is not a > directory, we should stop right there, with an error message. > > Signed-off-by: Johannes Schindelin <johannes.schindelin@xxxxxx> > --- > contrib/scalar/scalar.c | 6 ++++-- > contrib/scalar/t/t9099-scalar.sh | 5 +++++ > 2 files changed, 9 insertions(+), 2 deletions(-) > > diff --git a/contrib/scalar/scalar.c b/contrib/scalar/scalar.c > index 1ce9c2b00e8..00dcd4b50ef 100644 > --- a/contrib/scalar/scalar.c > +++ b/contrib/scalar/scalar.c > @@ -43,9 +43,11 @@ static void setup_enlistment_directory(int argc, const char **argv, > usage_with_options(usagestr, options); > > /* find the worktree, determine its corresponding root */ > - if (argc == 1) > + if (argc == 1) { > strbuf_add_absolute_path(&path, argv[0]); > - else if (strbuf_getcwd(&path) < 0) > + if (!is_directory(path.buf)) > + die(_("'%s' does not exist"), path.buf); > + } else if (strbuf_getcwd(&path) < 0) > die(_("need a working directory")); > > strbuf_trim_trailing_dir_sep(&path); > diff --git a/contrib/scalar/t/t9099-scalar.sh b/contrib/scalar/t/t9099-scalar.sh > index 2e1502ad45e..9d83fdf25e8 100755 > --- a/contrib/scalar/t/t9099-scalar.sh > +++ b/contrib/scalar/t/t9099-scalar.sh > @@ -85,4 +85,9 @@ test_expect_success 'scalar delete with enlistment' ' > test_path_is_missing cloned > ' > > +test_expect_success '`scalar [...] <dir>` errors out when dir is missing' ' > + ! scalar run config cloned 2>err && Needs to use test_must_fail, not !