Awesome
git-dummy
Generate dummy Git repositories and populate them with the desired number of commits, branches, merges, and structure.
Example: $ git-dummy --commits=10 --branches=4 --merge=1
This will initialize a new Git repo in the current directory with 4 branches, each containing 10 commits, 1 of which is merged back into main
.
Note: All generated dummy repos have at minimum 1 branch called main
. For dummies with multiple branches, branches are named branch1, branch2, ..., branchN
. Each branch currently branches off of main
at --diverge-at
if supplied, or else a randomly chosen commit. The length of each branch is capped at the number of commits specified by --commits
. Use --merge=x,y,...,n
to select which branches get merged back into main
.
Use cases
- Programatically generate Git repos for functional testing of Git tools
- Decide how many commits and branches are generated
- Select which branches get merged back into
main
- Mimic scenarios in real Git repos to practice on without touching real data
- Generate Git demo repos to teach or learn from
Features
- Run a one-liner git-dummy command in the terminal to generate a dummy Git repo based on your parameters
- Customize the repo name, path, number of commits, branches, merges, and structure
Quickstart
- Install
git-dummy
:
$ pip install git-dummy
- Browse to the directory you want to create your dummy Git repo in:
$ cd path/to/dummy/parent
- Run the program:
$ git-dummy [options]
-
A new Git repo called
dummy
will be initialized and populated based on the supplied parameters. -
See global help for list of global options/flags and subcommands:
$ git-dummy -h
Requirements
- Python 3.7 or greater
- Pip (Package manager for Python)
Command options and flags
Available options and flags include:
--name
: The name of the dummy Git repo, defaults to "dummy".
--commits
: The number of commits to populate in the dummy Git repo, defaults to 5.
--branches
: The number of branches to generate in the dummy Git repo, defaults to 1.
--diverge-at
: The commit number at which branches diverge from main
.
--merge
: A comma separated list of branch postfix ids to merge back into main
.
--git-dir
: The path at which to store the dummy Git repo, defaults to current directory.
--no-subdir
: Initialize the dummy Git repo in the current directory instead of in a subdirectory.
--constant_sha
: Use constant values for commit author, email, and commit date parameters to yield consistent sha1 values across git-dummy runs.
--allow-nested
: Allow dummy repo creation within an existing Git repo, as long as it's not at the level of an existing .git/ folder.
Command examples
Generate a dummy Git repo called "cheese" on your Desktop, with 2 branches and 10 commits on each branch:
$ git-dummy --name=cheese --branches=2 --commits=10 --git-dir=~/Desktop
Generate a dummy repo with 4 branches main
, branch1
, branch2
, and branch3
. Branches diverge from main
after the 2nd commit:
$ git-dummy --branches=4 --diverge-at=2
Generate a dummy repo with 4 branches, so that branch1
and branch3
are merged back into main
:
$ git-dummy --branches=4 --merge=1,3
For convenience, environment variables can be set for any command-line option available in git-dummy. All environment variables start with git_dummy_
followed by the name of the option.
For example, the --git-dir
option can be set as an environment variable like:
$ export git_dummy_git_dir=~/Desktop
Similarly, the --name
option can be set like:
$ export git_dummy_name=cheese
In general:
$ export git_dummy_option_name=option_value
Explicitly specifying options at the command-line takes precedence over the corresponding environment variable values.
Learn More
Learn more about this tool on the git-dummy project page.
Authors
Jacob Stopak - on behalf of Initial Commit