Guest User

Untitled

a guest
Feb 21st, 2018
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.00 KB | None | 0 0
  1. <?php
  2. if (!isset($argv[1]) || !isset($argv[2])) {
  3. echo " USAGE:\n";
  4. echo " ".basename(__FILE__)." [url to repository] [revision numbers]\n";
  5. echo " Revision numbers are taken in the same format as SVN (1:10, 1:HEAD etc)\n";
  6. exit;
  7. }
  8.  
  9. exec('svn diff --summarize '.escapeshellarg($argv[1]).' --revision '.escapeshellarg($argv[2]), $fileList);
  10.  
  11. $changedFiles = array(
  12. 'modified' => array(),
  13. 'templates' => array(),
  14. 'added' => array(),
  15. 'deleted' => array()
  16. );
  17.  
  18. if (substr($argv[1], -1) != '/') {
  19. $argv[1] .= '/';
  20. }
  21.  
  22. foreach ($fileList as $file) {
  23. if (!trim($file)) {
  24. continue;
  25. }
  26. $file = trim($file);
  27. $file = str_replace($argv[1], '', $file);
  28. $fileName = preg_replace('#^[A-Z]+\s+#i', '', $file, 1);
  29. if ($fileName == '.') {
  30. continue;
  31. }
  32. if (substr($file, 0, 1) == 'M') {
  33. $status = 'modified';
  34. }
  35. else if (substr($file, 0, 1) == 'A') {
  36. $status = 'added';
  37. }
  38. else if (substr($file, 0, 1) == 'D') {
  39. $status = 'deleted';
  40. }
  41. else {
  42. $status = 'modified';
  43. }
  44.  
  45. if ($fileName == 'templates') {
  46. continue;
  47. }
  48. else if (substr($fileName, 0, 10) == 'templates/') {
  49. $templateBits = explode('/', $fileName, 3);
  50. $template = $templateBits[1];
  51.  
  52. if ($template == '__emails') {
  53. $changedFiles[$status][] = $fileName;
  54. continue;
  55. }
  56.  
  57. $changedFiles['templates'][$template][$status][] = $fileName;
  58. }
  59. else {
  60. $changedFiles[$status][] = $fileName;
  61. }
  62. }
  63.  
  64. // Sort the list
  65. foreach($changedFiles as $type => &$files) {
  66. if($type == 'templates') {
  67. uksort($files, 'cmp_templates');
  68. foreach ($files as &$statusFiles) {
  69. foreach ($statusFiles as &$templateFiles) {
  70. uasort($templateFiles, 'cmp');
  71. }
  72. }
  73. }
  74. else {
  75. uasort($files, 'cmp');
  76. }
  77. }
  78.  
  79. if (!empty($changedFiles['modified']) || !empty($changedFiles['deleted'])) {
  80. echo "Changed Files:\n";
  81. }
  82.  
  83. foreach ($changedFiles['deleted'] as $file) {
  84. echo "\t".$file." (Deleted)\n";
  85. }
  86. echo "\n";
  87. foreach ($changedFiles['modified'] as $file) {
  88. echo "\t".$file."\n";
  89. }
  90.  
  91. if (!empty($changedFiles['added'])) {
  92. echo "\n";
  93. echo "Files Added:\n";
  94. foreach ($changedFiles['added'] as $file) {
  95. echo "\t".$file."\n";
  96. }
  97. }
  98.  
  99. echo "\n";
  100. if (!empty($changedFiles['templates'])) {
  101. echo "Template Changes:\n";
  102. }
  103.  
  104. foreach ($changedFiles['templates'] as $template => $changes) {
  105. echo "\t".$template."\n";
  106. if (isset($changes['added'])) {
  107. foreach ($changes['added'] as $file) {
  108. echo "\t\t".$file." (Added)\n";
  109. }
  110. echo "\n";
  111. }
  112. if (isset($changes['deleted'])) {
  113. foreach ($changes['deleted'] as $file) {
  114. echo "\t\t".$file." (Deleted)\n";
  115. }
  116. echo "\n";
  117. }
  118. if (isset($changes['modified'])) {
  119. foreach ($changes['modified'] as $file) {
  120. echo "\t\t".$file."\n";
  121. }
  122. echo "\n";
  123. }
  124. }
  125.  
  126. /**
  127. * Helper functions!
  128. */
  129. function cmp($a, $b)
  130. {
  131. $a = strtolower($a);
  132. $b = strtolower($b);
  133. if ($a == $b) {
  134. return 0;
  135. }
  136. return ($a < $b) ? -1 : 1;
  137. }
  138.  
  139. function cmp_templates($a, $b)
  140. {
  141. if ($a == 'default') {
  142. return -1;
  143. }
  144.  
  145. return cmp($a, $b);
  146. }
Add Comment
Please, Sign In to add comment