Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- if (!isset($argv[1]) || !isset($argv[2])) {
- echo " USAGE:\n";
- echo " ".basename(__FILE__)." [url to repository] [revision numbers]\n";
- echo " Revision numbers are taken in the same format as SVN (1:10, 1:HEAD etc)\n";
- exit;
- }
- exec('svn diff --summarize '.escapeshellarg($argv[1]).' --revision '.escapeshellarg($argv[2]), $fileList);
- $changedFiles = array(
- 'modified' => array(),
- 'templates' => array(),
- 'added' => array(),
- 'deleted' => array()
- );
- if (substr($argv[1], -1) != '/') {
- $argv[1] .= '/';
- }
- foreach ($fileList as $file) {
- if (!trim($file)) {
- continue;
- }
- $file = trim($file);
- $file = str_replace($argv[1], '', $file);
- $fileName = preg_replace('#^[A-Z]+\s+#i', '', $file, 1);
- if ($fileName == '.') {
- continue;
- }
- if (substr($file, 0, 1) == 'M') {
- $status = 'modified';
- }
- else if (substr($file, 0, 1) == 'A') {
- $status = 'added';
- }
- else if (substr($file, 0, 1) == 'D') {
- $status = 'deleted';
- }
- else {
- $status = 'modified';
- }
- if ($fileName == 'templates') {
- continue;
- }
- else if (substr($fileName, 0, 10) == 'templates/') {
- $templateBits = explode('/', $fileName, 3);
- $template = $templateBits[1];
- if ($template == '__emails') {
- $changedFiles[$status][] = $fileName;
- continue;
- }
- $changedFiles['templates'][$template][$status][] = $fileName;
- }
- else {
- $changedFiles[$status][] = $fileName;
- }
- }
- // Sort the list
- foreach($changedFiles as $type => &$files) {
- if($type == 'templates') {
- uksort($files, 'cmp_templates');
- foreach ($files as &$statusFiles) {
- foreach ($statusFiles as &$templateFiles) {
- uasort($templateFiles, 'cmp');
- }
- }
- }
- else {
- uasort($files, 'cmp');
- }
- }
- if (!empty($changedFiles['modified']) || !empty($changedFiles['deleted'])) {
- echo "Changed Files:\n";
- }
- foreach ($changedFiles['deleted'] as $file) {
- echo "\t".$file." (Deleted)\n";
- }
- echo "\n";
- foreach ($changedFiles['modified'] as $file) {
- echo "\t".$file."\n";
- }
- if (!empty($changedFiles['added'])) {
- echo "\n";
- echo "Files Added:\n";
- foreach ($changedFiles['added'] as $file) {
- echo "\t".$file."\n";
- }
- }
- echo "\n";
- if (!empty($changedFiles['templates'])) {
- echo "Template Changes:\n";
- }
- foreach ($changedFiles['templates'] as $template => $changes) {
- echo "\t".$template."\n";
- if (isset($changes['added'])) {
- foreach ($changes['added'] as $file) {
- echo "\t\t".$file." (Added)\n";
- }
- echo "\n";
- }
- if (isset($changes['deleted'])) {
- foreach ($changes['deleted'] as $file) {
- echo "\t\t".$file." (Deleted)\n";
- }
- echo "\n";
- }
- if (isset($changes['modified'])) {
- foreach ($changes['modified'] as $file) {
- echo "\t\t".$file."\n";
- }
- echo "\n";
- }
- }
- /**
- * Helper functions!
- */
- function cmp($a, $b)
- {
- $a = strtolower($a);
- $b = strtolower($b);
- if ($a == $b) {
- return 0;
- }
- return ($a < $b) ? -1 : 1;
- }
- function cmp_templates($a, $b)
- {
- if ($a == 'default') {
- return -1;
- }
- return cmp($a, $b);
- }
Add Comment
Please, Sign In to add comment