snipplrCallback({"id":37916,"title":"push-your-git-logs-to-mysql-with-php","source":"
#!\/usr\/bin\/env php<\/div><\/li> \/**<\/div><\/li> CREATE TABLE `log` (<\/div><\/li> `id` int(10) unsigned NOT NULL auto_increment,<\/div><\/li> `repo` varchar(255) NOT NULL,<\/div><\/li> `commit` varchar(40) NOT NULL,<\/div><\/li> `date` datetime NOT NULL,<\/div><\/li> `message` text NOT NULL,<\/div><\/li> PRIMARY KEY (`id`),<\/div><\/li> UNIQUE KEY `commit` (`commit`)<\/div><\/li> ) ENGINE=MyISAM DEFAULT CHARSET=utf8;<\/div><\/li> *\/<\/div><\/li> <?php<\/span><\/div><\/li> date_default_timezone_set<\/span><\/a>(<\/span>'Europe\/London'<\/span>)<\/span>;<\/span><\/div><\/li> exec<\/span><\/a>(<\/span>'pwd'<\/span>,<\/span>$pwd<\/span>)<\/span>;<\/span><\/div><\/li> $repo<\/span> =<\/span> rtrim<\/span><\/a>(<\/span>array_shift<\/span><\/a>(<\/span>$pwd<\/span>)<\/span>,<\/span>'\/'<\/span>)<\/span>;<\/span><\/div><\/li> $repo<\/span> =<\/span> substr<\/span><\/a>(<\/span>$repo<\/span>,<\/span>strrpos<\/span><\/a>(<\/span>$repo<\/span>,<\/span>'\/'<\/span>)<\/span> +<\/span> 1<\/span>)<\/span>;<\/span><\/div><\/li> $db<\/span> =<\/span> new<\/span> PDO(<\/span>'mysql:dbname=DB;host=127.0.0.1'<\/span>,<\/span>'USERNAME'<\/span>,<\/span>'PASSWORD'<\/span>)<\/span>;<\/span><\/div><\/li> exec<\/span><\/a>(<\/span>'git log --all --pretty=format:"%H%n%ct%n%s%n%b%n<><><>"'<\/span>,<\/span>$capture<\/span>,<\/span>$log<\/span>)<\/span>;<\/span><\/div><\/li> if<\/span> (<\/span>$capture<\/span>)<\/span>{<\/span><\/div><\/li> \/\/ preprocess the log<\/span><\/div><\/li> $commits<\/span> =<\/span> array<\/span><\/a>(<\/span>)<\/span>;<\/span><\/div><\/li> $current<\/span> =<\/span> array<\/span><\/a>(<\/span>)<\/span>;<\/span><\/div><\/li> foreach<\/span> (<\/span>$capture<\/span> as<\/span> $row<\/span>)<\/span>{<\/span><\/div><\/li> if<\/span> (<\/span>trim<\/span><\/a>(<\/span>$row<\/span>)<\/span> ===<\/span> '<><><>'<\/span>)<\/span> {<\/span><\/div><\/li> $commits<\/span>[<\/span>]<\/span> =<\/span> $current<\/span>;<\/span><\/div><\/li> $current<\/span> =<\/span> array<\/span><\/a>(<\/span>)<\/span>;<\/span><\/div><\/li> }<\/span> else<\/span> {<\/span><\/div><\/li> $current<\/span>[<\/span>]<\/span> =<\/span> $row<\/span>;<\/span><\/div><\/li> }<\/span><\/div><\/li> }<\/span><\/div><\/li> $v<\/span> =<\/span> array<\/span><\/a>(<\/span>)<\/span>;<\/span><\/div><\/li> $b<\/span> =<\/span> array<\/span><\/a>(<\/span>)<\/span>;<\/span><\/div><\/li> foreach<\/span> (<\/span>$commits<\/span> as<\/span> $commit<\/span>)<\/span>{<\/span><\/div><\/li> $sha<\/span> =<\/span> $commit<\/span>[<\/span>0<\/span>]<\/span>;<\/span><\/div><\/li> $m<\/span> =<\/span> $commit<\/span>[<\/span>2<\/span>]<\/span> .<\/span> (<\/span>trim<\/span><\/a>(<\/span>$commit<\/span>[<\/span>3<\/span>]<\/span>)<\/span> ===<\/span> ''<\/span> ? ''<\/span> :<\/span> "\\n<\/span>\\n<\/span>"<\/span>