Create new omnibus repositories out of collections of existing git repositories.
Switch branches/tags
Nothing to show
Clone or download

README.md

omnirepo

Create a new omnibus repository out of a collection of existing git repositories.

What exactly does it do with repositories?!

  1. Checks for the destination omnibus directory.
  2. Clones source repositories into a temporary directory.
  3. It uses mirroring, to pull in all branches and tags.
  4. It immediately removes any remote origin detected.
  5. Preserves the git history for each repository.
  6. (optional) If desired, it removes any submodules present first.
  7. It also renames all branches and tags to be standalone/<repository>/<name>.
  8. Does garbage collection on the repository being migrated.
  9. Imports each source repository as a sub-directory of the omnibus repository.
  10. Does garbage collection on the new omnibus repository.
  11. Does not push the new omnibus repository live.

Installation:

gem install omnirepo

System Requirements:

  • Unix-based operating system, with ruby and git preinstalled.
  • Prefers tmpfs partition located at /dev/shm for temporary storage.
  • Read access to all remote repositories involed.

Use without a configuration file:

omnirepo <username/organization> <destination-omnibus> <source-repository> [...]

Example:

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

Use with a configuration file:

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

Future Features

  • Read repositories from a configuration file.
  • Bring together source repositories from multiple possible organizations.
  • ...missing something? Request it...

Contributing

  • Fork this repository on GitHub.
  • Make your changes and send a pull request.

License

Distributed under the MIT License. See LICENSE.txt for further details.

Copyright (c) 2015 Donovan Keme.