24 Ways: CSS Production Notes from Subversion

I came across a great article about creating CSS production notes by Andy Clark. It’s a great idea to show co-workers the information and notes about a file but in my production environment I often use subversion so I’ve merged the two. If you use subversion and a dynamic language such as PHP there’s no reason why you can’t show the subversion log for the current file in the same way. Here’s a quick little PHP script that does exactly that. Feel free to use and edit it as much as you like, just let me know if you make a big improvement so I can post it here. Enjoy:

<?php

/**
 * A quick PHP script to produce the notes markup from subversion logs.
 * @see http://24ways.org/2006/css-production-notes
 */

//the current file in the repository, you could use $_SERVER['PHP_SELF']
$file = '/home/jeff/subversion/myproject/trunk/index.php';

//retrieve the log from subversion
$exec = array(
        'cmd'=> 'svn log --xml --verbose ' . escapeshellarg($file), //command
        'output'=>null,
        'return'=>null
);
exec($exec['cmd'],$exec['output'],$exec['errors']);

//make it a string.
$log = join($exec['output']);

//create the notes
$notes = '';
$xml = new SimpleXMLElement($log);

//build the notes
foreach ($xml->xpath('//logentry') as $entry) {
	$message = nl2br($entry->msg);

	$notes .=
<<<NOTE
<li>
	<blockquote cite="{$entry->author}">
		<p>{$message}</p>
		<p class="date">{$entry->date}</p>
	</blockquote>
</li>
NOTE;

}

$notes = '<ul>'.$notes.'</ul>';

//do whatever you need with it.
echo $notes;

?>