How to use the command 'git sizer' (with examples)
Git is a version control system widely used for source code management. The ‘git sizer’ command is a tool that computes various Git repository size metrics and alerts you to any that might cause problems or inconvenience. It provides statistics about the size of your Git repository, including the number of objects, the size of the objects, and the largest files. This can be helpful in identifying areas where a repository might need optimization or where large files may be consuming a significant amount of storage space.
Use case 1: Report only statistics that have a level of concern greater than 0
Code:
git sizer
Motivation: In this use case, you want to get a report of only the statistics that have a level of concern greater than 0. This is useful when you only want to focus on the problematic areas of your Git repository that could potentially cause issues or inconvenience.
Explanation: The command ‘git sizer’ without any additional arguments will compute various Git repository size metrics and report only the statistics that have a level of concern greater than 0.
Example output:
Computing metadata...
Collecting statistics...
Adding revisions...
Counting objects...
Counting loose objects...
Counting commits...
Counting trees...
Counting blobs...
Finding largest objects...
Finding largest refs...
Finding common refs...
Counting objects in commits...
Counting objects in trees...
Counting objects in blobs...
Counting objects reachable from refs...
Counting commits in common...
Analyzing commits...
Finding patterns in commits...
Computing statistics...
Objects...
Largest objects............................ 5
Objects > 1 KiB............................ 1240
Objects > 10 KiB........................... 430
Objects > 100 KiB.......................... 68
Objects > 1 MiB............................ 52
Objects > 10 MiB........................... 10
Deltas...................................... 2556
Reused objects............................. 39
Revisions.................................... 2545
Corrupt revisions.......................... 0
Commit ancestors............................. 2545
Earliest reachable commit.................. 7 months ago
Trees........................................ 8727
Entries.................................... 8796
Entries-per-tree-maximum................... 95
Leaves..................................... 0
Depth...................................... 19
Blobs........................................ 1741
Unique/blob-total ratio.................... 0.48
Burn rate.................................... 0.20 commits/day
Quilt information............................ 0
Use case 2: Report all statistics
Code:
git sizer -v
Motivation: In this use case, you want to get a comprehensive report of all the statistics related to your Git repository, regardless of their level of concern. This can be useful for a detailed analysis of your repository’s size and potential areas of concern.
Explanation: The ‘-v’ option in the ‘git sizer’ command stands for ‘verbose’ and instructs the tool to report all statistics, rather than just the ones with a level of concern greater than 0.
Example output:
Computing metadata...
Collecting statistics...
Adding revisions...
Counting objects...
Counting loose objects...
Counting commits...
Counting trees...
Counting blobs...
Finding largest objects...
Finding largest refs...
Finding common refs...
Counting objects in commits...
Counting objects in trees...
Counting objects in blobs...
Counting objects reachable from refs...
Counting commits in common...
Analyzing commits...
Finding patterns in commits...
Computing statistics...
Objects...
Largest objects............................ 5
Objects > 1 KiB............................ 1240
Objects > 10 KiB........................... 430
Objects > 100 KiB.......................... 68
Objects > 1 MiB............................ 52
Objects > 10 MiB........................... 10
Deltas...................................... 2556
Reused objects............................. 39
Revisions.................................... 2545
Corrupt revisions.......................... 0
Commit ancestors............................. 2545
Earliest reachable commit.................. 7 months ago
Trees........................................ 8727
Entries.................................... 8796
Entries-per-tree-maximum................... 95
Leaves..................................... 0
Depth...................................... 19
Blobs........................................ 1741
Unique/blob-total ratio.................... 0.48
Burn rate.................................... 0.20 commits/day
Quilt information............................ 0
Use case 3: See additional options
Code:
git sizer -h
Motivation: In this use case, you want to see additional options and get more information on how to use the ‘git sizer’ command.
Explanation: The ‘-h’ option in the ‘git sizer’ command displays a help message, providing information about additional options and how to use the command.
Example output:
usage: git-sizer.py [-h] [--verbose] [--dump-histograms]
[--file-metrics FILE_METRICS]
[--json-metrics JSON_METRICS]
[--tuple-metrics TUPLE_METRICS]
[path]
positional arguments:
path the path to the repository to analyze; if not
provided, the current working directory is assumed
optional arguments:
-h, --help show this help message and exit
--verbose, -v print detailed output about each analysis rule
--dump-histograms print a line of CSV output for each processed commit
object
--file-metrics FILE_METRICS
load file metrics from this JSON file
--json-metrics JSON_METRICS
load metrics from this JSON file
--tuple-metrics TUPLE_METRICS
load metrics from this list of colon-separated
tuples
Conclusion:
The ‘git sizer’ command is a useful tool for analyzing the size of your Git repository and identifying potential areas of concern. By using different options, you can customize the level of detail in the generated report. Whether you need a high-level overview or a comprehensive analysis, ‘git sizer’ provides valuable insights into the size metrics of your repository.