[go: up one dir, main page]

Skip to content

builtin/repo: introduce structure subcommand

Greetings,

The shape of a repository's history can have huge impacts on the performance and health of the repository itself. Currently, Git lacks a means to surface key stats/information regarding the shape of a repository via a single command. Acquiring this information requires users to be fairly knowledgeable about the structure of a Git repository and how to identify the relevant data points. To fill this gap, supplemental tools such as git-sizer(1) have been developed.

To allow users to more readily identify potential issues for a repository, introduce the "stats" subcommand in git-repo(1) to output stats for the repository that may be of interest to users. The goal of this subcommand is to eventually provide similar functionality to git-sizer(1), but in Git natively.

In this initial version, the "stats" subcommand only surfaces counts of the various reference and object types in a repository. In a follow-up series, I would like to introduce additional data points that are present in git-sizer(1) such as largest objects, combined object sizes by type, and other general repository shape information.

Some other general features that would be nice to introduce eventually:

  • A "level of concern" meter for reported stats. This could indicate to users which stats may be worth looking into further.
  • Links to OIDs of interesting objects that correspond to certain stats.
  • Options to limit which references to use when evaluating the repository.
  • A progress meter to provide better user feedback while the repository is being evaluated.

Thanks,

-Justin

Related: #425, #529

Edited by Justin Tobler

Merge request reports

Loading