git-dummy
                                
                                 git-dummy copied to clipboard
                                
                                    git-dummy copied to clipboard
                            
                            
                            
                        Generate dummy Git repositories populated with the desired number of commits, branches, and structure.
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 dummywill 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