To accommodate optional lines, we need to use a construct like this:
foo(
bar)?
instead of this:
foo
(bar)?
The problem became apparent when people tested against older git after
the introduction of the patch to work with newer git:
292361d86d1cf0cc555681ae43371d66c8ebb366
Thanks to Greg Troxel and Basil Mohamed Gohar for reporting the
problem.
Signed-off-by: Rob Browning <rlb@defaultvalue.org>
Tested-by: Rob Browning <rlb@defaultvalue.org>
observed="$(compare-trees bup/ bup-baseline/ | LC_ALL=C sort)" || exit $?
wv_matches_rx "$observed" \
'\*deleting[ ]+logs/refs/heads/src
observed="$(compare-trees bup/ bup-baseline/ | LC_ALL=C sort)" || exit $?
wv_matches_rx "$observed" \
'\*deleting[ ]+logs/refs/heads/src
-\*deleting[ ]+refs/heads/src
-(\.d\.\.t\.\.\.\.\.\.[ ]+\./)?
+\*deleting[ ]+refs/heads/src(
+\.d\.\.t\.\.\.\.\.\.[ ]+\./)?
\.d\.\.t\.\.\.[.]*[ ]+logs/refs/heads/
\.d\.\.t\.\.\.[.]*[ ]+logs/refs/heads/
-\.d\.\.t\.\.\.[.]*[ ]+refs/heads/
-(>f\+\+\+\+\+\+\+\+\+[ ]+packed-refs)?'
+\.d\.\.t\.\.\.[.]*[ ]+refs/heads/(
+>f\+\+\+\+\+\+\+\+\+[ ]+packed-refs)?'
WVSTART "rm /foo (one of many)"
WVSTART "rm /foo (one of many)"
observed="$(compare-trees bup/ bup-baseline/ | LC_ALL=C sort)" || exit $?
wv_matches_rx "$observed" \
"\*deleting[ ]+logs/refs/heads/src
observed="$(compare-trees bup/ bup-baseline/ | LC_ALL=C sort)" || exit $?
wv_matches_rx "$observed" \
"\*deleting[ ]+logs/refs/heads/src
-\*deleting[ ]+refs/heads/src
-(\.d\.\.t\.\.\.\.\.\.[ ]+\./)?
+\*deleting[ ]+refs/heads/src(
+\.d\.\.t\.\.\.\.\.\.[ ]+\./)?
\.d\.\.t\.\.\.[.]*[ ]+logs/refs/heads/
\.d\.\.t\.\.\.[.]*[ ]+logs/refs/heads/
-\.d\.\.t\.\.\.[.]*[ ]+refs/heads/
-(>f\+\+\+\+\+\+\+\+\+[ ]+packed-refs)?"
+\.d\.\.t\.\.\.[.]*[ ]+refs/heads/(
+>f\+\+\+\+\+\+\+\+\+[ ]+packed-refs)?"
WVSTART "rm /foo /bar (multiple of many)"
WVSTART "rm /foo /bar (multiple of many)"
"\*deleting[ ]+logs/refs/heads/src-2
\*deleting[ ]+logs/refs/heads/src-4
\*deleting[ ]+refs/heads/src-2
"\*deleting[ ]+logs/refs/heads/src-2
\*deleting[ ]+logs/refs/heads/src-4
\*deleting[ ]+refs/heads/src-2
-\*deleting[ ]+refs/heads/src-4
-(\.d\.\.t\.\.\.\.\.\.[ ]+\./)?
+\*deleting[ ]+refs/heads/src-4(
+\.d\.\.t\.\.\.\.\.\.[ ]+\./)?
\.d\.\.t\.\.\.[.]*[ ]+logs/refs/heads/
\.d\.\.t\.\.\.[.]*[ ]+logs/refs/heads/
-\.d\.\.t\.\.\.[.]*[ ]+refs/heads/
-(>f\+\+\+\+\+\+\+\+\+[ ]+packed-refs)?"
+\.d\.\.t\.\.\.[.]*[ ]+refs/heads/(
+>f\+\+\+\+\+\+\+\+\+[ ]+packed-refs)?"
WVSTART "rm /foo /bar (all)"
WVSTART "rm /foo /bar (all)"
\*deleting[ ]+refs/heads/src-2
\*deleting[ ]+refs/heads/src-3
\*deleting[ ]+refs/heads/src-4
\*deleting[ ]+refs/heads/src-2
\*deleting[ ]+refs/heads/src-3
\*deleting[ ]+refs/heads/src-4
-\*deleting[ ]+refs/heads/src-5
-(\.d\.\.t\.\.\.\.\.\.[ ]+\./)?
+\*deleting[ ]+refs/heads/src-5(
+\.d\.\.t\.\.\.\.\.\.[ ]+\./)?
\.d\.\.t\.\.\.[.]*[ ]+logs/refs/heads/
\.d\.\.t\.\.\.[.]*[ ]+logs/refs/heads/
-\.d\.\.t\.\.\.[.]*[ ]+refs/heads/
-(>f\+\+\+\+\+\+\+\+\+[ ]+packed-refs)?"
+\.d\.\.t\.\.\.[.]*[ ]+refs/heads/(
+>f\+\+\+\+\+\+\+\+\+[ ]+packed-refs)?"
WVSTART "rm /foo/bar (lone save - equivalent to rm /foo)"
WVSTART "rm /foo/bar (lone save - equivalent to rm /foo)"
observed="$(compare-trees bup/ bup-baseline/ | LC_ALL=C sort)" || exit $?
wv_matches_rx "$observed" \
"\*deleting[ ]+logs/refs/heads/src
observed="$(compare-trees bup/ bup-baseline/ | LC_ALL=C sort)" || exit $?
wv_matches_rx "$observed" \
"\*deleting[ ]+logs/refs/heads/src
-\*deleting[ ]+refs/heads/src
-(\.d\.\.t\.\.\.\.\.\.[ ]+\./)?
+\*deleting[ ]+refs/heads/src(
+\.d\.\.t\.\.\.\.\.\.[ ]+\./)?
\.d\.\.t\.\.\.[.]*[ ]+logs/refs/heads/
\.d\.\.t\.\.\.[.]*[ ]+logs/refs/heads/
-\.d\.\.t\.\.\.[.]*[ ]+refs/heads/
-(>f\+\+\+\+\+\+\+\+\+[ ]+packed-refs)?"
+\.d\.\.t\.\.\.[.]*[ ]+refs/heads/(
+>f\+\+\+\+\+\+\+\+\+[ ]+packed-refs)?"
verify-changes-caused-by-rewriting-save()
verify-changes-caused-by-rewriting-save()