dog = Drupal on git
dog = Like drush make
Strategies for deployment, management, Contributing patches, managing updates, Managing overall state
Drual sites not portable: Difficult to work across multiple instances. Code from tarballs is dead code (lives in the repository, so dead in a checkout :) Patching modules for a real site sucks.
Drush make helps with some of this. But drush generate-makefile is mediocre and dog is meant to fix this
Quick fix from tar ball - generating patch is painful. But from git: checkout, new local branch, still need patch files, but it makes sense to move to lots of git checkout modules.
So, if your site now consists of lots of git repositories. How to make that easier? multiple sets of git pull, push, branch etc. All in one command Also, git's submodules suck, and we want consistent configuration across different local git repos. Can we capture and replay overall status of the site? Can we even have a gui?
A dog Root repository contains:
web root
sites/all/modules/*
dbdump
sled.xml
Upstream repository on d.o - we can write patches but never actually directly push. Collab repositories are local - managed by e.g. Gitosis
Main Commands
Dog-rollup = git push but with patches
Dog-rollout = git clone but for sending a package of collabs to a colleague
Then dog-rollup pushes back to collab and you run local dog-catchup
Collab becomes your local forked versions of all contrib modules. [Every client? Certainly every contrib module has a local collab repository, to be hosted somewhere your production site can see. This is a lot of cruft, isn't it? Aren't makefile [patch][] commands neater?]