ignore_helper.pl 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. ################################################################################
  2. # ignore_helper.pl
  3. # Copyright (c) 2007-2014 Anthony Minessale II <anthm@freeswitch.org>
  4. #
  5. # Permission is hereby granted, free of charge, to any person
  6. # obtaining a copy of this software and associated documentation
  7. # files (the "Software"), to deal in the Software without
  8. # restriction, including without limitation the rights to use,
  9. # copy, modify, merge, publish, distribute, sublicense, and/or sell
  10. # copies of the Software, and to permit persons to whom the
  11. # Software is furnished to do so, subject to the following
  12. # conditions:
  13. #
  14. # The above copyright notice and this permission notice shall be
  15. # included in all copies or substantial portions of the Software.
  16. #
  17. # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
  18. # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
  19. # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
  20. # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
  21. # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
  22. # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
  23. # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
  24. # OTHER DEALINGS IN THE SOFTWARE.
  25. #
  26. # Usage: cat <file with list of things to ignore (full path from trunk root) > | ignore_helper.pl
  27. #
  28. ################################################################################
  29. while (<>) {
  30. my $path = $_;
  31. my ($dir, $file) = $path =~ /(.*)\/([^\/]+)$/;
  32. if (!$dir) {
  33. $dir = ".";
  34. $file = $path;
  35. }
  36. my $props = $PROP_HASH{$dir};
  37. if (!$props) {
  38. my @prop_tmp = `svn propget svn:ignore $dir`;
  39. my @prop_tmp2;
  40. foreach (@prop_tmp) {
  41. $_ =~ s/[\r\n]//g;
  42. if ($_) {
  43. push @prop_tmp2, $_;
  44. }
  45. }
  46. $props = \@prop_tmp2;
  47. $PROP_HASH{$dir} = $props;
  48. }
  49. if ($props) {
  50. push @{$props}, "$file";
  51. }
  52. }
  53. foreach (keys %PROP_HASH) {
  54. my $dir = $_;
  55. my @list = @{$PROP_HASH{$dir}};
  56. my $path = $dir;
  57. $path =~ s/\//_/g;
  58. $path = "/tmp/$path.tmp";
  59. print "Setting Properties on $dir\n";
  60. open O, ">$path";
  61. foreach (@list) {
  62. print O "$_\n";
  63. }
  64. close O;
  65. my $cmd = "svn propset svn:ignore -F $path $dir";
  66. system($cmd);
  67. unlink($path);
  68. }