/Documentation/BK-usage/cset-to-linus

https://bitbucket.org/evzijst/gittest · Perl · 49 lines · 35 code · 13 blank · 1 comment · 8 complexity · e4a547d06d179cba26da960f437502ae MD5 · raw file

  1. #!/usr/bin/perl -w
  2. use strict;
  3. my ($lhs, $rev, $tmp, $rhs, $s);
  4. my @cset_text = ();
  5. my @pipe_text = ();
  6. my $have_cset = 0;
  7. while (<>) {
  8. next if /^---/;
  9. if (($lhs, $tmp, $rhs) = (/^(ChangeSet\@)([^,]+)(, .*)$/)) {
  10. &cset_rev if ($have_cset);
  11. $rev = $tmp;
  12. $have_cset = 1;
  13. push(@cset_text, $_);
  14. }
  15. elsif ($have_cset) {
  16. push(@cset_text, $_);
  17. }
  18. }
  19. &cset_rev if ($have_cset);
  20. exit(0);
  21. sub cset_rev {
  22. my $empty_cset = 0;
  23. open PIPE, "bk export -tpatch -hdu -r $rev | diffstat -p1 2>/dev/null |" or die;
  24. while ($s = <PIPE>) {
  25. $empty_cset = 1 if ($s =~ /0 files changed/);
  26. push(@pipe_text, $s);
  27. }
  28. close(PIPE);
  29. if (! $empty_cset) {
  30. print @cset_text;
  31. print @pipe_text;
  32. print "\n\n";
  33. }
  34. @pipe_text = ();
  35. @cset_text = ();
  36. }