I tested on Debian 6.0 Squeeze and on Sourceforge Redhat server.
Just installed FreeBSD 9.0 in a VM and sed on FreeBSD needs a semicolon to separate last command and closing bracket.
The used sed functions are just the most basic sed and regexe functions.
Corrected line:
SUSPICIOUS=$($SVNLOOK diff -t "$TXN" "$REPOS" | sed -n -e '/^+<<<<<<< \..*$/,/^+>>>>>>> \..*$/ { /^+=======$/p ; //q ; }' | wc -l)
Also re-tested successfully on Debian 6.0 Squeeze and Sourceforge Redhat server.
Sorry for the inconvenience
Maddes
I'm not subscribed and would appreciate being explicitly Cc:ed in any responses. Thanks.
On 20.02.2013 15:47, Daniel Shahaf wrote:
> Thanks Gavin. Matthias: how portable are the sed constructs you used?
>
> They seem to be invalid on BSD sed:
> % printf 'foo\nbar\nbaz\n' | sed -ne '/foo/,/baz/ { /bar/p }'
> sed: 1: "/foo/,/baz/ { /bar/p }
> ": extra characters at the end of p command
>
> I don't mind improving the detection but I'd like to keep the script
> portable (and the check cheap, if possible, since 'diff' output can be
> large).
>
> Gavin Baumanis wrote on Wed, Feb 20, 2013 at 09:10:48 -0500:
>> Ping.
>> This Patch submission has received no comments.
>>
>>
>>
>> > -----Original Message-----
>> > From: Matthias Buecher / Germany [mailto:mail_at_maddes.net]
>> > Sent: Saturday, 2 February 2013 15:20
>> > To: dev_at_subversion.apache.org
>> > Subject: [bug] detect-merge-conflicts.sh reports false positive merge conflict
>> > markers
>> >
>> > Hello,
>> >
>> > the contrib script "detect-merge-conflicts.sh" [1] uses a grep command which
>> > also finds false positive merge conflict markers: it finds single lines of
>> > "=======" and the pre-commit will fail.
>> >
>> > For example I wanted to add a readme file that contains the following two
>> > lines:
>> > Install
>> > =======
>> >
>> > Of course committing failed.
>> >
>> > The correct solution would be to use sed and search for real blocks of merge
>> > conflict marker:
>> > SUSPICIOUS=$($SVNLOOK diff -t "$TXN" "$REPOS" | sed -n -e '/^+<<<<<<<
>> > \..*$/,/^+>>>>>>> \..*$/ { /^+=======$/p ; //q }' | wc -l)
>> >
>> > This sed command finds blocks enclosed with new "<<<<<< ." and ">>>>>>>."
>> > and checks if this block contains a new line with "=======". If found it prints
>> > out that line and quits sed.
>> >
>> > Kind regards
>> > Matthias "Maddes" Bücher
>> >
>> > P.S.:
>> > I'm not subscribed and would appreciate being explicitly Cc:ed in any
>> > responses. Thanks.
>> >
>> > [1] http://svn.apache.org/repos/asf/subversion/trunk/contrib/hook-
>> > scripts/detect-merge-conflicts.sh
>>
>
Matthias "Maddes" Bücher
--
http://www.maddes.net/
Home: Earth / Germany / Ruhr-Area
Received on 2013-02-20 23:54:09 CET