Blag
He's not dead, he's resting
Exherbo Development Workflow, Version 2
November 28, 2010
Posted by on 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
where /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.
- Use
cave sync --suffix local arbor
to 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 -i
to tidy up your work into nice friendly pushable commits. - Push or submit a
git format-patch
for 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_options
too, if you need it. Thus, for branches, you can usesync_options = --branch=branch-on-upstream local: --branch=my-local-branch
.