He's not dead, he's resting
Exherbo Development Workflow, Version 2
My original Exherbo Development Workflow post seems to have become the standard way of doing things. However, it does rather assume that you are developing on most repositories most of the time. When that’s not the case, a new feature named “sync suffixes” may be of use. With sync suffixes, a typical workflow now looks like this:
Repositories are configured as normal, with their
sync set to point to the usual remote location. In addition, for any repository you are going to work on, you use a sync suffix to specify a local path too. For example:
sync = git://git.exherbo.org/arbor.git local: git+file:///home/users/ciaranm/repos/arbor
/home/users/ciaranm/repos/arbor is a personal copy of the repository that is entirely unrelated to the checkout Paludis uses.
Normally, when you sync, you’ll be syncing against upstream. But when you want to do some work:
- Update your personal copy of the repository.
- Work on and commit your changes.
cave sync --suffix local arborto sync just that repository, and against your local checkout rather than upstream.
- Test your changes.
- Make fixes, commit, sync using the suffix etc until everything works.
- Use the wonders of
git rebase -ito tidy up your work into nice friendly pushable commits.
- Push or submit a
git format-patchfor your changes.
- Go back to syncing without the suffix.
Some things to note:
- This only really works with Git, and only when using the default ‘reset’ sync mode.
- You’re never manually modifying any repository which Paludis also modifies.
- Unlike the original version of this workflow, you only need to keep your personal copies of repositories up to date when you work on them.
- The suffix things work on
sync_optionstoo, if you need it. Thus, for branches, you can use
sync_options = --branch=branch-on-upstream local: --branch=my-local-branch.