Book revision page showing access denied if no revision present
If I understood this right, you have a (Nice) menu on node pages, and you've added the node/[node:nid]/revisions item to that menu. You're not actually listing revisions, just making a link to the revisions page, right?

If so, the problem is that the access callback for that menu item is hardcoded to return access denied if a node doesn't have revisions. Actually looks like this is being fixed for D8. Normally the tab wouldn't show, but it is in your case because you're creating the menu item in a different way, and the access is not checked when the link is printed. The solutions I can think of:


Replace the page with a view listing node revisions. Easy, but I don't know if you can replicate all the core revisions page functionality.
Create a wrapper menu item around the core revisions page using hook_menu(). Call it something else, like node/%node/revs. In the callback for that menu item, check if the node has revisions. If so, return the output of node_revision_overview($nid), the core function that generates that page. Otherwise, return 'No revisions'
Use hook_menu_alter() to take the existing revisions menu item (node/%node/revisions) and move it to your menu. Take a look at the definition of the menu item in node.module line 2043. You'll need to change it to not be a LOCAL_TASK and then use the menu_name property to tell it to get into your custom menu. I'm pretty sure this can work.