forked from git-for-windows/git
-
Notifications
You must be signed in to change notification settings - Fork 92
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
survey: stub in new experimental
git-survey
command
Start work on a new `git survey` command to scan the repository for monorepo performance and scaling problems. The goal is to measure the various known "dimensions of scale" and serve as a foundation for adding additional measurements as we learn more about Git monorepo scaling problems. Results will be logged to the console and to Trace2. The initial goal is to complement the scanning and analysis performed by the GO-based `git-sizer` (https://github.com/github/git-sizer) tool. It is hoped that by creating a builtin command, we may be able to take advantage of internal Git data structures and code that is not accessible from GO to gain further insight into potential scaling problems. Signed-off-by: Jeff Hostetler <jeffhostetler@github.com>
- Loading branch information
1 parent
1e20af0
commit 0a63e54
Showing
7 changed files
with
99 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,36 @@ | ||
git-survey(1) | ||
============= | ||
|
||
NAME | ||
---- | ||
git-survey - EXPERIMENTAL: Measure various repository dimensions of scale | ||
|
||
SYNOPSIS | ||
-------- | ||
[verse] | ||
(EXPERIMENTAL!) `git survey` <options> | ||
|
||
DESCRIPTION | ||
----------- | ||
|
||
Survey the repository and measure various dimensions of scale. | ||
|
||
As repositories grow to "monorepo" size, certain data shapes can cause | ||
performance problems. `git-survey` attempts to measure and report on | ||
known problem areas. | ||
|
||
OPTIONS | ||
------- | ||
|
||
--progress:: | ||
Show progress. This is automatically enabled when interactive. | ||
|
||
OUTPUT | ||
------ | ||
|
||
By default, `git survey` will print information about the repository in a | ||
human-readable format that includes overviews and tables. | ||
|
||
GIT | ||
--- | ||
Part of the linkgit:git[1] suite |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,58 @@ | ||
#include "builtin.h" | ||
#include "config.h" | ||
#include "parse-options.h" | ||
|
||
static const char * const survey_usage[] = { | ||
N_("(EXPERIMENTAL!) git survey <options>"), | ||
NULL, | ||
}; | ||
|
||
struct survey_opts { | ||
int verbose; | ||
int show_progress; | ||
}; | ||
|
||
static struct survey_opts survey_opts = { | ||
.verbose = 0, | ||
.show_progress = -1, /* defaults to isatty(2) */ | ||
}; | ||
|
||
static struct option survey_options[] = { | ||
OPT__VERBOSE(&survey_opts.verbose, N_("verbose output")), | ||
OPT_BOOL(0, "progress", &survey_opts.show_progress, N_("show progress")), | ||
OPT_END(), | ||
}; | ||
|
||
static int survey_load_config_cb(const char *var, const char *value, | ||
const struct config_context *ctx, void *pvoid) | ||
{ | ||
if (!strcmp(var, "survey.verbose")) { | ||
survey_opts.verbose = git_config_bool(var, value); | ||
return 0; | ||
} | ||
if (!strcmp(var, "survey.progress")) { | ||
survey_opts.show_progress = git_config_bool(var, value); | ||
return 0; | ||
} | ||
|
||
return git_default_config(var, value, ctx, pvoid); | ||
} | ||
|
||
static void survey_load_config(void) | ||
{ | ||
git_config(survey_load_config_cb, NULL); | ||
} | ||
|
||
int cmd_survey(int argc, const char **argv, const char *prefix) | ||
{ | ||
survey_load_config(); | ||
|
||
argc = parse_options(argc, argv, prefix, survey_options, survey_usage, 0); | ||
|
||
prepare_repo_settings(the_repository); | ||
|
||
if (survey_opts.show_progress < 0) | ||
survey_opts.show_progress = isatty(2); | ||
|
||
return 0; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters