pr-1324/vdye/scalar/add-fsmonitor-v3
tagged this
18 Aug 21:40
This series enables the built-in FSMonitor [1] on 'scalar'-registered repository enlistments. To avoid errors when unregistering an enlistment, the FSMonitor daemon is explicitly stopped during 'scalar unregister'. Maintainer's note: this series has a minor conflict with 'vd/scalar-generalize-diagnose'. Please let me know if there's anything else I can provide (in addition to [2]) that would make resolution easier. Changes since V2 ================ * Updated prerequisites for FSMonitor in Scalar to include 'fsm_settings__get_reason(the_repository) == FSMONITOR_REASON_OK' to handle cases where the platform is supported, but the repository is not. * Gated enabling the 'core.fsmonitor' on FSMonitor compatibility with the repo. * Replaced 'die()' failures in 'delete_enlistment()' with 'error()'s. * Replaced 'BUILTIN_FSMONITOR' test prerequisite with already-existing 'FSMONITOR_DAEMON' for FSMonitor. * Rewrote Scalar enlistment/repo search in 'setup_enlistment_directory()' to avoid unconstrained search and respect 'GIT_CEILING_DIRECTORIES'. Added tests to show the new expected behavior. Changes since V1 ================ * Added a patch to fix 'unregister_dir()'s handling of return values > 0 from 'toggle_maintenance()' and 'add_or_remove_enlistment()'. * Added a patch to print error messages in 'register_dir()' and 'unregister_dir()' indicating which of their internal steps fail. * Moved check of 'fsmonitor_ipc__is_supported()' to '[un]register_dir()' to avoid calling '(start|stop)_fsmonitor_daemon()' when the feature is not supported. Added assertion of 'fsmonitor_ipc__is_supported()' to '(start|stop)_fsmonitor_daemon()' to enforce that they are not called when the feature is unavailable. * Simplified '(start|stop)_fsmonitor_daemon()' implementation. Now, if FSMonitor is already running/stopped (respectively), the function simply returns 0; otherwise, it runs 'git fsmonitor--daemon (start|stop)' and returns the exit code. * Note that the "could not (start|stop) the FSMonitor daemon: <err_msg>" error messages are no longer printed by '(start|stop)_fsmonitor_daemon()'. Instead, "<err_msg>" is printed to stderr by swapping 'pipe_command()' out for 'run_git()', and '[un]register_dir()' prints the "could not (start|stop) the FSMonitor daemon" message. Thanks * Victoria [1] https://lore.kernel.org/git/pull.1143.git.1644940773.gitgitgadget@gmail.com/ [2] The conflict is a result of both series updating the Scalar roadmap doc. For reference, my merge resolution (from git diff <merge commit> <merge commit>^1 <merge commit>^2, where <merge commit>^1 is 'vd/scalar-generalize-diagnose' and <merge commit>^2 is this series) looks like: ------------->8------------->8------------->8------------->8------------->8------------- diff --cc Documentation/technical/scalar.txt index f6353375f0,047390e46e..0600150b3a --- a/Documentation/technical/scalar.txt +++ b/Documentation/technical/scalar.txt @@@ -84,20 -84,26 +84,23 @@@ series have been accepted - `scalar-diagnose`: The `scalar` command is taught the `diagnose` subcommand. +- `scalar-generalize-diagnose`: Move the functionality of `scalar diagnose` + into `git diagnose` and `git bugreport --diagnose`. + + - 'scalar-add-fsmonitor: Enable the built-in FSMonitor in Scalar + enlistments. At the end of this series, Scalar should be feature-complete + from the perspective of a user. + Roughly speaking (and subject to change), the following series are needed to "finish" this initial version of Scalar: - - Finish Scalar features: Enable the built-in FSMonitor in Scalar enlistments - and implement `scalar help`. At the end of this series, Scalar should be - feature-complete from the perspective of a user. -- Generalize features not specific to Scalar: In the spirit of making Scalar - configure only what is needed for large repo performance, move common - utilities into other parts of Git. Some of this will be internal-only, but one - major change will be generalizing `scalar diagnose` for use with any Git - repository. -- - Move Scalar to toplevel: Move Scalar out of `contrib/` and into the root of - `git`, including updates to build and install it with the rest of Git. This - change will incorporate Scalar into the Git CI and test framework, as well as - expand regression and performance testing to ensure the tool is stable. + `git`. This includes a variety of related updates, including: + - building & installing Scalar in the Git root-level 'make [install]'. + - builing & testing Scalar as part of CI. + - moving and expanding test coverage of Scalar (including perf tests). + - implementing 'scalar help'/'git help scalar' to display scalar + documentation. Finally, there are two additional patch series that exist in Microsoft's fork of Git, but there is no current plan to upstream them. There are some interesting -------------8<-------------8<-------------8<-------------8<-------------8<--------- Johannes Schindelin (1): scalar unregister: stop FSMonitor daemon Matthew John Cheetham (1): scalar: enable built-in FSMonitor on `register` Victoria Dye (6): scalar: constrain enlistment search scalar-unregister: handle error codes greater than 0 scalar-[un]register: clearly indicate source of error scalar-delete: do not 'die()' in 'delete_enlistment()' scalar: move config setting logic into its own function scalar: update technical doc roadmap with FSMonitor support Documentation/technical/scalar.txt | 17 ++- contrib/scalar/scalar.c | 201 +++++++++++++++++------------ contrib/scalar/t/t9099-scalar.sh | 93 +++++++++++++ 3 files changed, 220 insertions(+), 91 deletions(-) base-commit: 4af7188bc97f70277d0f10d56d5373022b1fa385 Submitted-As: https://lore.kernel.org/git/pull.1324.v3.git.1660858853.gitgitgadget@gmail.com In-Reply-To: https://lore.kernel.org/git/pull.1324.git.1660673269.gitgitgadget@gmail.com In-Reply-To: https://lore.kernel.org/git/pull.1324.v2.git.1660694290.gitgitgadget@gmail.com
Assets 2
-
2022-08-18T21:40:53Z -
2022-08-18T21:40:53Z - Loading