I put some invalid syntax in the rules file and svn-all-fast-export
crashed instead of warning me that it was incorrect:
$ rsync --archive --quiet --compress --hard-links --delete --copy-unsafe-links megaglest.svn.sourceforge.net::svn/megaglest/ svn
$ cat authors
mvejvoda = Mark Vejvoda <mark_vejvoda@hotmail.com>
bogomips = BogoMips <bogomips@users.sourceforge.net>
m0ellemeister = m0elle <m0ellemeister@users.sourceforge.net>
mnaumann = mnaumann <mnaumann@users.sourceforge.net>
nosogo = nosogo <nosogo@users.sourceforge.net>
titi_ger = Titus Tscharntke <titi_ger@users.sourceforge.net>
tomreyn = Tom Reynolds <tomreyn@users.sourceforge.net>
(no author) = Mark Vejvoda <mark_vejvoda@hotmail.com>
silnarm = James McCulloch <silnarm@users.sourceforge.net>
politikerneu = PolitikerNEU <politikerneu@users.sourceforge.net>
PolitikerNEU = PolitikerNEU <PolitikerNEU@users.sourceforge.net>
geovah = Forjan Frederic <fforjan@free.fr>
$ cat rules
create repository megaglest-source
end repository
create repository megaglest-data
end repository
create repository megaglest-data-source
end repository
match /trunk/
repository megaglest-source
branch master
end match
match /trunk/data/
repository megaglest-data
branch master
end match
match /(branches|tags)/release-data-source-([^/]+)/
repository megaglest-source
branch \2
end match
match /(branches|tags)/release-([^/]+)/data/
repository megaglest-data
branch \2
end match
match /(branches|tags)/release-([^/]+)/
repository megaglest-source
branch \2
end match
match /trunk-data-source/
repository megaglest-data-source
branch master
end match
match /(.*)/
repository megaglest-source
branch master
file \1
end match
match /data/
repository megaglest-data
branch master
end match
$ gdb --args /usr/bin/svn-all-fast-export --identity-map authors --rules rules --max-rev 8 svn
GNU gdb (GDB) 7.3-debian
Copyright (C) 2011 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /usr/bin/svn-all-fast-export...done.
(gdb) r
Starting program: /usr/bin/svn-all-fast-export --identity-map authors --rules rules --max-rev 8 svn
[Thread debugging using libthread_db enabled]
Invoked as:' /usr/bin/svn-all-fast-export --identity-map authors --rules rules --max-rev 8 svn'
Loading rules from: "rules"
Loading rules from "rules"
Malformed line in rules file: line 47: file \1
Program received signal SIGABRT, Aborted.
0x00007ffff638c405 in *__GI_raise (sig=<optimized out>) at ../nptl/sysdeps/unix/sysv/linux/raise.c:64
64 ../nptl/sysdeps/unix/sysv/linux/raise.c: No such file or directory.
in ../nptl/sysdeps/unix/sysv/linux/raise.c
(gdb) thread apply all bt
Thread 1 (Thread 0x7ffff7fbc760 (LWP 2006)):
#0 0x00007ffff638c405 in *__GI_raise (sig=<optimized out>) at ../nptl/sysdeps/unix/sysv/linux/raise.c:64
#1 0x00007ffff638f680 in *__GI_abort () at abort.c:92
#2 0x00007ffff7107571 in qt_message_output(QtMsgType, char const*) () from /usr/lib/libQtCore.so.4
#3 0x00007ffff71078ef in qt_message(QtMsgType, char const*, __va_list_tag*) () from /usr/lib/libQtCore.so.4
#4 0x00007ffff7107a94 in qFatal(char const*, ...) () from /usr/lib/libQtCore.so.4
#5 0x000000000040b526 in Rules::load (this=0x63fdf0, filename=...) at ruleparser.cpp:231
#6 0x000000000040d211 in RulesList::load (this=0x7fffffffd850) at ruleparser.cpp:39
#7 0x00000000004075bc in main (argc=8, argv=0x7fffffffdc98) at main.cpp:182
(gdb) thread apply all bt full
Thread 1 (Thread 0x7ffff7fbc760 (LWP 2006)):
#0 0x00007ffff638c405 in *__GI_raise (sig=<optimized out>) at ../nptl/sysdeps/unix/sysv/linux/raise.c:64
pid = <optimized out>
selftid = <optimized out>
#1 0x00007ffff638f680 in *__GI_abort () at abort.c:92
act = {__sigaction_handler = {sa_handler = 0x7fffffffcd40, sa_sigaction = 0x7fffffffcd40}, sa_mask = {__val = {140737488342320, 140737488342304, 3, 6520600,
140737488342760, 140737324125088, 140737353917664, 6804088, 4294967295, 206158430232, 1, 4781976, 0, 0, 6553072, 140737337974784}}, sa_flags = -136403134,
sa_restorer = 0x1}
sigs = {__val = {32, 0 <repeats 15 times>}}
#2 0x00007ffff7107571 in qt_message_output(QtMsgType, char const*) () from /usr/lib/libQtCore.so.4
No symbol table info available.
#3 0x00007ffff71078ef in qt_message(QtMsgType, char const*, __va_list_tag*) () from /usr/lib/libQtCore.so.4
No symbol table info available.
#4 0x00007ffff7107a94 in qFatal(char const*, ...) () from /usr/lib/libQtCore.so.4
No symbol table info available.
#5 0x000000000040b526 in Rules::load (this=0x63fdf0, filename=...) at ruleparser.cpp:231
isRepositoryRule = false
isMatchRule = false
isVariableRule = <optimized out>
origLine = {static null = {<No data fields>}, static shared_null = {ref = {_q_value = 63}, alloc = 0, size = 0, data = 0x637dfa, clean = 0, simpletext = 0,
righttoleft = 0, asciiCache = 0, capacity = 0, reserved = 0, array = {0}}, static shared_empty = {ref = {_q_value = 12}, alloc = 0, size = 0, data = 0x7ffff7525e9a,
clean = 0, simpletext = 0, righttoleft = 0, asciiCache = 0, capacity = 0, reserved = 0, array = {0}}, d = 0x65c220, static codecForCStrings = 0x0}
line = {static null = {<No data fields>}, static shared_null = {ref = {_q_value = 63}, alloc = 0, size = 0, data = 0x637dfa, clean = 0, simpletext = 0, righttoleft = 0,
asciiCache = 0, capacity = 0, reserved = 0, array = {0}}, static shared_empty = {ref = {_q_value = 12}, alloc = 0, size = 0, data = 0x7ffff7525e9a, clean = 0,
simpletext = 0, righttoleft = 0, asciiCache = 0, capacity = 0, reserved = 0, array = {0}}, d = 0x66c3e0, static codecForCStrings = 0x0}
hash = <optimized out>
isIncludeRule = <optimized out>
matchLine = {priv = 0x6490e0}
matchAnnotateLine = {priv = 0x6496e0}
variableLine = {priv = 0x651c80}
state = Rules::ReadingMatch
match = {<Rules::Rule> = {filename = {static null = {<No data fields>}, static shared_null = {ref = {_q_value = 63}, alloc = 0, size = 0, data = 0x637dfa, clean = 0,
simpletext = 0, righttoleft = 0, asciiCache = 0, capacity = 0, reserved = 0, array = {0}}, static shared_empty = {ref = {_q_value = 12}, alloc = 0, size = 0,
data = 0x7ffff7525e9a, clean = 0, simpletext = 0, righttoleft = 0, asciiCache = 0, capacity = 0, reserved = 0, array = {0}}, d = 0x63a130,
static codecForCStrings = 0x0}, lineNumber = 44}, rx = {priv = 0x651eb0}, repository = {static null = {<No data fields>}, static shared_null = {ref = {
_q_value = 63}, alloc = 0, size = 0, data = 0x637dfa, clean = 0, simpletext = 0, righttoleft = 0, asciiCache = 0, capacity = 0, reserved = 0, array = {0}},
static shared_empty = {ref = {_q_value = 12}, alloc = 0, size = 0, data = 0x7ffff7525e9a, clean = 0, simpletext = 0, righttoleft = 0, asciiCache = 0, capacity = 0,
reserved = 0, array = {0}}, d = 0x673630, static codecForCStrings = 0x0}, branch = {static null = {<No data fields>}, static shared_null = {ref = {_q_value = 63},
alloc = 0, size = 0, data = 0x637dfa, clean = 0, simpletext = 0, righttoleft = 0, asciiCache = 0, capacity = 0, reserved = 0, array = {0}}, static shared_empty = {
ref = {_q_value = 12}, alloc = 0, size = 0, data = 0x7ffff7525e9a, clean = 0, simpletext = 0, righttoleft = 0, asciiCache = 0, capacity = 0, reserved = 0, array = {
0}}, d = 0x66b140, static codecForCStrings = 0x0}, prefix = {static null = {<No data fields>}, static shared_null = {ref = {_q_value = 63}, alloc = 0, size = 0,
data = 0x637dfa, clean = 0, simpletext = 0, righttoleft = 0, asciiCache = 0, capacity = 0, reserved = 0, array = {0}}, static shared_empty = {ref = {
_q_value = 12}, alloc = 0, size = 0, data = 0x7ffff7525e9a, clean = 0, simpletext = 0, righttoleft = 0, asciiCache = 0, capacity = 0, reserved = 0, array = {0}},
d = 0x637de0, static codecForCStrings = 0x0}, minRevision = -1, maxRevision = -1, annotate = false, action = Rules::Match::Ignore}
file = <incomplete type>
declareLine = {priv = 0x649970}
lineNumber = 48
repoLine = {priv = 0x648ff0}
matchActionLine = {priv = 0x6491d0}
matchRepoLine = {priv = 0x649310}
matchBranchLine = {priv = 0x649450}
matchRevLine = {priv = 0x6495a0}
matchPrefixLine = {priv = 0x649820}
repo = {<Rules::Rule> = {filename = {static null = {<No data fields>}, static shared_null = {ref = {_q_value = 63}, alloc = 0, size = 0, data = 0x637dfa, clean = 0,
simpletext = 0, righttoleft = 0, asciiCache = 0, capacity = 0, reserved = 0, array = {0}}, static shared_empty = {ref = {_q_value = 12}, alloc = 0, size = 0,
data = 0x7ffff7525e9a, clean = 0, simpletext = 0, righttoleft = 0, asciiCache = 0, capacity = 0, reserved = 0, array = {0}}, d = 0x637de0,
static codecForCStrings = 0x0}, lineNumber = 0}, name = {static null = {<No data fields>}, static shared_null = {ref = {_q_value = 63}, alloc = 0, size = 0,
data = 0x637dfa, clean = 0, simpletext = 0, righttoleft = 0, asciiCache = 0, capacity = 0, reserved = 0, array = {0}}, static shared_empty = {ref = {
_q_value = 12}, alloc = 0, size = 0, data = 0x7ffff7525e9a, clean = 0, simpletext = 0, righttoleft = 0, asciiCache = 0, capacity = 0, reserved = 0, array = {0}},
d = 0x637de0, static codecForCStrings = 0x0}, branches = {{p = {static shared_null = {ref = {_q_value = 66}, alloc = 0, begin = 0, end = 0, sharable = 1, array = {
0x0}}, d = 0x637e80}, d = 0x637e80}}, forwardTo = {static null = {<No data fields>}, static shared_null = {ref = {_q_value = 63}, alloc = 0, size = 0,
data = 0x637dfa, clean = 0, simpletext = 0, righttoleft = 0, asciiCache = 0, capacity = 0, reserved = 0, array = {0}}, static shared_empty = {ref = {
_q_value = 12}, alloc = 0, size = 0, data = 0x7ffff7525e9a, clean = 0, simpletext = 0, righttoleft = 0, asciiCache = 0, capacity = 0, reserved = 0, array = {0}},
d = 0x637de0, static codecForCStrings = 0x0}, prefix = {static null = {<No data fields>}, static shared_null = {ref = {_q_value = 63}, alloc = 0, size = 0,
data = 0x637dfa, clean = 0, simpletext = 0, righttoleft = 0, asciiCache = 0, capacity = 0, reserved = 0, array = {0}}, static shared_empty = {ref = {
_q_value = 12}, alloc = 0, size = 0, data = 0x7ffff7525e9a, clean = 0, simpletext = 0, righttoleft = 0, asciiCache = 0, capacity = 0, reserved = 0, array = {0}},
d = 0x637de0, static codecForCStrings = 0x0}}
s = <incomplete type>
lines = {<QList<QString>> = {{p = {static shared_null = {ref = {_q_value = 66}, alloc = 0, begin = 0, end = 0, sharable = 1, array = {0x0}}, d = 0x65bcb0},
d = 0x65bcb0}}, <No data fields>}
includeLine = {priv = 0x651dc0}
it = {i = 0x65be38}
#6 0x000000000040d211 in RulesList::load (this=0x7fffffffd850) at ruleparser.cpp:39
rules = 0x63fdf0
matchRules = {{p = {static shared_null = {ref = {_q_value = 66}, alloc = 0, begin = 0, end = 0, sharable = 1, array = {0x0}}, d = 0x7fffffffd7c0}, d = 0x7fffffffd7c0}}
filename = {static null = {<No data fields>}, static shared_null = {ref = {_q_value = 63}, alloc = 0, size = 0, data = 0x637dfa, clean = 0, simpletext = 0,
righttoleft = 0, asciiCache = 0, capacity = 0, reserved = 0, array = {0}}, static shared_empty = {ref = {_q_value = 12}, alloc = 0, size = 0, data = 0x7ffff7525e9a,
clean = 0, simpletext = 0, righttoleft = 0, asciiCache = 0, capacity = 0, reserved = 0, array = {0}}, d = 0x63a130, static codecForCStrings = 0x0}
_container_ = {c = {<QList<QString>> = {{p = {static shared_null = {ref = {_q_value = 66}, alloc = 0, begin = 0, end = 0, sharable = 1, array = {0x0}}, d = 0x640130},
d = 0x640130}}, <No data fields>}, brk = 0, i = {i = 0x640148}, e = {i = 0x640150}}
#7 0x00000000004075bc in main (argc=8, argv=0x7fffffffdc98) at main.cpp:182
app = <incomplete type>
rulesList = {m_filenames = {static null = {<No data fields>}, static shared_null = {ref = {_q_value = 63}, alloc = 0, size = 0, data = 0x637dfa, clean = 0,
simpletext = 0, righttoleft = 0, asciiCache = 0, capacity = 0, reserved = 0, array = {0}}, static shared_empty = {ref = {_q_value = 12}, alloc = 0, size = 0,
data = 0x7ffff7525e9a, clean = 0, simpletext = 0, righttoleft = 0, asciiCache = 0, capacity = 0, reserved = 0, array = {0}}, d = 0x63a130,
static codecForCStrings = 0x0}, m_rules = {{p = {static shared_null = {ref = {_q_value = 66}, alloc = 0, begin = 0, end = 0, sharable = 1, array = {0x0}},
d = 0x648aa0}, d = 0x648aa0}}, m_allrepositories = {{p = {static shared_null = {ref = {_q_value = 66}, alloc = 0, begin = 0, end = 0, sharable = 1, array = {
0x0}}, d = 0x637e80}, d = 0x637e80}}, m_allMatchRules = {{p = {static shared_null = {ref = {_q_value = 66}, alloc = 0, begin = 0, end = 0, sharable = 1,
array = {0x0}}, d = 0x637e80}, d = 0x637e80}}}
repositories = {{d = 0x48fa58, e = 0x48fa58}}
svn = {d = 0x0}
args = 0x6382a0
resume_from = <optimized out>
max_rev = <optimized out>
cutoff = <optimized out>
min_rev = <optimized out>