- Series Bible
- Book Metadata
- Managing Book Development via Git
I’ve tinkered with a lot of different ways to manage my book production over the years. This is my effort to capture the process so I can stop screwing around. This is my effort to organize.
The Series Bible will be a Git repository. It will include a directory for:
- Stories in the series
- Notebook with all the series data.
Most Git repository sites (e.g. Bitbucket, Github) use the “README.md” page as a signal to markup and publish the content. This is where basic information on the specific novel is kept:
- Plot Summaries (by character)
Managing Book Development via Git
Why keep books in a version control tool? I discuss the rationale in How I protect My Copyright. Git is a distributed revision control system with an emphasis on speed, data integrity, and support for distributed, non-linear workflows. I’m fairly linear, but there are other strengths; such as remote hosting repositories. I can even snapshot a version within the same local computer should I want to store the repo on Dropbox.
- Repositories are private
- Each book gets its own repository. This prevents branch & tag mis-match.
- Book Repositories include the book series and sequence. For example “Bellicose” would be “PMS-01-Bellicose.”
The following terms will be used to mark branches:
- first - Original draft
- second - Second Draft
- editor - When incorporating feedback from Editor
- beta - When incorporating feedback from Beta readers
- master - Published branch
When a branch other than “Master” is complete, it will be merged into “Master.” Whenever a branch is created or merged, Master will be tagged. There will be no tagging of a non-Master branch.
git checkout -b /branch/ # Creates & switches to new branch git checkout /branch/ # Switches to exisiting branch git merge /branch/ # Merges branch into active branch git log --pretty=oneline
The “rake archive” command will sync to the remote repository the active branch. More on branching/merging is available at the Git-SCM Branching/Merging page.
Whenever a work is disseminated to an external entity (editor, Createspace, Kindle) or a new branch is created, then master is tagged. The “Master” branch is checked-out. The branch is tagged with the date, the destination is added as a memo. There are more tips on tagging at the Git-SCM Tagging page.
git tag -l # Lists tags in alphabetical order git tag -a v2014.11.29 -m 'Sending to Editor' or git tag -a v2014.11.29-editor git tag -a v2014.11.29-amazon git tag -a v2014.11.29-beta git show v2014.11.29