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;
?>