Create a new omnibus repository out of a collection of existing git repositories.
- Checks for the destination omnibus directory.
- Clones source repositories into a temporary directory.
- It uses mirroring, to pull in all branches and tags.
- It immediately removes any remote
origin
detected. - Preserves the git history for each repository.
- (optional) If desired, it removes any submodules present first.
- It also renames all branches and tags to be
standalone/<repository>/<name>
. - Does garbage collection on the repository being migrated.
- Imports each source repository as a sub-directory of the omnibus repository.
- Does garbage collection on the new omnibus repository.
- Does not push the new omnibus repository live.
gem install omnirepo
- Unix-based operating system, with
ruby
andgit
preinstalled. - Prefers
tmpfs
partition located at/dev/shm
for temporary storage. - Read access to all remote repositories involed.
omnirepo <username/organization> <destination-omnibus> <source-repository> [...]
If these self-contained repositories on GitHub need to be merged together into one repository:
org9/repoA
org9/repoB
org9/repoC
And the directory housing the future location of the omnibus repository on GitHub is:
org9/repo0
This would be your command:
omnirepo org9 repo0 repoA repoB repoC
For the scenario above, you can create a configuration file as follows:
repositories:
- repoA
- repoB
- repoC
Save that file as repo0/.omnirepo
Then run this command:
omnirepo org9 repo0
- Read repositories from a configuration file.
- Bring together source repositories from multiple possible organizations.
- ...missing something? Request it...
- Fork this repository on GitHub.
- Make your changes and send a pull request.
Distributed under the MIT License. See LICENSE.txt for further details.
Copyright (c) 2015 Donovan Keme.