]> git.pld-linux.org Git - packages/dokuwiki.git/blame - dokuwiki.spec
- outdated
[packages/dokuwiki.git] / dokuwiki.spec
CommitLineData
566f6bd4 1%define subver 2012-06-24
b54d08c7 2%define ver %(echo %{subver} | tr -d -)
566f6bd4 3%define snap 1
982e1b45 4%define php_min_version 5.2.4
067355f7 5%include /usr/lib/rpm/macros.php
d73655e0 6Summary: PHP-based Wiki webapplication
b9cde090 7Summary(pl.UTF-8): Aplikacja WWW Wiki oparta na PHP
d73655e0 8Name: dokuwiki
988b16db 9Version: %{ver}
566f6bd4 10Release: 1.5
d73655e0
SP
11License: GPL v2
12Group: Applications/WWW
566f6bd4
ER
13#Source0: http://www.splitbrain.org/_media/projects/dokuwiki/%{name}-%{subver}.tgz
14Source0: http://github.com/splitbrain/dokuwiki/tarball/master/%{name}.tgz
15# Source0-md5: 32e73e37068f66392be004374d885af9
99646b81
ER
16Source1: %{name}-apache.conf
17Source2: %{name}-lighttpd.conf
89510765 18Source3: http://glen.alkohol.ee/pld/jude.png
db16581c
ER
19# Source3-md5: 623344128960e18f86097dfee213ad4a
20Source4: eventum.gif
db16581c
ER
21Source5: http://forum.skype.com/style_emoticons/skype/skype.png
22# Source5-md5: 25c355be038267dc9fdb724b628000b9
dff16d0a
ER
23Source6: pld_button.png
24# Source6-md5: 185afa921e81bd726b9f0f9f0909dc6e
00c44498
ER
25Source7: cacti.gif
26Source8: nagios.gif
a154f52b
ER
27Source9: http://trac.edgewall.org/export/9404/trunk/doc/trac_icon_16x16.png
28# Source9-md5: 0c19ed35bf677f33f6bea14b3a8a2e10
c4df8b0c 29Source10: pld.gif
89510765
ER
30Source11: http://glen.alkohol.ee/pld/astah.png
31# Source11-md5: b1c999e6988440c9e2af6a12e9a56451
107aba6f 32Patch66: %{name}-config.patch
641b29cc 33Patch0: %{name}-paths.patch
0a785872 34Patch3: %{name}-config-allow-require.patch
48993817 35Patch4: %{name}-geshi.patch
9e409dbc 36Patch5: %{name}-http_auth-option.patch
ff1d703f 37Patch6: %{name}-nice_exit.patch
e79c8784 38Patch8: %{name}-notify-respect-minor.patch
aea2faa7 39Patch10: %{name}-mailtext.patch
1bf63c70 40Patch11: %{name}-notifyns.patch
e21b2065 41Patch12: %{name}-mailthreads.patch
369ed483 42Patch13: %{name}-media-directlink.patch
e5ce8ca9 43Patch14: interwiki-outputonly.patch
ae5a5f57 44Patch15: simplepie.patch
bba17ba4 45Patch18: install.patch
dff16d0a 46Patch19: pld-branding.patch
a3e2b241 47Patch20: fixprivilegeescalationbug.diff
638afb06 48Patch21: task-1821.patch
259e9b01 49Patch22: adldap.patch
3f3ad11a 50Patch23: backlink-rightside.patch
d056ce86 51Patch24: more-buttons.patch
3aa37b5a 52URL: http://www.dokuwiki.org/dokuwiki
89510765 53BuildRequires: fslint
067355f7 54BuildRequires: rpm-php-pearprov >= 4.4.2-11
db16581c 55BuildRequires: rpmbuild(macros) >= 1.520
1807986d
ER
56Requires: php-common >= 4:%{php_min_version}
57Requires: php-geshi >= 1.0.7.19
41c49b4c 58Requires: php-session
c4df8b0c 59Requires: php-simplepie >= 1.0.1
bd481dc8 60Requires: php-xml
d73655e0 61Requires: webapps
105a71ba 62Requires: webserver(access)
24a3d556 63Requires: webserver(alias)
bd481dc8 64Requires: webserver(php)
259e9b01 65Suggests: php-adldap >= 3.3.1
bd481dc8 66Suggests: php-gd
58ad8de5 67Obsoletes: dokuwiki-plugin-jquery
083e173b 68# can use gz compression to store attic pages
bd481dc8 69Suggests: php-zlib
d73655e0
SP
70BuildArch: noarch
71BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
72
73%define _webapps /etc/webapps
74%define _webapp %{name}
75%define _sysconfdir %{_webapps}/%{_webapp}
76%define _appdir %{_datadir}/%{_webapp}
881190a4 77%define _localstatedir /var/lib/%{name}
566f6bd4 78%define _cachedir /var/cache/%{name}
db16581c 79%define find_lang %{_usrlibrpm}/dokuwiki-find-lang.sh %{buildroot}
d73655e0 80
067355f7 81# bad depsolver
0a09ce01 82%define _noautopear 'pear(/usr/share/php/geshi.php)' 'pear(/usr/share/php/adLDAP.php)'
1807986d
ER
83
84# exclude optional php dependencies
616a9f7a 85%define _noautophp php-bzip2 php-bcmath php-zip php-date php-ftp php-hash php-ldap php-mbstring php-mysql php-pgsql php-tokenizer
1807986d
ER
86
87%define _noautoreq %{_noautophp} %{_noautopear}
067355f7 88
d73655e0
SP
89%description
90DokuWiki is a standards compliant, simple to use Wiki, mainly aimed at
91creating documentation of any kind. It is targeted at developer teams,
92workgroups and small companies. It has a simple but powerful syntax
93which makes sure the datafiles remain readable outside the Wiki and
94eases the creation of structured texts. All data is stored in plain
b9cde090
JB
95text files - no database is required.
96
97%description -l pl.UTF-8
98DokuWiki to zgodne ze standardami i proste w użyciu Wiki, przeznaczone
99głównie do tworzenia dokumentów wszelkiego rodzaju. Jest przeznaczone
100dla zespołów programistów, grup roboczych i małych firm. Ma prostą,
101ale mającą duże możliwości składnię, dzięki której pliki danych
102pozostają czytelne poza Wiki, a także ułatwiającą tworzenie tekstów
103strukturalnych. Wszystkie dane są przechowywane w plikach tekstowych -
104nie jest wymagana baza danych.
d73655e0 105
641b29cc 106%package setup
4c94baaa
JB
107Summary: DokuWiki setup package
108Summary(pl.UTF-8): Pakiet do wstępnej konfiguracji DokuWiki
641b29cc
ER
109Group: Applications/WWW
110Requires: %{name} = %{version}-%{release}
111
112%description setup
4c94baaa 113Install this package to configure initial DokuWiki installation. You
641b29cc
ER
114should uninstall this package when you're done, as it considered
115insecure to keep the setup files in place.
116
117%description setup -l pl.UTF-8
4c94baaa 118Ten pakiet należy zainstalować w celu wstępnej konfiguracji DokuWiki
641b29cc
ER
119po pierwszej instalacji. Potem należy go odinstalować, jako że
120pozostawienie plików instalacyjnych mogłoby być niebezpieczne.
121
d73655e0 122%prep
566f6bd4
ER
123%setup -q -n %{name}-%{subver} %{?snap:-c}
124%if 0%{?snap:1}
125mv *-dokuwiki-*/* .
126test -e VERSION || echo %{subver}-git > VERSION
127install -d data/pages/playground
128touch data/pages/playground/playground.txt
129%endif
641b29cc 130%patch0 -p1
0a785872 131%patch3 -p1
48993817 132%patch4 -p1
9e409dbc 133%patch5 -p1
ff1d703f 134%patch6 -p1
e79c8784 135%patch8 -p1
aea2faa7 136%patch10 -p1
1bf63c70 137%patch11 -p1
566f6bd4 138#%patch12 -p1 UPDATE to new mailer class
369ed483 139%patch13 -p1
e5ce8ca9 140%patch14 -p1
ae5a5f57 141%patch15 -p1
bba17ba4 142%patch18 -p1
a3e2b241
ER
143%patch19 -p1
144%patch20 -p1
566f6bd4 145#%patch21 -p1 UPDATE to new mailer class
259e9b01 146%patch22 -p1
3f3ad11a 147%patch23 -p1
d056ce86 148%patch24 -p1
d73655e0 149
107aba6f
ER
150%patch66 -p1
151
566f6bd4
ER
152# package as basenames, upgrade overwrite protected with .rpmnew
153mv conf/local.php{.dist,}
154mv conf/acl.auth.php{.dist,}
155mv conf/users.auth.php{.dist,}
156mv conf/mysql.conf.php{.example,}
157
7df7f76f 158find -name _dummy | xargs rm
84c485ca 159%{__rm} lib/index.html lib/plugins/index.html inc/lang/.htaccess
7df7f76f 160
566f6bd4 161# we just don't package deleted files, these get removed automatically on rpm upgrades
4b73b5a6 162%{__rm} data/deleted.files
58ad8de5
ER
163# source for security.png
164%{__rm} data/security.xcf
4b73b5a6 165
b3528e0c 166# use system geshi package
4b73b5a6
ER
167%{__rm} inc/geshi.php
168%{__rm} -r inc/geshi
b3528e0c 169
259e9b01 170# use system adldap package
4b73b5a6 171%{__rm} inc/adLDAP.php
259e9b01 172
ae5a5f57 173# use system simplepie package
4b73b5a6 174%{__rm} inc/SimplePie.php
7df7f76f 175
4b73b5a6 176# flash source on git tarballs
107aba6f 177rm -rf lib/_fla
566f6bd4 178rm -rf lib/plugins/testing
107aba6f 179
08b33253 180# cleanup backups after patching
566f6bd4 181find '(' -name '*~' -o -name '*.orig' ')' -print0 | xargs -0 -r -l512 rm -f
08b33253 182
107aba6f
ER
183%build
184md5=$(md5sum -b conf/dokuwiki.php | awk '{print $1}')
185if ! grep $md5 install.php; then
af5aefcd 186 : update %{name}-config.patch -- it is outdated
107aba6f
ER
187 exit 1
188fi
189
d73655e0
SP
190%install
191rm -rf $RPM_BUILD_ROOT
566f6bd4 192install -d $RPM_BUILD_ROOT{%{_sysconfdir}/{lang,plugin_lang},%{_localstatedir},%{_cachedir},%{_appdir}/{bin,inc,lib}}
d73655e0 193
84c485ca
ER
194# hardlink test
195cp -al VERSION $RPM_BUILD_ROOT%{_appdir} 2>/dev/null && l=l
196
197cp -a$l *.php $RPM_BUILD_ROOT%{_appdir}
198cp -p$l VERSION $RPM_BUILD_ROOT%{_appdir}
199cp -a$l bin/* $RPM_BUILD_ROOT%{_appdir}/bin
200cp -a$l inc/* $RPM_BUILD_ROOT%{_appdir}/inc
201cp -a$l lib/* $RPM_BUILD_ROOT%{_appdir}/lib
202cp -a$l conf/* $RPM_BUILD_ROOT%{_sysconfdir}
203cp -a$l data/* $RPM_BUILD_ROOT%{_localstatedir}
204cp -p %{SOURCE1} $RPM_BUILD_ROOT%{_sysconfdir}/apache.conf
205cp -p %{SOURCE1} $RPM_BUILD_ROOT%{_sysconfdir}/httpd.conf
206cp -p %{SOURCE2} $RPM_BUILD_ROOT%{_sysconfdir}/lighttpd.conf
a4053ed1
ER
207touch $RPM_BUILD_ROOT%{_sysconfdir}/acronyms.local.conf
208touch $RPM_BUILD_ROOT%{_sysconfdir}/entities.local.conf
209touch $RPM_BUILD_ROOT%{_sysconfdir}/interwiki.local.conf
7df7f76f 210touch $RPM_BUILD_ROOT%{_sysconfdir}/license.local.php
58ad8de5 211touch $RPM_BUILD_ROOT%{_sysconfdir}/plugins.local.php
7df7f76f 212touch $RPM_BUILD_ROOT%{_sysconfdir}/local.protected.php
a4053ed1
ER
213touch $RPM_BUILD_ROOT%{_sysconfdir}/mime.local.conf
214touch $RPM_BUILD_ROOT%{_sysconfdir}/smileys.local.conf
d6d39525 215touch $RPM_BUILD_ROOT%{_sysconfdir}/userstyle.css
d73655e0 216
2d01b400 217ln $RPM_BUILD_ROOT%{_appdir}/lib/images/interwiki/{dokubug,bug}.gif
84c485ca
ER
218cp -p %{SOURCE4} $RPM_BUILD_ROOT%{_appdir}/lib/images/interwiki/eventum.gif
219cp -p %{SOURCE7} $RPM_BUILD_ROOT%{_appdir}/lib/images/interwiki/cacti.gif
220cp -p %{SOURCE8} $RPM_BUILD_ROOT%{_appdir}/lib/images/interwiki/nagios.gif
221cp -p %{SOURCE5} $RPM_BUILD_ROOT%{_appdir}/lib/images/interwiki/skype.png
222cp -p %{SOURCE9} $RPM_BUILD_ROOT%{_appdir}/lib/images/interwiki/trac.png
223cp -p %{SOURCE10} $RPM_BUILD_ROOT%{_appdir}/lib/images/interwiki/pld.gif
89510765 224
84c485ca
ER
225cp -p %{SOURCE3} $RPM_BUILD_ROOT%{_appdir}/lib/images/fileicons/jude.png
226cp -p %{SOURCE11} $RPM_BUILD_ROOT%{_appdir}/lib/images/fileicons/asta.png
89510765 227
84c485ca 228cp -p %{SOURCE6} $RPM_BUILD_ROOT%{_appdir}/lib/tpl/default/images/button-pld.png
2d01b400 229
89510765
ER
230# hardlink identical icons.
231findup -m $RPM_BUILD_ROOT
232
fe631b5b 233# find locales
db16581c 234%find_lang %{name}.lang
fe631b5b 235
d73655e0
SP
236%clean
237rm -rf $RPM_BUILD_ROOT
238
641b29cc
ER
239%post setup
240chmod 770 %{_sysconfdir}
58ad8de5
ER
241chmod 660 %{_sysconfdir}/local.php
242chmod 660 %{_sysconfdir}/plugins.local.php
641b29cc
ER
243
244%postun setup
245if [ "$1" = "0" ]; then
1bf63c70
ER
246 if [ -f %{_sysconfdir}/dokuwiki.php ]; then
247 chmod 750 %{_sysconfdir}
58ad8de5
ER
248 chmod 640 %{_sysconfdir}/local.php
249 chmod 640 %{_sysconfdir}/plugins.local.php
1bf63c70 250 fi
641b29cc
ER
251fi
252
d73655e0
SP
253%triggerin -- apache1 < 1.3.37-3, apache1-base
254%webapp_register apache %{_webapp}
255
256%triggerun -- apache1 < 1.3.37-3, apache1-base
257%webapp_unregister apache %{_webapp}
258
259%triggerin -- apache < 2.2.0, apache-base
260%webapp_register httpd %{_webapp}
261
262%triggerun -- apache < 2.2.0, apache-base
263%webapp_unregister httpd %{_webapp}
264
99646b81
ER
265%triggerin -- lighttpd
266%webapp_register lighttpd %{_webapp}
267
268%triggerun -- lighttpd
269%webapp_unregister lighttpd %{_webapp}
270
881190a4
ER
271%pretrans
272if [ -d %{_appdir}/data -a ! -L %{_appdir}/data ]; then
273 mv -f %{_appdir}/data/* %{_localstatedir}
274 rm -rf %{_appdir}/data
275fi
276if [ -d %{_appdir}/conf -a ! -L %{_appdir}/conf ]; then
277 mv -f %{_appdir}/conf/* %{_sysconfdir}
278 rm -rf %{_appdir}/conf
279fi
566f6bd4
ER
280if [ -d %{_localstatedir}/cache ]; then
281 rm -rf %{_localstatedir}/cache
282fi
881190a4
ER
283exit 0
284
fe631b5b 285%files -f %{name}.lang
d73655e0 286%defattr(644,root,root,755)
08b33253 287%doc README
58ad8de5 288%dir %attr(750,root,http) %verify(not mode) %{_sysconfdir}
d6b12d40
ER
289%dir %attr(750,root,http) %{_sysconfdir}/lang
290%dir %attr(750,root,http) %{_sysconfdir}/plugin_lang
d73655e0
SP
291%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/apache.conf
292%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/httpd.conf
99646b81
ER
293%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/lighttpd.conf
294
881190a4 295%attr(640,root,http) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/mediameta.php
566f6bd4 296%attr(640,root,http) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/plugins.php
7df7f76f 297%attr(660,root,http) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/scheme.conf
a4053ed1 298
566f6bd4 299%attr(640,root,http) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/acl.auth.php
a4053ed1
ER
300%attr(640,root,http) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/acronyms.local.conf
301%attr(640,root,http) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/entities.local.conf
302%attr(640,root,http) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/interwiki.local.conf
7df7f76f
ER
303%attr(640,root,http) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/license.local.php
304%attr(640,root,http) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/local.protected.php
a4053ed1
ER
305%attr(640,root,http) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/mime.local.conf
306%attr(640,root,http) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/smileys.local.conf
d6d39525 307%attr(640,root,http) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/userstyle.css
566f6bd4
ER
308%attr(640,root,http) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/users.auth.php
309%attr(640,root,http) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/mysql.conf.php
310
311%attr(640,root,http) %config(noreplace) %verify(not md5 mtime size mode) %{_sysconfdir}/local.php
312%attr(640,root,http) %config(noreplace) %verify(not md5 mtime size mode) %{_sysconfdir}/plugins.local.php
2d01b400 313
26e4ef5b 314# use local.php, local.protected.php, etc for local changes
a4053ed1
ER
315%attr(640,root,http) %config %verify(not md5 mtime size) %{_sysconfdir}/acronyms.conf
316%attr(640,root,http) %config %verify(not md5 mtime size) %{_sysconfdir}/entities.conf
fc7417e4 317%attr(640,root,http) %config %verify(not md5 mtime size) %{_sysconfdir}/interwiki.conf
a4053ed1
ER
318%attr(640,root,http) %config %verify(not md5 mtime size) %{_sysconfdir}/mime.conf
319%attr(640,root,http) %config %verify(not md5 mtime size) %{_sysconfdir}/smileys.conf
566f6bd4 320%attr(640,root,http) %config %verify(not md5 mtime size) %{_sysconfdir}/wordblock.conf
b9fff555 321
26e4ef5b
ER
322%attr(640,root,http) %config %verify(not md5 mtime size) %{_sysconfdir}/dokuwiki.php
323%attr(640,root,http) %config %verify(not md5 mtime size) %{_sysconfdir}/license.php
324%attr(640,root,http) %config %verify(not md5 mtime size) %{_sysconfdir}/plugins.required.php
325
641b29cc 326%dir %{_appdir}
afdae6ca 327%{_appdir}/VERSION
fe631b5b
ER
328%{_appdir}/doku.php
329%{_appdir}/feed.php
330%{_appdir}/index.php
641b29cc
ER
331%dir %{_appdir}/bin
332%attr(755,root,root) %{_appdir}/bin/dwpage.php
333%attr(755,root,root) %{_appdir}/bin/indexer.php
c4df8b0c 334%attr(755,root,root) %{_appdir}/bin/render.php
641b29cc 335%attr(755,root,root) %{_appdir}/bin/wantedpages.php
4b73b5a6 336%attr(755,root,root) %{_appdir}/bin/striplangs.php
fe631b5b
ER
337
338%dir %{_appdir}/inc
339%{_appdir}/inc/*.php
340%{_appdir}/inc/auth
341%{_appdir}/inc/parser
342
343%dir %{_appdir}/lib
344%dir %{_appdir}/lib/plugins
345%dir %{_appdir}/lib/plugins/acl
346%{_appdir}/lib/plugins/acl/*.*
08b33253 347%{_appdir}/lib/plugins/acl/pix
fe631b5b
ER
348%dir %{_appdir}/lib/plugins/config
349%{_appdir}/lib/plugins/config/*.*
107aba6f 350%{_appdir}/lib/plugins/config/images
fe631b5b
ER
351%{_appdir}/lib/plugins/config/settings
352%dir %{_appdir}/lib/plugins/plugin
353%{_appdir}/lib/plugins/plugin/*.*
107aba6f 354%{_appdir}/lib/plugins/plugin/classes
fe631b5b
ER
355%dir %{_appdir}/lib/plugins/revert
356%{_appdir}/lib/plugins/revert/*.*
4b73b5a6
ER
357%dir %{_appdir}/lib/plugins/safefnrecode
358%{_appdir}/lib/plugins/safefnrecode/*.*
fe631b5b
ER
359%dir %{_appdir}/lib/plugins/usermanager
360%{_appdir}/lib/plugins/usermanager/*.*
361%{_appdir}/lib/plugins/usermanager/images
4b73b5a6
ER
362%dir %{_appdir}/lib/plugins/info
363%{_appdir}/lib/plugins/info/*.*
08b33253
ER
364%dir %{_appdir}/lib/plugins/popularity
365%{_appdir}/lib/plugins/popularity/*.*
fe631b5b
ER
366%{_appdir}/lib/plugins/*.php
367%{_appdir}/lib/images
368%{_appdir}/lib/scripts
369%{_appdir}/lib/styles
370%{_appdir}/lib/tpl
371%{_appdir}/lib/exe
881190a4
ER
372
373%dir %attr(770,root,http) %{_localstatedir}
374%dir %attr(770,root,http) %{_localstatedir}/attic
881190a4
ER
375%dir %attr(770,root,http) %{_localstatedir}/index
376%dir %attr(770,root,http) %{_localstatedir}/locks
377%dir %attr(770,root,http) %{_localstatedir}/media
26e4ef5b
ER
378%dir %attr(770,root,http) %{_localstatedir}/media_attic
379%dir %attr(770,root,http) %{_localstatedir}/media_meta
881190a4
ER
380%dir %attr(770,root,http) %{_localstatedir}/media/wiki
381%dir %attr(770,root,http) %{_localstatedir}/meta
382%dir %attr(770,root,http) %{_localstatedir}/pages
af5aefcd 383%dir %attr(770,root,http) %{_localstatedir}/pages/playground
881190a4 384%dir %attr(770,root,http) %{_localstatedir}/pages/wiki
08b33253 385%dir %attr(770,root,http) %{_localstatedir}/tmp
26e4ef5b 386
b9fff555 387%attr(660,root,http) %config(noreplace,missingok) %verify(not md5 mtime size) %{_localstatedir}/media/wiki/dokuwiki-128.png
b9fff555
ER
388%attr(660,root,http) %config(noreplace,missingok) %verify(not md5 mtime size) %{_localstatedir}/pages/wiki/dokuwiki.txt
389%attr(660,root,http) %config(noreplace,missingok) %verify(not md5 mtime size) %{_localstatedir}/pages/wiki/syntax.txt
8e4e22ac 390%attr(660,root,http) %config(noreplace,missingok) %verify(not md5 mtime size) %{_localstatedir}/pages/playground/playground.txt
c4df8b0c 391%attr(660,root,http) %config(noreplace,missingok) %verify(not md5 mtime size) %{_localstatedir}/security.png
641b29cc 392
566f6bd4
ER
393%dir %attr(770,root,http) %{_cachedir}
394
641b29cc
ER
395%files setup
396%defattr(644,root,root,755)
397%{_appdir}/install.php
This page took 0.089981 seconds and 4 git commands to generate.