Disk Images and Version Control
Michael Stone
michael at laptop.org
Tue Apr 22 01:45:21 EDT 2008
Dear devel,
Our builds are nothing more than specially-formatted Unix filesystems.
Q: What useful purpose is served by regenerating these filesystems
from scratch every time we want to change them?
A: We maintain an explanation of where the filesystem came from
encoded in the recipe used to create it.
It seems to me that version control systems and shells are the best
tools yet invented for comprehending filesystems and for changing them
in controlled ways.
Could we actually build our disk images from authoritative copies of
our filesystem tree which are wholly maintained in a
version-controlled repository (along with export scripts, tests,
source materials, release notes, defect markers, and other miscellanea)?
Benefits:
We might
* achieve a long-sought "interactive" (as opposed to
"batch-processing") build maintenance style.
* be able to Patch The Build simply by emailing the build-maintenance
list with our proposed change.
* be able to insist on public review of changes to the build
* maintain confidence in our ability to comprehend and incorporate
changes made by third parties to the build
* reduce the need learn RPM packaging techniques in order to
contribute to the build production process
* achieve better "blame" support since we would know whose changes
_actually_ broke the build.
* be able to more easily bisect a build stream looking for the change
that introduced a bug
* ease the process of contributing and maintaining test cases and
test scripts, automated or not
Caveats:
We would need to:
* improve our testing process to detect and cope with conflicting
changes to generated files like package databases
* provide root access on some Linux host(s) (or take great care with
fakeroot / qemu configuration) to allow others to work on the
filesystem without screwing up file ownership and permissions
* work hard to ensure a consistently high level of quality in our
release branches by refusing to accept patches with inadequate
provenance or which bundle unrelated changes.
Thoughts?
Michael
More information about the Devel
mailing list