Re: [PATCH v6 19/30] help: include fsmonitor--daemon feature flag in version info
- From
Ævar Arnfjörð Bjarmason <avarab@gmail.com>
- Date
- Mar 7, 2022, 10:51 UTC
- Message-ID
- <220307.86cziy2fvv.gmgdl@evledraar.gmail.com>
- In-Reply-To
- <bc240a9e665841a622c96b8a245ce033684394f6.1646160212.git.gitgitgadget@gmail.com>
On Tue, Mar 01 2022, Jeff Hostetler via GitGitGadget wrote:
Show 63 quoted lines
> From: Jeff Hostetler <jeffhost@microsoft.com>
>
> Add the "feature: fsmonitor--daemon" message to the output of
> `git version --build-options`.
>
> The builtin FSMonitor is only available on certain platforms and
> even then only when certain Makefile flags are enabled, so print
> a message in the verbose version output when it is available.
>
> This can be used by test scripts for prereq testing. Granted, tests
> could just try `git fsmonitor--daemon status` and look for a 128 exit
> code or grep for a "not supported" message on stderr, but these
> methods are rather obscure.
>
> The main advantage is that the feature message will automatically
> appear in bug reports and other support requests.
>
> This concept was also used during the development of Scalar for
> similar reasons.
>
> Signed-off-by: Jeff Hostetler <jeffhost@microsoft.com>
> Signed-off-by: Junio C Hamano <gitster@pobox.com>
> ---
> help.c | 4 ++++
> t/test-lib.sh | 6 ++++++
> 2 files changed, 10 insertions(+)
>
> diff --git a/help.c b/help.c
> index 71444906ddf..9112a51e84b 100644
> --- a/help.c
> +++ b/help.c
> @@ -12,6 +12,7 @@
> #include "refs.h"
> #include "parse-options.h"
> #include "prompt.h"
> +#include "fsmonitor-ipc.h"
>
> struct category_description {
> uint32_t category;
> @@ -695,6 +696,9 @@ void get_version_info(struct strbuf *buf, int show_build_options)
> strbuf_addf(buf, "sizeof-size_t: %d\n", (int)sizeof(size_t));
> strbuf_addf(buf, "shell-path: %s\n", SHELL_PATH);
> /* NEEDSWORK: also save and output GIT-BUILD_OPTIONS? */
> +
> + if (fsmonitor_ipc__is_supported())
> + strbuf_addstr(buf, "feature: fsmonitor--daemon\n");
> }
> }
>
> diff --git a/t/test-lib.sh b/t/test-lib.sh
> index e4716b0b867..46cd596e7f5 100644
> --- a/t/test-lib.sh
> +++ b/t/test-lib.sh
> @@ -1799,3 +1799,9 @@ test_lazy_prereq SHA1 '
> # Tests that verify the scheduler integration must set this locally
> # to avoid errors.
> GIT_TEST_MAINT_SCHEDULER="none:exit 1"
> +
> +# Does this platform support `git fsmonitor--daemon`
> +#
> +test_lazy_prereq FSMONITOR_DAEMON '
> + git version --build-options | grep "feature:" | grep "fsmonitor--daemon"
> +'As I found recently (referenced in another series) the test_lazy_prereq doesn't currently catch segfaults etc. in git even if test_must_fail and friends are used.
But it's still better to future-proof things and not add more cases of git on the LHS of a pipe. So instead:
git version .. >out &&
grep ...The prereqs are run in their own temporary directory, so creating those files is OK.
Also: You run "grep" here twice, but as the code context shown we could just run it once.