http://www.perlmonks.org?node_id=819831


in reply to Find svn log revisions with log message matching a given string

Will break if for some reason you are fond of putting horizontal rules (i.e. 72 consecutive - characters) in your commit messages.

You're depending on some implementation specific markup that won't necessarily exist for every client. The XML format (svn log --xml {url}) is a bit more standard if you want to parse it with tools (or you might consider using SVN::Client)

I would rather do -n than while (<STDIN>) {...}, but perl then treats my search term as a file to be processed, which makes me sad.

That's because you are reading from @ARGV after the <> operator (generated by -n) is. Try something like...

perl -ne 'BEGIN{$/="-"x72; $re = shift} print"$r\n"if((($r)=split)&&/$ +re/)' search_term

...or...

perl -lne 'BEGIN{$/="-"x72; $re = shift} /$re/ and ($_)=split and prin +t' search_term

Replies are listed 'Best First'.
Re^2: Find svn log revisions with log message matching a given string
by bellaire (Hermit) on Jan 27, 2010 at 12:55 UTC
      You're depending on some implementation specific markup that won't necessarily exist for every client. The XML format (svn log --xml {url}) is a bit more standard if you want to parse it with tools (or you might consider using SVN::Client)

    Good point, that's true, but parsing XML properly is more of a full script than this. Once I've gone that far I'd want to include more features... beyond the intended scope of this solution. I have no problem with the fact that this method is limited to clients that produce output in this particular format.

      That's because you are reading from @ARGV after the <> operator (generated by -n) is. Try something like...

    Great, that's what I needed to know. :) I like the use of -l for the cleaner split and print as well.