Message ID | 73d08c0c8948340f6c08c1689b40900062db5b4a.1630359290.git.gitgitgadget@gmail.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | Upstreaming the Scalar command | expand |
On Mon, Aug 30, 2021 at 5:35 PM Johannes Schindelin via GitGitGadget <gitgitgadget@gmail.com> wrote: > The .NET version of Scalar has a `version` command. This was necessary > because it was versioned independently of Git. > > Since Scalar is now tightly coupled with Git, it does not make sense for > them to show different versions. Therefore, it shows the same output as > `git versions`. For backwards-compatibility with the .NET version, s/versions/version/ > `scalar version` prints to `stderr`, though (`git version` prints to > `stdout` instead). > > Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Hi Eric, On Tue, 31 Aug 2021, Eric Sunshine wrote: > On Mon, Aug 30, 2021 at 5:35 PM Johannes Schindelin via GitGitGadget > <gitgitgadget@gmail.com> wrote: > > The .NET version of Scalar has a `version` command. This was necessary > > because it was versioned independently of Git. > > > > Since Scalar is now tightly coupled with Git, it does not make sense for > > them to show different versions. Therefore, it shows the same output as > > `git versions`. For backwards-compatibility with the .NET version, > > s/versions/version/ Thank you! Dscho > > > `scalar version` prints to `stderr`, though (`git version` prints to > > `stdout` instead). > > > > Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> >
diff --git a/contrib/scalar/scalar.c b/contrib/scalar/scalar.c index c616e91231a..be0a49b0d75 100644 --- a/contrib/scalar/scalar.c +++ b/contrib/scalar/scalar.c @@ -9,6 +9,7 @@ #include "run-command.h" #include "refs.h" #include "dir.h" +#include "help.h" /* * Remove the deepest subdirectory in the provided path string. Path must not @@ -362,6 +363,15 @@ static int delete_enlistment(struct strbuf *enlistment) return 0; } +/* + * Dummy implementation; Using `get_version_info()` would cause a link error + * without this. + */ +void load_builtin_commands(const char *prefix, struct cmdnames *cmds) +{ + die("not implemented"); +} + static int cmd_clone(int argc, const char **argv) { const char *branch = NULL; @@ -748,6 +758,34 @@ static int cmd_delete(int argc, const char **argv) return res; } +static int cmd_version(int argc, const char **argv) +{ + int verbose = 0, build_options = 0; + struct option options[] = { + OPT__VERBOSE(&verbose, N_("include Git version")), + OPT_BOOL(0, "build-options", &build_options, + N_("include Git's build options")), + OPT_END(), + }; + const char * const usage[] = { + N_("scalar verbose [-v | --verbose] [--build-options]"), + NULL + }; + struct strbuf buf = STRBUF_INIT; + + argc = parse_options(argc, argv, NULL, options, + usage, 0); + + if (argc != 0) + usage_with_options(usage, options); + + get_version_info(&buf, build_options); + fprintf(stderr, "%s\n", buf.buf); + strbuf_release(&buf); + + return 0; +} + static struct { const char *name; int (*fn)(int, const char **); @@ -759,6 +797,7 @@ static struct { { "run", cmd_run }, { "reconfigure", cmd_reconfigure }, { "delete", cmd_delete }, + { "version", cmd_version }, { NULL, NULL}, };