@@ -, +, @@ RunRemainingDevUpdates, so only official db revs. This is the default. the local pref listing all recently applied dev updates. ONLY use this if you know what you are doing! files in atomicupdate like (insert the correct version!!): ExecDBRev( $aupd, '13068', 'My test', '13068.pl', '3.17.00.028'); Do not forget to update kohaversion.pl accordingly. Add some other files in atomicupdate as dev updates. Reset the database version. You could edit Version in local preferences. Optionally clear/delete the _LocalAtomicUpdates pref. Run updatestructure and check which db revs and dev updates are run or skipped. Run it again and check which dev updates are run or skipped. --- debian/templates/koha-conf-site.xml.in | 3 +++ etc/koha-conf.xml | 2 ++ installer/data/mysql/updatedatabase.pl | 17 ++++++++++++++--- 3 files changed, 19 insertions(+), 3 deletions(-) --- a/debian/templates/koha-conf-site.xml.in +++ a/debian/templates/koha-conf-site.xml.in @@ -283,6 +283,9 @@ __END_SRU_PUBLICSERVER__ /var/lock/koha/__KOHASITE__ 1 /etc/koha/searchengine/queryparser.yaml + PROD + + --- a/etc/koha-conf.xml +++ a/etc/koha-conf.xml @@ -119,6 +119,8 @@ __PAZPAR2_TOGGLE_XML_POST__ __ZEBRA_LOCK_DIR__ 1 __KOHA_CONF_DIR__/searchengine/queryparser.yaml + PROD + --- a/installer/data/mysql/updatedatabase.pl +++ a/installer/data/mysql/updatedatabase.pl @@ -50,12 +50,18 @@ use constant ATOMICUPD_PREF => '_LocalAtomicUpdates'; my $debug = 0; my $aupd = { #hash for atomic updates location => C4::Context->config('intranetdir')."/installer/data/mysql/atomicupdate", + mode => C4::Context->config('devupdatecontrol') || 'PROD', remember => C4::Context->preference(ATOMICUPD_PREF)//'', skipfiles => { 'Bug-4246-Talking-Tech-itiva-phone-notifications.pl' => 1, 'oai_sets.sql' => 1, }, }; +# Short explanation of the various dev update control modes: +# PROD: Only install official database revisions (default and fallback) +# RESET: After an official database rev, reinstall all development updates +# ALWAYS: When upgrading, reinstall all development updates +# TRACK: Do not reinstall applied development updates my ( $sth, $sti, @@ -9565,7 +9571,8 @@ sub RunRemainingAtomicUpdates { if( exists $atomicupd->{skipfiles}->{$upd} ) { next; # Skip official db revision } - if( $atomicupd->{remember} =~ /(^|;)$upd;/ ) { + if( $atomicupd->{mode} ne 'ALWAYS' && + $atomicupd->{remember} =~ /(^|;)$upd;/ ) { #Skip files that have recently been applied #Note that an official db rev erases this list print "Skipping $upd as recently applied dev update\n"; @@ -9623,7 +9630,7 @@ sub ExecDBRev { print "Dev upgrade $file done\n"; _atomic_memory( $atomicupd, $file ) if $rv; } else { - _atomic_memory( $atomicupd ); #Official db rev clears the atomic pref + _atomic_memory( $atomicupd ); #Official dbrev may clear atomic pref SetVersion($version); print "Upgrade to $version done (Bug $bugno - $descr)\n"; } @@ -9631,6 +9638,10 @@ sub ExecDBRev { sub _atomic_memory { my ( $atomicupd, $upd ) = @_; + + return if $atomicupd->{mode} eq 'ALWAYS'; # ignores the pref + return if !$upd && $atomicupd->{mode} eq 'TRACK'; # no reset + $atomicupd->{remember}= $upd? $atomicupd->{remember}."$upd;": ''; C4::Context->set_preference( ATOMICUPD_PREF, $atomicupd->{remember} ); } @@ -9744,5 +9755,5 @@ sub CheckVersion { } } -RunRemainingAtomicUpdates( $aupd ); +RunRemainingAtomicUpdates( $aupd ) if $aupd->{mode} ne 'PROD'; exit; --