Skip to main content
Help the Python Software Foundation raise $60,000 USD by December 31st!  Building the PSF Q4 Fundraiser

Assemble Git repos into a deployable tree of code.

Project description

Provides a way to assemble various Git repositories into one. It’s like submodules that don’t suck.

Use case: stitch together Wordpress with some themes and plugins before deploying.


First, you need to create your Castor repository. The following command will create an new Git repository containing an empty Castorfile and a pre-initialized .gitignore.

castor init my-proj

Then, you need to edit your Castorfile. It might look like


post_freeze array is optional. It must be an array, each command will be executed on the target directory after executing castor freeze.

    "lodge": [
            "target": "/",
            "version": "",
            "repo": "",
            "type": "git"
            "target": "/themes/my-prestashop-theme",
            "version": "e0e7c15789e6ff674cd75cb24981155441c3df09",
            "repo": "",
            "type": "git",
            "post_freeze": [
                "composer update --no-dev"
            "target": "/.htaccess",
            "type": "file",
            "source": "files/htaccess"

Your Castorfile being filled up, you can now apply it

castor apply

This will automatically create your repositories hierarchy, checkout submodules, etc. The root of this hierarchy will be the lodge directory.

If you want to execute post freeze commands on apply add the --exec-post-freeze argument like so :

castor apply --exec-post-freeze

Now you can freeze your project into a git-free, commitable and deployable tree of source code. This will go into the dam directory.

If you want to execute post freeze commands on apply add the --exec-post-freeze argument like so :

castor apply --exec-post-freeze
castor freeze

You can use the lodge as your working directory during development. If you make updates to the code, you can commit in the git repos. If you simply want to update upstream code, check out the new tag/commit you want to use. Then you can use castor freeze again, and it will update the Castorfile automatically with the latest Git HEADs, as well as the dam directory.

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for castor, version 0.2.3
Filename, size File type Python version Upload date Hashes
Filename, size castor-0.2.3.tar.gz (7.4 kB) File type Source Python version None Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page