This article looks at satisfying the principles of Configuration Management with varying degrees of tool support, which we classify from Version Control at one end, to true CM tools (and beyond!). Many agile developers restrict themselves to tools that are more on the version control end, so we aim to highlight the differences, and particularly point out certain features which can make your life a lot easier.
The subject of individual -vs- collective code ownership is often the bane of many heated discussions about code change authorization/access and concurrent -vs- serial development. Opponents of collective ownership often claim that it results in "no ownership" of the code and that individual code ownership is better for managing attempts at concurrent changes. Oppenents of individual ownership often counter by saying individual ownership inhibits refactoring and goes against the team ethic of XP and other Agile methods.
GNU Make has no way of detecting that some targets ought to be rebuilt, because it doesn't take into account changing the commands. If, for example DEBUG=1 causes the flags passed to the compiler to change then the target ought to be rebuilt. This article shows how, in a few lines of GNU Make code, to make that happen.
The most recent change (taking GMD from v1.0.0 to v1.0.1) is the addition of dynamic target breakpoints. At the GMD prompt it's now possible to set and remove breakpoints on the name of a file (in GNU Make language a target) that the Makefile will build.
There aren't any debuggers for Make, and Make doesn't provide the sort of interactivity you'd see from a scripting language like Perl or Python. So what is an easy way to figure out the value of a variable? This simple Makefile does all the work for you.