diff --git a/database-update.sql b/database-update.sql index be0f91499..8d0ae4bf9 100644 --- a/database-update.sql +++ b/database-update.sql @@ -74,3 +74,4 @@ ALTER TABLE `devices` CHANGE `os` `os` VARCHAR( 32 ) NULL DEFAULT NULL; ALTER TABLE `temperature` ADD `temp_precision` INT(11) NULL DEFAULT '1'; UPDATE temperature SET temp_precision=10 WHERE temp_tenths=1; ALTER TABLE `temperature` DROP `temp_tenths`; +CREATE TABLE IF NOT EXISTS `dbSchema` ( `revision` int(11), KEY `revision` (`revision`)) ENGINE=MyISAM DEFAULT CHARSET=latin1; diff --git a/discovery.php b/discovery.php index ac72df40a..703cdb488 100755 --- a/discovery.php +++ b/discovery.php @@ -38,8 +38,27 @@ if(!$where) { exit; } -echo("Applying database updates...\n"); -shell_exec("scripts/update-sql.php database-update.sql"); +if (file_exists('.svn')) +{ + list(,$dbu_rev) = split(': ',@shell_exec('svn info database-update.sql|grep ^Revision')); + + $device_query = mysql_query("SELECT revision FROM `dbSchema`"); + if ($rev = @mysql_fetch_array($device_query)) + { + $db_rev = $rev['revision']; + } + else + { + $db_rev = 0; + } + + if ($dbu_rev+0 > $db_rev) + { + echo("Applying database updates to from r$db_rev to r" . trim($dbu_rev) . "...\n"); + shell_exec("scripts/update-sql.php database-update.sql"); + mysql_query("INSERT INTO dbSchema VALUES ($dbu_rev) ON DUPLICATE KEY UPDATE revision=$dbu_rev"); + } +} if(isset($options['d'])) { echo("DEBUG!\n"); $debug = 1; }