Are the revision settings on a content type respected when the content is changed programatically?
No, not by default, if you're using node_load() &amp; node_save(), without any other code, it will not retrieve the content type's revision setting. For example:

$my_node = node_load(123);
$my_node-&gt;title = 'new title';
node_save($my_node);


node_save() uses the $my_node-&gt;revision property to determine if it's creating a new revision. In the above example, $my_node will not have the revision flag set from a node_load() retrieval. 

If you manually set the $my_node-&gt;revision to TRUE it will do this:

$my_node = node_load(123);
$my_node-&gt;revision = TRUE;
$my_node-&gt;title = 'new title';
node_save($my_node);