Accepting request 223274 from home:AndreasStieger:branches:devel:tools:scm:svn

Apache Subversion 1.8.8

OBS-URL: https://build.opensuse.org/request/show/223274
OBS-URL: https://build.opensuse.org/package/show/devel:tools:scm:svn/subversion?expand=0&rev=165
This commit is contained in:
Andreas Stieger 2014-02-20 17:49:33 +00:00 committed by Git OBS Bridge
parent 5a17d84723
commit 6db5e36bcc
10 changed files with 183 additions and 593 deletions

9
_constraints Normal file
View File

@ -0,0 +1,9 @@
<?xml version="1.0"?>
<constraints>
<hardware>
<memory>
<size unit="M">768</size>
</memory>
</hardware>
</constraints>

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:fd522bf1ecda1c09426ed6c436f0744ab95c31702b0904add089864c73ee7564
size 6881572

View File

@ -1,93 +0,0 @@
-----BEGIN PGP SIGNATURE-----
Version: GnuPG/MacGPG2 v2.0.22 (Darwin)
Comment: GPGTools - http://gpgtools.org
iQIcBAABCgAGBQJShYJ6AAoJEGLUj60WoN4B7GUQAIDYngOzNjzoV1ZL+gVAO3gf
ZlqWl+7OUhnM3AahPhsDcrNjZ2CBEsdgvFLLqEyP5tKZFPOi6Jgy5EccZcHlie1F
fMDaaXrqB8u5sOP1LLdE3lnQdOQuXV2oIamDRLRxLTJlJLhRHi7Y4RMUhzUuuGII
L2l9XWZ0sCElY5P2Ca1e0fDVxEAIsfPDB6R1BZlBI/gH3n7WhKkmusnHSjtl9FzV
nOJIyu87oax/Vd0tum5tNr5NP0P04ml+FWhLAM9CmYoEkA/cQMR2LgMu8HbRm8IL
HTHXqvVGQ0SYROTx3hvHEBvAfpFnX5RyzdKvVItr8ZgTSM2LaXxm2U4AyZP3mel5
/tpSHvyXdm3z75s8rcpWgdyfGnuwH8Kpo7SfcAIi4D/z4Oheh508OxUZpRG+iW9w
ajvkRLnMS6O+WlMCxfa3+cJGRjLnk23JQE3iF5yj4SLu/02hsOWmvr1pDTMXGvdw
kIeiGB6ZfZcdJsjE8QKhlG+SAbKErXGwrNugJqWA9M+AB3KcVJi715IwTcL2nnwP
w8jcxypy8qd5afv0W9TlNlN+wjw7HeQwa1+gOIm4yra2d9MlX0BPbtfhk+FxeUHy
LHYcE8vH8ls2AwxX21sLoM7e0Uw8x/D5NrTtDaHCgV21FtKolXMtASmRxCMLDAMU
AVrt7eBDhtBuxkA8V/KW
=UM+F
-----END PGP SIGNATURE-----
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.14 (GNU/Linux)
iQIcBAABAgAGBQJShlnuAAoJEJnsdBtXkhrM/ikP+gKSYB7KC/qcfRbZS4/VugjB
zolKwiKeW7RgAQHmiy+o6OROTGglvM06sY32rRxHL0Yy2wCH7oO+B7/3GQM0oBET
bDMJVhfmsU/9AOoZ7L22HOL1x/VgC1/9u7o45wHjTDABYWECK4XjYixOq8Cs1tyF
+3ALwEYucNx/rwC7UoI9SaDB3qQI3UKp2a6Qvy+fQ/4IK5hYIis4COYCDZgb015M
2Mv1o54tGNU8gzIx/p9b0T3J2GrxMf/P9tC6crE3HTbdLVa9fvKYMZqYoHvKyYsh
87zGfoUYoVfANx8eWeFeyvrZpaa1i3XT9PULD1Lp9s/XeD1s+KFEqDS+fhQaObYF
tW2Q4pleMbbzZ74OObgjCHH4AJSIWYA1dGlgzKPKJOKHU9rKtt1lFUztQfr4SuNZ
km1RAdDz4wPYua/ZfMwS917WKNyFtMoQqck6OHyd88TWWbEfVbpokh3aR5bR84Hn
vN403Xn6pEYeJUpPG7bFygQodqeJM2vilVSE9VoCXTJ0toXgcfB2dFEJypRGmwZF
kn914/01mGRmazgyOrx3HGZ1uxBfa1v09zve+Ndv0UQ5rI7R1XCVABvb7+mWzs46
AJu6QByr6HJIX2pC8A60TqJCdzLoRziLysDApIVVmtD8hu9lhzD4fiSjgtAWJB0W
n+txESGTXiMKbq2O2s/K
=2ap9
-----END PGP SIGNATURE-----
-----BEGIN PGP SIGNATURE-----
Version: GnuPG/MacGPG2 v2.0.19 (Darwin)
Comment: GPGTools - http://gpgtools.org
iQIcBAABCgAGBQJSiRLMAAoJEBvKZYajR5Q/SgUP/3waXR4ZomAj3MRllQ9xzh2c
ZcR7lpTbhd3PbxUHB/6JHwBF8VgYPxo0O9FQC4+Cueqve6W7BDozm3p5j0UZh0fl
pYA8eiGmmCmeiv6fqKsUASa2obGRHDyqLwWlJPu7D6hrH6iMr2cIzKnJrvjycglG
C3NcIi85CxxbBxuoG0aY/vIB7pioJI3pRpy3Hy/kyHWXDfU73SQTVmg8Ii5XrTz3
30/xmBb7OMxIvCe3eWcYWWCN8rtM7+se5KuMGf4HlEBfExm/EY8Mj8jFG6ZgXKUN
dURDGbnaZb/+2O7/+SIje9Kcbfp4FbEA/xbZ/+37eEEN38gG0HFIXLsMmO4y55Gy
zzFTls+3zTS3kEeq8Cwjm20T2VlEVUFATSiANQ49YrP9D0FSFi7nqL1MdO0FPNm4
hHBhB8SVXUsRX05fniZRGrD9hgMyJrsC2GTWMq/8OzTNijybl6KKRlzg8RCSYP8i
Q4IH1eMLJwLzpoggCveFP8uMsGFrWiRHqWeP8bcQXlzK43QOpMRUx42kB82qcUzS
zxhXh/Rgu68nZpCrL7WqY3mzWvutyfKIvK7iOzByXtNknt9bXEb1zQkRzNnDOanP
eTORGhO8oK32POW3jiGuZ57RIp40R1OHPdFEzbsk4P/5J5URZdXja1HRhUatob0f
iui3Ee5b5wEXig8/9wka
=S1ol
-----END PGP SIGNATURE-----
-----BEGIN PGP SIGNATURE-----
Version: GnuPG/MacGPG2 v2.0.19 (Darwin)
Comment: GPGTools - http://gpgtools.org
iQEcBAABCgAGBQJSiRL0AAoJECm4ktDIYoUB9V8H/0PaBIUNIdTzeN7SsznVZg6z
Q2O9Buk1X97HwBixxMGfdaViH0OZG2p97nPXJgNomDjV1puhcDXHdFtM8N137Hdi
jYBiGh8BXRS4e33/6AiGKYZZQ0e1riADhqXEY0FgiiR5AXEed1zpyJyGlFLIfzK6
/jqV0wLCYO6hcpROxzfsJY4YX97iqLtDveedbB7HaA9riZ5xlkIiRdt44j1FJJkx
qN/p/LFlxFl2vUNacQHLY3fHY09XS78KI7gpLM1rbXSAx79cxqPcMSpw14YRLyta
cyuj7M2Lkbb/eRBuwoXt7ROjsODrP1OsWSmm1rGftDwYaRpTrqIYvqwlZyJ9ICA=
=KpLh
-----END PGP SIGNATURE-----
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.12 (GNU/Linux)
iQEcBAABCAAGBQJSijlfAAoJEHbXiOHtGlmcdkoH/jySpfY0TE+MqrdJCLoG24Bs
EBM4DOX1OAsHmY3/WxqViRllZxIBpTUSqlHC6XXVi9FAVp2Bwj/Raw3hOi6TtegY
KpZQ53KCBPmepQBThUAWyosqVWOr0TItOfDxS7o6U/XQmB3cF/Z2oYFWjfvF+DdM
/guMrzzLnUJN0Q5ReeYezzLNraG4Zf20CRtQ3PV47WpK6MIs/vXImoVyr4jtApwY
Xnv0aL64liPuDY4RQSGZrGQjb/xyky0+FmziDrK5h+4ykC4y7lMGRNvky+hQU5p/
5J3WSwRlro3zP2xmY7gW2s8l2T8+paoW2fFEs617I/cA2y/s+9VTcrBg1hwy41s=
=oLcM
-----END PGP SIGNATURE-----
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
iQIcBAABCAAGBQJSjdDgAAoJEB+wZLhO7MSTLzIQAIF1IMbZiJW/fD68or6wYcte
OVysoNODy5/KpgovgsUq917BpDSg/pG63M4zo6H4MHXUrPiHub2zDJp7QsaqXK0C
HNIgx3NJ3jyaDerrrvwQkzMgBZkwH7Jq4g/j9mkGW7bJ2+JErbPDkmkVM4BpcC2E
1DdDDbLxCQf3KiBaz5s4Rx3cp/ZmTkKUvJU0MrCTZpVL83d8iNjEK6yO83z3NAGf
gtjaI6qGQhlpsbd9yCmJjIr31V2w6KkYmDZ/gxkg/ySflJ2gIAN6suR3Y93c89Dg
JEQl7gUQ9KvyKblQXPS/Q51UMKLQu4YcrjT+g3FqeOVZAqZ+jdiGBMblVeKkCyNB
YmtLXrvpcB8Qj3oR88avvQ5mSfWNfDTJ2rTV/t2/eTfVOH13x/gfwVBBEiHBoPE7
d7gH+a3irl3k1j0yO0J6Q1WgX98HMJWK2sR3/SpV0aKNGfYXByQ1MV3ViHpuE4f1
zJO51isBgiVANiRTRx1oQUVEEA7CeqZpLjm8ca3fUAHqgY5tujpJL/tOJPA+nm6/
Zir5SNNfIuWZzX3ZNg0BhThuQbFhezkiLAVMUUJ7Fi5hC6zDTwMXns1gebIq2RY1
Pt/fkAT+MkVV7hnPlbWM/zng9fG+pxCTnpR5tyfmyCa2nPNqHVAmrKc0mxgn45Gh
sv1uzhqhtIfqAXYVVZeH
=FfmI
-----END PGP SIGNATURE-----

3
subversion-1.8.8.tar.bz2 Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:1569931cd85ae27052895554bc14125e0795d7a17d3e4a7c2aceb7289be71db3
size 6821200

View File

@ -0,0 +1,110 @@
-----BEGIN PGP SIGNATURE-----
Version: GnuPG/MacGPG2 v2.0.22 (Darwin)
Comment: GPGTools - http://gpgtools.org
iQIcBAABCgAGBQJS/VfiAAoJEGLUj60WoN4BNtcQAKK7SnArQnpUgDVQ6scA7zc0
bV23nxDqEEKMAblB+P/Jms/kKDjC//33PGUOxx0o6hmP+8Dze+zbbk11DRgvKPHQ
+Jr209k2bRC7Wbp/NUrTfLwQV1HNjx17/vya/vbspXRcAXTc4zpCWkSy+/TPbiyh
m21C3+E4W1YsKhnrSrcWozTQn+XAWccYNiDmc6mzu0XTyxYVWsCg+qxnNAq+mS1l
wsC1Kvkm1DGbSHCCgocPop+Woq8GT2p7JV1T5/jE4iLlXCo17cGOG3gSUCqbzKU3
TCBz8soSrP7w9RbDqxDlaSifjZuBo31OYx3r68CtF63tRvUkjojZTHcVRjk6EqxQ
ysCUUnfYqsouJwJiOO3ez0LsTIexVJASgsEvv4S5KzXEo/McmKSp/JubvaH6qmTp
n0dA5PyuwoAt5ufUYZ5DFjAmVZXjtMHE7hPWAoX7hepfFVE7EodMslo1ffWwlOr6
xN9BJc7mIJbcdf0cEca7Vak49HPFYndNXOwgdW+VQe0oRPEAsaZulZMMfhAi95SX
NqgHxF2afJkvGUUtLtnHyuyoyG1CSQ8taMZ9M+zUzw0uu/vE2KTwj2N8FnWLqthr
prHU5wpf0TXS+kA1WhTYADTJG/P/ZZAQJpGfbAA8sjj+ZmeYjY1h5ubtyGhrQ7Bz
nXc9B1r3AYAG9lPgUDaA
=yIev
-----END PGP SIGNATURE-----
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.12 (GNU/Linux)
iQEcBAABCAAGBQJS/gFOAAoJEHbXiOHtGlmc02oH/RRkG310NDQsKF22BdKZeokN
KZ2zX3FbJc3v+4ExqP0kJ2YtZ03n9V09VG4ymqaEjoZzjHnkeVYRcgqd9jCldU46
C4E0iH5DZOOQ2JtGEhDHzThCnuEt/IzlC04U6ErCCAdyqemDjiSe43MPq0cKpVFJ
qczO2CPE4bPyWcNfYmfp97nNq6d9Je6cesqkWvc3oPaI1C3JgHwu4OFAy7NKYRUD
3P+SyDZMeztzyGcVAwNiWlzFxxOyE7B/cA4MCjt2cHN9Vf9L6nAmNh02EddltdeR
SBNLXnfXmNhDTT21mf4dN693dKy8oCPgBEiCN1Ehj9e4YkX58fith97pxdcxsSM=
=AvzE
-----END PGP SIGNATURE-----
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.14 (GNU/Linux)
iQIcBAABAgAGBQJS/m0EAAoJEJnsdBtXkhrMu5UP/3Z01NZeSYDkbwHibr8uH2dh
0ojZSdeOC46nfhWv/9qF3y0fa0Y9QASMCS4Q8G5kgYbQHQ0vQwmhGrhtjLT05uIL
06dvqeDWg8LLfGbqODF8fYuQF+uIZ6z1+v+zl3pqG1BCB5e5X9F2K9C5yojD5ApC
BH9Icd/9ZxJdwfPouCMRv5QzSrCS+2nBMjmw5gP/D1MHNoa4zV5wDaBWvEnAUjIq
tQPwkTzLqtaGlsQmUGxW7VEuOsD5kM8B+5w6KZu3as1cGrwskUXEns+h3kkZzRCB
/7w7IsQm5zn4qmweJwzmv7R+pkdxh6vgxJByByk/zXssRN8LXvh7VYL/JXNJMlub
QcQv8N3Y+Ia39R/nv23VqVQpkvBfCsqBcPAo6TX4ozr1NOwR8deLNNHpg8TSuj3J
5xWJkpSZzQOZUDmatSBdgHjc7fRzGZtX0oULZVAuvE9U8w1vGWv+NtxorKWXnfGN
MoiY2qZBGSrY/oeeqy7TRV3MjV+VT2ELG51RyTE+pdHArf+nTUxZq5JY5i9HMSr5
9Js9SHwyOP8N4Hlf4HMH2CAWkCwvsA/MOxqMTZgzgXnw/yFW/zLsu3SuixDbU8Dy
F9JTaaOCjQdXpR0FrbkFNIhkNibjxsThaCA+eTSRqBk5VZHcajQx919yTHXa7qsx
spLjcOZuVD8BK2TvonzO
=uliA
-----END PGP SIGNATURE-----
-----BEGIN PGP SIGNATURE-----
Version: GnuPG/MacGPG2 v2.0.19 (Darwin)
Comment: GPGTools - http://gpgtools.org
iQEcBAABCgAGBQJTAL2/AAoJECm4ktDIYoUBoUoIAI+uqQ/ZYrtY2MkBbyNq+lzX
rKqwuzMKsn1eS8Za8zkbvmRcL6ZFiI4grLaDpHBVAlsmW+U+PtpGb9iubJ1vglki
JWI+zXvtFiyBjF1AJ7XnjJuHco8ejcQ/D6DTQYz/S0cft+LPy8x3h14VQ2bwe5pK
sS2yxJIKlP6rPqHwQugJiUz1igD3r1n0N5aiglKsPACBEIOgN2O0RXad/EwHW2d1
kCvdO4Nck6MziP5cykzxyXAnCAAs/pjZaGlnXY+oJHR/XcpI3qetCLDDhLLr2y0u
ZYp/cx10Ryy8ZC9R22ziV3ja92SvGcatL8YaZ2Sw/jAHQSiD1T+AhLRP9WVvwuM=
=xfEA
-----END PGP SIGNATURE-----
-----BEGIN PGP SIGNATURE-----
Version: GnuPG/MacGPG2 v2.0.19 (Darwin)
Comment: GPGTools - http://gpgtools.org
iQIcBAABCgAGBQJTAL3vAAoJEBvKZYajR5Q/IfAP/RhXUNe5SLIBBNu16ul7hndW
1dah/rgEj9bJXIlUnKm+pc5zCIjcUTx7MtSn63sW6c7UuC1qGOULnr+9zOwfv4KD
wX5iu6bxrJ7SIlHSfQEfTttpFTJ1GwQM1mQttwsglWC4uwC2d7UPizixWHJ7+vqA
k8rVyn4b8kkxeGp8a1LPwPKGq8sohV5byQmIagr4O+ipybAN+YiLlpqvL/VMBhoj
k4YM/aZdefPxVraShWwsv/kpZOai0cZ2hA2+5LO1mhsmyeGcIochAblqD86OlIQ7
Vvnd8ELN4WwwsTy81PQ49qcz/jml0WerIvEwp1sP98DCC5YrNfKcQ2qMEEziuqKP
owMtOEFS52epf8at40H9gMLTDQeLKuuy+Li2i6DTIgbiT3p1HEA04Ahew5XqVW4g
RsDG+90JwYIKuWwdaGXHhiMw/boLGWWSRwEMVwVWTNt2kRrgbOae25donFJXvZHK
M992+MSjhDuNjFcyRpRaS2nN242MCciMnROi1iK+/bUW7Fu/8Wt53cfsU+AViRzE
gF/b5OVOmOS2C+MwVMyzqFOXEyXv1EuUFEqnzsxgksPec1nPmYA0eCXu7X6m0aFL
5HaUvDqLVV4V2H63GIewBRp244aEuyOuYja38EI5U416l79+vHPKUjzXDGCLlDml
vA178ubt0OgGS68lv5eV
=Xc+2
-----END PGP SIGNATURE-----
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.22 (FreeBSD)
iQIcBAABAgAGBQJTAO3zAAoJEMSmxiXMyOHffc8P/02/izm1B5AWhTO+XrOZJ+32
gN/ehfsI7nmzOE4nMkzSPB7C04F8Ag9UjEzqJQ1DgvxEZfrjUNGpXoDczXkCDdh2
kKdfQCwRMwgOlxHmRwWl+t/Gafein79GFmDVWbs74meC+Qjykpgy4IMi5PvauZcS
LJrnkF16TYm0/2JxVDomkSiKpJSw9QMntKJSihfUUxR9wkdYNHmpmqRWIn5AxMyL
Uau93hby5/+scV9cHMJY4yM0xdHvPrukVHB1FNyuTxHwwVRSCijtpjgegViy4x41
c0lLKfSluQTaBPbqlmSYN/WB4veDsPW5GvckTGYuS91iqXH8SXJprFRijT1nGiw1
h4CKbgilOElmbuwbeTSnHCorCkXG8I+5keW3VfzxdwT6R//w+zwv1dR+47QKHQEc
tXIRssm5k5vQGL6Vy200NXLnRVL6hCpQ6bsdUC8NT3yJuJ+K4On2GDdTl82IOsWr
ekSCcSK2iMaKg4yj0Uh9xsUt1m+Dn5lhiMBLtirzQbn9dJmlx02dl9waJrtoleIk
4dErPMYqeWoUo7bs4eOapSxAzzFvcKok7Fm/5RR7hdTiQHFWIZowZc/jUH3JLlNP
zpy+KxP9F7xchcDS1bGWrVgKW4Lk/GNA9925rpUr5rUqzSHF6r5HXVwocB/G4pMF
jaSnaE4hK4B1BpztNMti
=vWIR
-----END PGP SIGNATURE-----
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.22 (FreeBSD)
iQIcBAABAgAGBQJTAO45AAoJEMSmxiXMyOHfnDcP/2YOom3jiQuTIxPxDqxJEyUE
fWnYQJI7r5gTb0f86re6nA46XD7gaQbHhdrbgm9hSEdebQ1GlZW97AZ0NVzTdv+4
uRrbtiVaI5jwOAE9pxdw4nWlGdPaHlj4B71iG4uaFegwx/biq1ZUa7SQqm2ayGRU
aX/UIEzx2ysrS+rVIpZcFbEfpKA8k4qecDRQpNmZcIR+BvQurALYSnf1vjprUd8i
DjFAEahCztWOarbiQarX5n1/eRtrOSMYy+7NmlpcyRIB76ozpN76FolwRCShObRT
fBxquW3XxZb7FsgqrgVBKu/52U1COu3VsdUhSlLTki3ZsqBJU6UQ04EeHddMLkWz
uOavnLKErA1xg78UerY6HrkZ4keOdHHbC3Lfpu5sHoXCBpI/57RCnGLXDJQht8be
OvD8XlVfUCXBC+Opughz1CZRJb4Swampru50dR33GXXSDMm3PZQzPzgGb//cbhPE
EDfkX+g0a6pnFaftVeS08lRvlPqIpdOzrm1WWOSPKrAYmz4+vmx4TiGEiQevt4/g
RJ/wVslblYupjjT91lneQ8uCwq2Vkpm6slLUlYpm0OpE53b8OTlWCX2Z9NbROdwH
He92xOUqHWbahyPZqtqRQqX4Jn2lolwaL4gryOU9PpmLO8j1O9b+/brjZPgse6kq
psW7iStIzjaJa1sIuDFC
=dsh8
-----END PGP SIGNATURE-----

View File

@ -1,384 +0,0 @@
From: Andreas Stieger <andreas.stieger@gmx.de>
Date: Sun, 01 Dec 2013 22:05:57 +0000
Subject: fix performance issues with SQLite 3.8 and false positive test failures
Upstream: committed
References: https://svn.apache.org/viewvc?view=revision&revision=1542765 https://svn.apache.org/viewvc?view=revision&revision=1542767 https://svn.apache.org/viewvc?view=revision&revision=1542774
Addresses performance issues with SQLite 3.8 and fixes false
positive test failes in wc-queries-tests. Allows dynamic linking
against SQLite 3.8 in openSUSE > 13.1. The patch below is combined
from the three upstream commits, with upstream adjustments in last
hunk of wc-queries-test.c adjusted for differences upstream.
While this does not create a new working copy format version,
working copies that were created with a 1.8 client linked against
SQLite 3.7 need to have "svn upgrade" run once to enjoy the benefits
while otherwise maintaining compatibility. The step is optional and
not required for new working copies.
Upstream, this set is currently proposed for backporting into 1.8.x.
---
subversion/libsvn_wc/upgrade.c | 4
subversion/libsvn_wc/wc-metadata.sql | 48 +++++++
subversion/libsvn_wc/wc_db.c | 11 +
subversion/libsvn_wc/wc_db.h | 10 +
subversion/tests/libsvn_wc/wc-queries-test.c | 175 ++++++++++++++++++++++++++-
5 files changed, 243 insertions(+), 5 deletions(-)
Index: subversion-1.8.5/subversion/libsvn_wc/upgrade.c
===================================================================
--- subversion-1.8.5.orig/subversion/libsvn_wc/upgrade.c 2013-07-03 05:00:58.000000000 +0100
+++ subversion-1.8.5/subversion/libsvn_wc/upgrade.c 2013-12-01 22:03:13.000000000 +0000
@@ -1958,6 +1958,10 @@ svn_wc__upgrade_sdb(int *result_format,
case SVN_WC__VERSION:
/* already upgraded */
*result_format = SVN_WC__VERSION;
+
+ SVN_SQLITE__WITH_LOCK(
+ svn_wc__db_install_schema_statistics(sdb, scratch_pool),
+ sdb);
}
#ifdef SVN_DEBUG
Index: subversion-1.8.5/subversion/libsvn_wc/wc-metadata.sql
===================================================================
--- subversion-1.8.5.orig/subversion/libsvn_wc/wc-metadata.sql 2013-04-30 05:01:16.000000000 +0100
+++ subversion-1.8.5/subversion/libsvn_wc/wc-metadata.sql 2013-12-01 22:03:13.000000000 +0000
@@ -573,6 +573,54 @@ CREATE UNIQUE INDEX I_EXTERNALS_DEFINED
local_relpath);
/* ------------------------------------------------------------------------- */
+/* This statement provides SQLite with the necessary information about our
+ indexes to make better decisions in the query planner.
+
+ For every interesting index this contains a number of rows where the
+ statistics ar calculated for and then for every column in the index the
+ average number of rows with the same value in all columns left of this
+ column including the column itself.
+
+ See http://www.sqlite.org/fileformat2.html#stat1tab for more details.
+
+ The important thing here is that this tells Sqlite that the wc_id column
+ of the NODES and ACTUAL_NODE table is usually a single value, so queries
+ should use more than one column for index usage.
+
+ The current hints describe NODES+ACTUAL_NODE as a working copy with
+ 8000 nodes in 1 a single working copy(=wc_id), 10 nodes per directory
+ and an average of 2 op-depth layers per node.
+
+ The number of integers must be number of index columns + 1, which is
+ verified via the test_schema_statistics() test.
+ */
+-- STMT_INSTALL_SCHEMA_STATISTICS
+ANALYZE sqlite_master; /* Creates empty sqlite_stat1 if necessary */
+
+INSERT OR REPLACE INTO sqlite_stat1(tbl, idx, stat) VALUES
+ ('NODES', 'sqlite_autoindex_NODES_1', '8000 8000 2 1');
+INSERT OR REPLACE INTO sqlite_stat1(tbl, idx, stat) VALUES
+ ('NODES', 'I_NODES_PARENT', '8000 8000 10 2 1');
+/* Tell a lie: We ignore that 99.9% of all moved_to values are NULL */
+INSERT OR REPLACE INTO sqlite_stat1(tbl, idx, stat) VALUES
+ ('NODES', 'I_NODES_MOVED', '8000 8000 1 1');
+
+INSERT OR REPLACE INTO sqlite_stat1(tbl, idx, stat) VALUES
+ ('ACTUAL_NODE', 'sqlite_autoindex_ACTUAL_NODE_1', '8000 8000 1');
+INSERT OR REPLACE INTO sqlite_stat1(tbl, idx, stat) VALUES
+ ('ACTUAL_NODE', 'I_ACTUAL_PARENT', '8000 8000 10 1');
+
+INSERT OR REPLACE INTO sqlite_stat1(tbl, idx, stat) VALUES
+ ('LOCK', 'sqlite_autoindex_LOCK_1', '100 100 1');
+
+INSERT OR REPLACE INTO sqlite_stat1(tbl, idx, stat) VALUES
+ ('WC_LOCK', 'sqlite_autoindex_WC_LOCK_1', '100 100 1');
+
+/* sqlite_autoindex_WORK_QUEUE_1 doesn't exist because WORK_QUEUE is
+ a INTEGER PRIMARY KEY AUTOINCREMENT table */
+
+ANALYZE sqlite_master; /* Loads sqlite_stat1 data for query optimizer */
+/* ------------------------------------------------------------------------- */
/* Format 20 introduces NODES and removes BASE_NODE and WORKING_NODE */
Index: subversion-1.8.5/subversion/libsvn_wc/wc_db.c
===================================================================
--- subversion-1.8.5.orig/subversion/libsvn_wc/wc_db.c 2013-10-22 18:01:42.000000000 +0100
+++ subversion-1.8.5/subversion/libsvn_wc/wc_db.c 2013-12-01 22:03:13.000000000 +0000
@@ -1390,6 +1390,15 @@ does_node_exist(svn_boolean_t *exists,
return svn_error_trace(svn_sqlite__reset(stmt));
}
+svn_error_t *
+svn_wc__db_install_schema_statistics(svn_sqlite__db_t *sdb,
+ apr_pool_t *scratch_pool)
+{
+ SVN_ERR(svn_sqlite__exec_statements(sdb, STMT_INSTALL_SCHEMA_STATISTICS));
+
+ return SVN_NO_ERROR;
+}
+
/* Helper for create_db(). Initializes our wc.db schema.
*/
static svn_error_t *
@@ -1417,6 +1426,8 @@ init_db(/* output values */
SVN_ERR(create_repos_id(repos_id, repos_root_url, repos_uuid,
db, scratch_pool));
+ SVN_ERR(svn_wc__db_install_schema_statistics(db, scratch_pool));
+
/* Insert the wcroot. */
/* ### Right now, this just assumes wc metadata is being stored locally. */
SVN_ERR(svn_sqlite__get_statement(&stmt, db, STMT_INSERT_WCROOT));
Index: subversion-1.8.5/subversion/libsvn_wc/wc_db.h
===================================================================
--- subversion-1.8.5.orig/subversion/libsvn_wc/wc_db.h 2013-10-22 18:01:42.000000000 +0100
+++ subversion-1.8.5/subversion/libsvn_wc/wc_db.h 2013-12-01 22:03:13.000000000 +0000
@@ -2831,6 +2831,16 @@ svn_wc__db_scan_deletion(const char **ba
@{
*/
+/* Installs or updates Sqlite schema statistics for the current (aka latest)
+ working copy schema.
+
+ This function should be called once on initializing the database and after
+ an schema update completes */
+svn_error_t *
+svn_wc__db_install_schema_statistics(svn_sqlite__db_t *sdb,
+ apr_pool_t *scratch_pool);
+
+
/* Create a new wc.db file for LOCAL_DIR_ABSPATH, which is going to be a
working copy for the repository REPOS_ROOT_URL with uuid REPOS_UUID.
Return the raw sqlite handle, repository id and working copy id
Index: subversion-1.8.5/subversion/tests/libsvn_wc/wc-queries-test.c
===================================================================
--- subversion-1.8.5.orig/subversion/tests/libsvn_wc/wc-queries-test.c 2013-05-27 05:01:42.000000000 +0100
+++ subversion-1.8.5/subversion/tests/libsvn_wc/wc-queries-test.c 2013-12-01 22:04:41.000000000 +0000
@@ -77,6 +77,7 @@ static const int schema_statements[] =
STMT_CREATE_NODES,
STMT_CREATE_NODES_TRIGGERS,
STMT_CREATE_EXTERNALS,
+ STMT_INSTALL_SCHEMA_STATISTICS,
/* Memory tables */
STMT_CREATE_TARGETS_LIST,
STMT_CREATE_CHANGELIST_LIST,
@@ -95,8 +96,8 @@ static const int slow_statements[] =
/* Operate on the entire WC */
STMT_SELECT_ALL_NODES, /* schema validation code */
- /* Is there a record? ### Can we somehow check for LIMIT 1? */
- STMT_LOOK_FOR_WORK,
+ /* Updates all records for a repository (designed slow) */
+ STMT_UPDATE_LOCK_REPOS_ID,
/* Full temporary table read */
STMT_INSERT_ACTUAL_EMPTIES,
@@ -114,6 +115,19 @@ static const int slow_statements[] =
-1 /* final marker */
};
+/* Statements that just read the first record from a table,
+ using the primary key. Specialized as different sqlite
+ versions produce different results */
+static const int primary_key_statements[] =
+{
+ /* Is there a record? ### Can we somehow check for LIMIT 1,
+ and primary key instead of adding a list? */
+ STMT_LOOK_FOR_WORK,
+ STMT_SELECT_WORK_ITEM,
+
+ -1 /* final marker */
+};
+
/* Helper function to determine if a statement is in a list */
static svn_boolean_t
in_list(const int list[], int stmt_idx)
@@ -529,6 +543,7 @@ is_node_table(const char *table_name)
return (apr_strnatcasecmp(table_name, "nodes") == 0
|| apr_strnatcasecmp(table_name, "actual_node") == 0
|| apr_strnatcasecmp(table_name, "externals") == 0
+ || apr_strnatcasecmp(table_name, "lock") == 0
|| apr_strnatcasecmp(table_name, "wc_lock") == 0
|| FALSE);
}
@@ -651,14 +666,24 @@ test_query_expectations(apr_pool_t *scra
|| (item->expression_vars < 1))
&& !is_result_table(item->table))
{
- warned = TRUE;
- if (!is_slow_statement(i))
- warnings = svn_error_createf(SVN_ERR_TEST_FAILED, warnings,
+ if (in_list(primary_key_statements, i))
+ {
+ /* Reported as primary key index usage in Sqlite 3.7,
+ as table scan in 3.8+, while the execution plan is
+ identical: read first record from table */
+ }
+ else if (!is_slow_statement(i))
+ {
+ warned = TRUE;
+ warnings = svn_error_createf(SVN_ERR_TEST_FAILED, warnings,
"%s: "
"Uses %s with only %d index component: (%s)\n%s",
wc_query_info[i][0], item->table,
item->expression_vars, item->expressions,
wc_queries[i]);
+ }
+ else
+ warned = TRUE;
}
else if (item->search && !item->index)
{
@@ -718,6 +743,144 @@ test_query_expectations(apr_pool_t *scra
return warnings;
}
+/* Helper to verify a bit of data in the sqlite3 statistics */
+static int
+parse_stat_data(const char *stat)
+{
+ int n = 0;
+ apr_int64_t last = APR_INT64_MAX;
+ while (*stat)
+ {
+ apr_int64_t v;
+ char *next;
+
+ if (*stat < '0' || *stat > '9')
+ return -2;
+
+ errno = 0;
+ v = apr_strtoi64(stat, &next, 10);
+
+ /* All numbers specify the average number of rows
+ with the same values in all columns left of it,
+ so the value must be >= 1 and lower than or equal
+ to all previous seen numbers */
+ if (v <= 0 || (v > last) || (errno != 0))
+ return -1;
+
+ last = v;
+
+ n++;
+ stat = next;
+
+ if (*stat == ' ')
+ stat++;
+ }
+
+ return n;
+}
+
+static svn_error_t *
+test_schema_statistics(apr_pool_t *scratch_pool)
+{
+ sqlite3 *sdb;
+ sqlite3_stmt *stmt;
+
+ SVN_ERR(create_memory_db(&sdb, scratch_pool));
+
+ SQLITE_ERR(
+ sqlite3_exec(sdb,
+ "CREATE TABLE shadow_stat1(tbl TEXT, idx TEXT, stat TEXT)",
+ NULL, NULL, NULL));
+
+ SQLITE_ERR(
+ sqlite3_exec(sdb,
+ "INSERT INTO shadow_stat1 (tbl, idx, stat) "
+ "SELECT tbl, idx, stat FROM sqlite_stat1",
+ NULL, NULL, NULL));
+
+ SQLITE_ERR(
+ sqlite3_exec(sdb,
+ "DROP TABLE sqlite_stat1",
+ NULL, NULL, NULL));
+
+ /* Insert statement to give index at least 1 record */
+ SQLITE_ERR(
+ sqlite3_exec(sdb,
+ "INSERT INTO nodes (wc_id, local_relpath, op_depth,"
+ " presence, kind) "
+ "VALUES (1, '', 0, 'normal', 'dir')",
+ NULL, NULL, NULL));
+
+ SQLITE_ERR(
+ sqlite3_exec(sdb,
+ "INSERT INTO actual_node (wc_id, local_relpath) "
+ "VALUES (1, '')",
+ NULL, NULL, NULL));
+
+ SQLITE_ERR(
+ sqlite3_exec(sdb,
+ "INSERT INTO lock (repos_id, repos_relpath, lock_token) "
+ "VALUES (1, '', '')",
+ NULL, NULL, NULL));
+
+ /* These are currently not necessary for query optimization, but it's better
+ to tell Sqlite how we intend to use this table anyway */
+ SQLITE_ERR(
+ sqlite3_exec(sdb,
+ "INSERT INTO wc_lock (wc_id, local_dir_relpath) "
+ "VALUES (1, '')",
+ NULL, NULL, NULL));
+
+ SQLITE_ERR(
+ sqlite3_exec(sdb,
+ "INSERT INTO WORK_QUEUE (work) "
+ "VALUES ('')",
+ NULL, NULL, NULL));
+
+ SQLITE_ERR(
+ sqlite3_exec(sdb,
+ "ANALYZE",
+ NULL, NULL, NULL));
+
+ SQLITE_ERR(
+ sqlite3_prepare(sdb, "SELECT s.tbl, s.idx, s.stat, r.stat "
+ "FROM shadow_stat1 s "
+ "LEFT JOIN sqlite_stat1 r ON "
+ "s.tbl=r.tbl and s.idx=r.idx",
+ -1, &stmt, NULL));
+
+ while (sqlite3_step(stmt) == SQLITE_ROW)
+ {
+ const char *wc_stat = (const char*)sqlite3_column_text(stmt, 2);
+ const char *sqlite_stat = (const char*)sqlite3_column_text(stmt, 3);
+
+ if (! sqlite_stat)
+ {
+ return svn_error_createf(SVN_ERR_TEST_FAILED, NULL,
+ "Schema statistic failure:"
+ " Refering to unknown index '%s' on '%s'",
+ sqlite3_column_text(stmt, 1),
+ sqlite3_column_text(stmt, 0));
+ }
+
+ if (parse_stat_data(wc_stat) != parse_stat_data(sqlite_stat))
+ {
+ return svn_error_createf(SVN_ERR_TEST_FAILED, NULL,
+ "Schema statistic failure:"
+ " Column mismatch for '%s' on '%s'",
+ sqlite3_column_text(stmt, 1),
+ sqlite3_column_text(stmt, 0));
+ }
+ }
+
+ SQLITE_ERR(sqlite3_reset(stmt));
+ SQLITE_ERR(sqlite3_finalize(stmt));
+
+ SQLITE_ERR(sqlite3_close(sdb)); /* Close the DB if ok; otherwise leaked */
+
+ return SVN_NO_ERROR;
+}
+
struct svn_test_descriptor_t test_funcs[] =
{
SVN_TEST_NULL,
@@ -727,5 +890,7 @@ struct svn_test_descriptor_t test_funcs[
"queries are parsable"),
SVN_TEST_PASS2(test_query_expectations,
"test query expectations"),
+ SVN_TEST_PASS2(test_schema_statistics,
+ "test schema statistics"),
SVN_TEST_NULL
};

View File

@ -1,47 +0,0 @@
From: Bert Huijben <rhuijben@collab.net>
Date: Mon, 18 Nov 2013 20:43:23 +0000
Subject: [PATCH] fix regression test failures on ppc/ppc64
Upstream: committed
References: https://svn.apache.org/viewvc?view=revision&revision=1543145
Fixes regression test failures on ppc/ppc64.
[ 1518s] At least one test FAILED, checking /home/abuild/rpmbuild/BUILD/subversion-1.8.5/tests.log
[ 1518s] FAIL: wc_tests.py 7: inaccessible .svn/wc.db
[ 1518s] FAIL: wc_tests.py 8: corrupt .svn/wc.db
[ 1518s] FAIL: wc_tests.py 9: zero-length .svn/wc.db
[ 1518s] FAIL: wc_tests.py 10: missing .svn/wc.db
[ 1518s] FAIL: wc_tests.py 12: missing .svn/wc.db, maybe valid .svn/entries
[ 1518s] Summary of test results:
------------------------------------------------------------------------
r1543145 | rhuijben | 2013-11-18 20:43:23 +0000 (Mon, 18 Nov 2013) | 9 lines
Changed paths:
M /subversion/trunk/subversion/svn/status-cmd.c
Resolve a strange error that somehow occurred only on some specific powerpc
architectures. The real problem is that we didn't properly detect the end of
the variable argument list, so it can fail on all architectures.
Found by: astieger
* subversion/svn/status-cmd.c
(svn_cl__status): Add missing end of warning status values marker.
---
subversion/svn/status-cmd.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
Index: subversion-1.8.4/subversion/svn/status-cmd.c
===================================================================
--- subversion-1.8.4.orig/subversion/svn/status-cmd.c 2013-07-27 05:00:17.000000000 +0100
+++ subversion-1.8.4/subversion/svn/status-cmd.c 2013-11-18 20:57:53.000000000 +0000
@@ -358,7 +358,8 @@ svn_cl__status(apr_getopt_t *os,
NULL, opt_state->quiet,
/* not versioned: */
SVN_ERR_WC_NOT_WORKING_COPY,
- SVN_ERR_WC_PATH_NOT_FOUND));
+ SVN_ERR_WC_PATH_NOT_FOUND,
+ SVN_NO_ERROR));
if (opt_state->xml)
SVN_ERR(print_finish_target_xml(repos_rev, iterpool));

View File

@ -1,59 +0,0 @@
From: Ben Reser <ben@reser.org>
Subject: [PATCH] Disallow methods other than GET/HEAD for the parentpath list.
Date: Sat, 11 Jan 2014 07:19:54 +0000
References: bnc#862459 CVE-2014-0032 http://svn.apache.org/viewvc?view=revision&revision=r1557320
Upstream: committed
------------------------------------------------------------------------
r1557320 | breser | 2014-01-11 07:19:54 +0000 (Sat, 11 Jan 2014) | 13 lines
Changed paths:
M /subversion/trunk/subversion/mod_dav_svn/repos.c
Disallow methods other than GET/HEAD for the parentpath list.
Fixes the segfault for `svn ls http://svn.example.com` when SVN is handling
the server root and SVNListParentPath is on.
CVE-2014-0032
* subversion/mod_dav_svn/repos.c
(get_resource): Return an error when we try to get a parentpath list
resource and the method isn't GET.
Found by: lgo
------------------------------------------------------------------------
---
subversion/mod_dav_svn/repos.c | 19 +++++++++++++++++++
1 file changed, 19 insertions(+)
Index: subversion-1.8.5/subversion/mod_dav_svn/repos.c
===================================================================
--- subversion-1.8.5.orig/subversion/mod_dav_svn/repos.c 2013-11-14 21:02:26.000000000 +0000
+++ subversion-1.8.5/subversion/mod_dav_svn/repos.c 2014-02-09 22:25:05.000000000 +0000
@@ -1971,6 +1971,25 @@ get_resource(request_rec *r,
of private resource, iff the SVNListParentPath directive is 'on'. */
if (dav_svn__is_parentpath_list(r))
{
+ /* Only allow GET and HEAD on the parentpath resource
+ * httpd uses the same method_number for HEAD as GET */
+ if (r->method_number != M_GET)
+ {
+ int status;
+
+ /* Marshall the error back to the client by generating by
+ * way of the dav_svn__error_response_tag trick. */
+ err = dav_svn__new_error(r->pool, HTTP_METHOD_NOT_ALLOWED,
+ SVN_ERR_APMOD_MALFORMED_URI,
+ "The URI does not contain the name "
+ "of a repository.");
+ /* can't use r->allowed since the default handler isn't called */
+ apr_table_setn(r->headers_out, "Allow", "GET,HEAD");
+ status = dav_svn__error_response_tag(r, err);
+
+ return dav_push_error(r->pool, status, err->error_id, NULL, err);
+ }
+
err = get_parentpath_resource(r, resource);
if (err)
return err;

View File

@ -1,3 +1,59 @@
-------------------------------------------------------------------
Wed Feb 19 00:00:00 UTC 2014 - andreas.stieger@gmx.de
- Apache Subversion 1.8.8
- Client-side bugfixes:
* fix automatic relocate for wcs not at repository root
* wc: improve performance when used with SQLite 3.8
* copy: fix some scenarios that broke the working copy
* move: fix errors when moving files between an external and the
parent working copy
* log: resolve performance regression in certain scenarios
* merge: decrease work to detect differences between 3 files
* commit: don't change file permissions inappropriately
* commit: fix assertion due to invalid pool lifetime
* version: don't cut off the distribution version on Linux
* flush stdout before exiting to avoid information being lost
* status: fix missing sentinel value on warning codes
* update/switch: improve some WC db queries that may return
incorrect results depending on how SQLite is built
- Server-side bugfixes:
* reduce memory usage during checkout and export
* fsfs: create rep-cache.db with proper permissions
* mod_dav_svn: prevent crashes with SVNListParentPath on
(previously patched in this package)
* mod_dav_svn: fix SVNAllowBulkUpdates directive merging
* mod_dav_svn: include requested property changes in reports
* svnserve: correct default cache size in help text
* svnadmin dump: reduce size of dump files with '--deltas'
* resolve integer underflow that resulted in infinite loops
- developer visible changes:
* fix ocassional failure of check_tests.py 12
* fix failure with SQLite 3.8.1-3.8.3 when built with
SQLITE_ENABLE_STAT3/4 due to bug in SQLite
* specify SQLite defaults that can be changed when SQLite is
built to avoid unexpected behavior with Subversion
* numerous documentation fixes
* svn_client_commit_item3_dup() fix pool lifetime issues
* ra_serf: properly ask multiple certificate validation providers
for acceptance of certificate failures
* release internal fs objects when closing commit editor
* svn_client_proplist4() don't call the callback multiple times
for the same path in order to deliver inherited properties
- Bindings:
* swig-pl: fix with --enable-sqlite-compatibility-version
* swig: fix building from tarball with an out-of-tree build
- removed patches:
* subversion-1.8.x-SQLite-3.8.patch, committed upstream
* subversion-1.8.x-fix-ppc-tests.patch, committed upstream
* subversion-CVE-2014-0032.patch, now upstream
- packaging changes:
* only require and build with junit when building with java and
running regression tests
* specify memory constraints for reliable builds with regression
tests
- 1.8.6 and 1.8.7 were not released
-------------------------------------------------------------------
Sun Feb 9 22:30:22 UTC 2014 - andreas.stieger@gmx.de

View File

@ -40,7 +40,7 @@
%define svnuser svn
Name: subversion
Version: 1.8.5
Version: 1.8.8
Release: 0
# in-tree SWIG version to use for the build:
%define swig_version 1.3.36
@ -107,7 +107,9 @@ BuildRequires: libqt4-devel
%if 0%{?suse_version} >= 1130
%define with_java 1
BuildRequires: java-devel >= 1.6.0
%if %{with regression_tests}
BuildRequires: junit
%endif
%else
%define with_java 0
%endif
@ -178,9 +180,6 @@ Patch20: subversion-swig-perl-install_vendor.patch
Patch23: subversion.libtool-pie-flags.patch
Patch31: subversion.perl.LD_RUN_PATH.patch
Patch37: subversion-no-build-date.patch
Patch38: subversion-1.8.x-fix-ppc-tests.patch
Patch39: subversion-1.8.x-SQLite-3.8.patch
Patch40: subversion-CVE-2014-0032.patch
#
%if %with_ruby
%define rb_arch %(echo "%{_host_cpu}-%{_os}" | sed -e "s/i686/i586/" -e "s/armv5tel/armv4l/" -e "s/hppa2.0/hppa/")
@ -345,9 +344,6 @@ popd #./sqlite-amalgamation
%patch23 -p1
%patch31 -p1
%patch37 -p1
%patch38 -p1
%patch39 -p1
%patch40 -p1
SQLITE_RECOMMENDED_VER=$(grep -E '^SQLITE_RECOMMENDED_VER=' configure.ac|cut -f2 -d=|cut -f2 -d\")
#"
@ -484,7 +480,9 @@ export PATH="${SWIG_ROOT}/bin:${PATH}"
--with-apache-libexecdir=%{apache_libexecdir} \
$with_jdk \
%if %with_java
%if %{with regression_tests}
--with-junit="%{_usr}/share/java/junit.jar" \
%endif
%endif
--with-jikes=no \
%if %with_intree_swig