[open-ils-commits] [GIT] Evergreen ILS branch tags/rel_3_1_11 created. 881ae7712073ebaec4755e625ae943056396ce17

Evergreen Git git at git.evergreen-ils.org
Thu Mar 28 17:00:40 EDT 2019


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Evergreen ILS".

The branch, tags/rel_3_1_11 has been created
        at  881ae7712073ebaec4755e625ae943056396ce17 (commit)

- Log -----------------------------------------------------------------
commit 881ae7712073ebaec4755e625ae943056396ce17
Author: blake <blake at mobiusconsortium.org>
Date:   Tue Mar 26 15:16:42 2019 -0500

    Bumping version numbers, adding Upgrade Script and Changelog
    
    Signed-off-by: blake <blake at mobiusconsortium.org>

diff --git a/ChangeLog b/ChangeLog
index 1f72b2c73e..3b80d3602e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,470 @@
-Evergreen doesn't keep a GNU-style ChangeLog except in release tarballs.
-Those seeking a change log are encouraged to run 'git log -v', or read
-it online at: http://git.evergreen-ils.org/?p=Evergreen.git;a=log
+commit 91ee83cc0d41e4584225e7385baeab9852d652d3
+Author: blake <blake at mobiusconsortium.org>
+Date:   Tue Mar 26 15:16:26 2019 -0500
+
+    fixed upgrade script naming convention
+    
+    Signed-off-by: blake <blake at mobiusconsortium.org>
+
+24	14	docs/installation/server_upgrade.adoc
+
+commit 54b4b915503838c8def8f8b66ce5e370958fd139
+Author: blake <blake at mobiusconsortium.org>
+Date:   Tue Mar 26 15:13:47 2019 -0500
+
+    bumping Perl version string for 3.1.11
+    
+    Signed-off-by: blake <blake at mobiusconsortium.org>
+
+1	1	Open-ILS/src/perlmods/lib/OpenILS.pm
+
+commit 86e9934bc2845b3c10af331018c70c2b53b785df
+Author: Dan Wells <dbw2 at calvin.edu>
+Date:   Tue Mar 26 15:39:20 2019 -0400
+
+    Translation updates - newpot
+    
+    This reverts commit cfff8b681c9d29a5be81711ee382b32c62a7707b.
+    
+    Moving from Translate Toolkit 1.10 to 2.0 changed a large number of
+    strings in backwards incompatible ways, so I think we need to consider
+    simply freezing translations on 3.1.
+    
+    This revert is an attempt to recover the existing translations, though
+    I am not certain it will work.
+    
+    Signed-off-by: Dan Wells <dbw2 at calvin.edu>
+
+2	2	build/i18n/po/AutoFieldWidget.js/AutoFieldWidget.js.pot
+2	2	build/i18n/po/FlattenerGrid.js/FlattenerGrid.js.pot
+2	2	build/i18n/po/PCrudFilterPane.js/PCrudFilterPane.js.pot
+2	2	build/i18n/po/Searcher.js/Searcher.js.pot
+2	2	build/i18n/po/TranslatorPopup.js/TranslatorPopup.js.pot
+2	2	build/i18n/po/URLVerify.js/URLVerify.js.pot
+2	2	build/i18n/po/User.js/User.js.pot
+2	2	build/i18n/po/XULTermLoader.js/XULTermLoader.js.pot
+2	2	build/i18n/po/acq.js/acq.js.pot
+2	2	build/i18n/po/authority.js/authority.js.pot
+2	2	build/i18n/po/capture.js/capture.js.pot
+106	32	build/i18n/po/cat.properties/cat.properties.pot
+33	12	build/i18n/po/circ.properties/circ.properties.pot
+2	2	build/i18n/po/conify.js/conify.js.pot
+62	62	build/i18n/po/db.seed/db.seed.pot
+1299	1299	build/i18n/po/fm_IDL.dtd/fm_IDL.dtd.pot
+20	20	build/i18n/po/ils_events.xml/ils_events.xml.pot
+29	29	build/i18n/po/lang.dtd/lang.dtd.pot
+2	2	build/i18n/po/match_set.js/match_set.js.pot
+54	16	build/i18n/po/offline.properties/offline.properties.pot
+70	54	build/i18n/po/opac.dtd/opac.dtd.pot
+2	2	build/i18n/po/opac.js/opac.js.pot
+152	54	build/i18n/po/patron.properties/patron.properties.pot
+2	2	build/i18n/po/pickup_and_return.js/pickup_and_return.js.pot
+2	2	build/i18n/po/pull_list.js/pull_list.js.pot
+2	2	build/i18n/po/register.js/register.js.pot
+18	11	build/i18n/po/reports.dtd/reports.dtd.pot
+2	2	build/i18n/po/reports.js/reports.js.pot
+2	2	build/i18n/po/reservation.js/reservation.js.pot
+2	2	build/i18n/po/selfcheck.js/selfcheck.js.pot
+2	2	build/i18n/po/serial.js/serial.js.pot
+81	18	build/i18n/po/serial.properties/serial.properties.pot
+1	1	build/i18n/po/tpac/tpac.pot
+2	2	build/i18n/po/vandelay.js/vandelay.js.pot
+3	3	build/i18n/po/webstaff/webstaff.pot
+
+commit f6734f63661fa16ee3bfafbab32227ec7645f55e
+Author: abneiman <abneiman at equinoxinitiative.org>
+Date:   Tue Feb 19 17:22:04 2019 -0500
+
+    docs: Statcat updates
+    
+    Signed-off-by: abneiman <abneiman at equinoxinitiative.org>
+    Signed-off-by: Jane Sandberg <sandbej at linnbenton.edu>
+
+16	7	docs/admin/lsa-statcat.adoc
+-	-	docs/media/lsa-statcat-2.png
+-	-	docs/media/lsa-statcat-3.png
+-	-	docs/media/lsa-statcat-3a.png
+-	-	docs/media/lsa-statcat-5.png
+-	-	docs/media/lsa-statcat-6.png
+-	-	docs/media/lsa-statcat-8.png
+ create mode 100644 docs/media/lsa-statcat-3a.png
+
+commit 35f26aeeaa75e2313836115d722ac6744c9155c2
+Author: Remington Steed <rjs7 at calvin.edu>
+Date:   Wed Mar 20 12:16:54 2019 -0400
+
+    Docs: Add bugfix release notes for 3.1.11
+    
+    For the acknowledgements section, I opted to include anyone who had
+    signed off on a commit in 3.1.11. Not sure if this is the same as past
+    point release notes.
+    
+    Signed-off-by: Remington Steed <rjs7 at calvin.edu>
+
+72	0	docs/RELEASE_NOTES_3_1.adoc
+
+commit 7f3e52b69cb2ff55b71c9adcddb239c0c98e3f88
+Author: Josh Stompro <stompro at stompro.org>
+Date:   Tue Feb 26 14:21:06 2019 -0600
+
+    LP1749502 - Holds Pull List Print Order
+    
+    - Expose call number affix sortkey data.
+    - Use sortkey data to sort default pull list template.
+    - Combine all call number info into one field in default pull list template.
+    - Sorty by shelf location position if it exists, then by shelf location name if it doesn't
+    - Only grab copy info if copy is assigned, to not break patron holds grid.
+    - Remove some web console logging only needed for testing.
+    
+    Signed-off-by: Josh Stompro <stompro at stompro.org>
+    Signed-off-by: Jason Stephenson <jason at sigio.com>
+    Signed-off-by: John Amundson <jamundson at cwmars.org>
+
+2	6	Open-ILS/src/templates/staff/share/print_templates/t_hold_pull_list.tt2
+37	31	Open-ILS/web/js/ui/default/staff/circ/services/holds.js
+
+commit 00b22de2a617249f38a1f445cfa8a7300bd2cd7f
+Author: Jason Stephenson <jason at sigio.com>
+Date:   Wed Sep 12 15:34:56 2018 -0400
+
+    LP 1749502: Add Call Number Prefix & Suffix to pull list print template.
+    
+    We add the call number prefix and suffix as separate columns to the
+    holds pull list print template.  We also add the suffix to the end of
+    the orderBy so that we also sort by the suffix.
+    
+    Signed-off-by: Jason Stephenson <jason at sigio.com>
+    Signed-off-by: Josh Stompro <stompro at stompro.org>
+    Signed-off-by: John Amundson <jamundson at cwmars.org>
+
+5	1	Open-ILS/src/templates/staff/share/print_templates/t_hold_pull_list.tt2
+
+commit d5801835b63562753f7dc86f565be45ecd70841c
+Author: Kyle Huckins <khuckins at catalyte.io>
+Date:   Tue May 29 16:06:59 2018 +0000
+
+    lp1749502 Prefix patch
+    
+    - Ensure prefix information is properly set
+    
+    Signed-off-by: Kyle Huckins <khuckins at catalyte.io>
+    
+     Changes to be committed:
+    	modified:   Open-ILS/src/templates/staff/share/print_templates/t_hold_pull_list.tt2
+    	modified:   Open-ILS/web/js/ui/default/staff/circ/services/holds.js
+    
+    Signed-off-by: Jason Stephenson <jason at sigio.com>
+    Signed-off-by: Josh Stompro <stompro at stompro.org>
+    Signed-off-by: John Amundson <jamundson at cwmars.org>
+
+1	1	Open-ILS/src/templates/staff/share/print_templates/t_hold_pull_list.tt2
+12	10	Open-ILS/web/js/ui/default/staff/circ/services/holds.js
+
+commit 979a967c90218ed84b1cc158da1a215bcbfa5876
+Author: Kyle Huckins <khuckins at catalyte.io>
+Date:   Thu May 17 21:08:27 2018 +0000
+
+    lp1749502 Holds Pull List Print Order
+    
+    - Ensure copy shelf location position is available for each hold on
+    holds shelf.
+    - Add _copy_location_position to hold_data while printing.
+    
+    Signed-off-by: Kyle Huckins <khuckins at catalyte.io>
+    
+     Changes to be committed:
+    	modified:   Open-ILS/src/templates/staff/share/print_templates/t_hold_pull_list.tt2
+    	modified:   Open-ILS/web/js/ui/default/staff/circ/services/holds.js
+    
+    Signed-off-by: Jason Stephenson <jason at sigio.com>
+    Signed-off-by: Josh Stompro <stompro at stompro.org>
+    Signed-off-by: John Amundson <jamundson at cwmars.org>
+
+1	1	Open-ILS/src/templates/staff/share/print_templates/t_hold_pull_list.tt2
+20	1	Open-ILS/web/js/ui/default/staff/circ/services/holds.js
+
+commit b38e63467af4648778d1c4177f61c429ffaae0fa
+Author: Jason Stephenson <jason at sigio.com>
+Date:   Wed Mar 13 12:37:23 2019 -0400
+
+    LP 1819796: Fix method call on undefined value in generate_fines
+    
+    The below message repeats in the open-ils.storage_stderr.log:
+    
+    Caught error from 'run' method: Can't call method "search_where" on an
+    undefined value at
+    /usr/local/share/perl/5.26.1/OpenILS/Application/Storage/Publisher/action.pm
+    line 1014.
+    
+    This commit removes an errant ->search_where on a CStoreEditor call to
+    make that message go away.
+    
+    Also, delete some lines of code that were commented out at the time the
+    code was converted to use CStoreEditor.
+    
+    Signed-off-by: Jason Stephenson <jason at sigio.com>
+    Signed-off-by: Dan Wells <dbw2 at calvin.edu>
+
+1	8	Open-ILS/src/perlmods/lib/OpenILS/Application/Storage/Publisher/action.pm
+
+commit 7c8ca2dadd8112b6091838d3067f84235490c7b2
+Author: Remington Steed <rjs7 at calvin.edu>
+Date:   Fri Mar 8 15:27:45 2019 -0500
+
+    LP1793196 Fix console error when none selected
+    
+    If you open the dropdown and close it without selecting anything, the
+    console shows an error complaining that $scope.selected is undefined.
+    This commit checks that it exists in that case before using it.
+    
+    Signed-off-by: Remington Steed <rjs7 at calvin.edu>
+    Signed-off-by: Dan Wells <dbw2 at calvin.edu>
+
+1	1	Open-ILS/web/js/ui/default/staff/services/ui.js
+
+commit 8b763c00e90851231e83ea364bf8129cdddf1210
+Author: Bill Erickson <berickxx at gmail.com>
+Date:   Tue Feb 5 12:28:15 2019 -0500
+
+    LP1793196 Volume batch editor offers MARC call numbers
+    
+    Provide call numbers extracted from the MARC record as options in the
+    volume batch editor.  Call numbers to extract are based on the load-time
+    classification scheme, defaulting to Generic ('1') if no default scheme
+    is applied.
+    
+    Patch includes additional sanity checks on volume editor utility
+    functions to avoid console errors referencing undefined values.
+    
+    Signed-off-by: Bill Erickson <berickxx at gmail.com>
+    Signed-off-by: Remington Steed <rjs7 at calvin.edu>
+    Signed-off-by: Dan Wells <dbw2 at calvin.edu>
+
+1	1	Open-ILS/src/templates/staff/cat/volcopy/t_edit.tt2
+22	5	Open-ILS/web/js/ui/default/staff/cat/volcopy/app.js
+
+commit 34f1028c9596767e341c9c2cb58be3802af59a5b
+Author: Jane Sandberg <sandbej at linnbenton.edu>
+Date:   Sun Sep 2 16:13:46 2018 -0700
+
+    LP1665534: Make pickup library in bib record holds view sticky
+    
+    Signed-off-by: Jane Sandberg <sandbej at linnbenton.edu>
+    Signed-off-by: Michele Morgan <mmorgan at noblenet.org>
+    Signed-off-by: Bill Erickson <berickxx at gmail.com>
+
+1	1	Open-ILS/src/templates/staff/cat/catalog/t_holds.tt2
+
+commit df0207b801dda6c1c7b5bb3fe8069f0c146e75ea
+Author: Jason Stephenson <jason at sigio.com>
+Date:   Fri Mar 8 13:54:35 2019 -0500
+
+    Lp 712490: Stamping UPgrade Script
+    
+    Signed-off-by: Jason Stephenson <jason at sigio.com>
+
+1	1	Open-ILS/src/sql/Pg/002.schema.config.sql
+202	0	Open-ILS/src/sql/Pg/upgrade/1157.schema.vandelay-replace-field-order.sql
+0	202	Open-ILS/src/sql/Pg/upgrade/XXXX.schema.vandelay-replace-field-order.sql
+ create mode 100644 Open-ILS/src/sql/Pg/upgrade/1157.schema.vandelay-replace-field-order.sql
+ delete mode 100644 Open-ILS/src/sql/Pg/upgrade/XXXX.schema.vandelay-replace-field-order.sql
+
+commit d8e3e5681f200e9557b036aeef07a3fd1c6474aa
+Author: Bill Erickson <berickxx at gmail.com>
+Date:   Thu Oct 19 11:42:43 2017 -0400
+
+    LP#712490 Vandelay replace/merge PGTAP tests
+    
+    Signed-off-by: Bill Erickson <berickxx at gmail.com>
+    Signed-off-by: Jane Sandberg <sandbej at linnbenton.edu>
+    Signed-off-by: Jason Stephenson <jason at sigio.com>
+
+135	0	Open-ILS/src/sql/Pg/t/lp712490-vand-replace-field-merge.pg
+ create mode 100644 Open-ILS/src/sql/Pg/t/lp712490-vand-replace-field-merge.pg
+
+commit 635ed4a291c12cb9e7ccd92d176bff79bcedcaa8
+Author: Bill Erickson <berickxx at gmail.com>
+Date:   Wed Oct 18 17:00:59 2017 -0400
+
+    LP#712490 Vandelay merge-based field replacement
+    
+    Modify the vandelay field replacement logic to merge replacement data
+    into existing field data where possible, instead of simply deleting then
+    re-adding the data.  The key benefit is that subfields retain their order
+    in affected MARC fields.  As a result, for example, propagating
+    authority field changes to bib records will no longer result in the $0
+    field being pushed to the front of the field when it was previously that
+    last subfield.
+    
+    Signed-off-by: Bill Erickson <berickxx at gmail.com>
+    Signed-off-by: Jane Sandberg <sandbej at linnbenton.edu>
+    Signed-off-by: Jason Stephenson <jason at sigio.com>
+
+188	22	Open-ILS/src/sql/Pg/012.schema.vandelay.sql
+202	0	Open-ILS/src/sql/Pg/upgrade/XXXX.schema.vandelay-replace-field-order.sql
+ create mode 100644 Open-ILS/src/sql/Pg/upgrade/XXXX.schema.vandelay-replace-field-order.sql
+
+commit f7aad272dd98112b2efe371b6cf0e7e4a088f4f3
+Author: Jason Etheridge <jason at EquinoxInitiative.org>
+Date:   Wed Jan 16 08:57:26 2019 -0500
+
+    LP1794588 Web client edit single call number changes all when multiple items attached
+    
+    This patch tweaks the behavior Cat.pm's fleshed_volume_update, aka
+    open-ils.cat.asset.volume.fleshed.batch.update
+    
+    Previously, if a volume label was edited, all items attached to that
+    volume would be essentially affected.  Now, if only a sub-set of items
+    for the original volume being edited are being edited along with the
+    volume, then a new volume is potentially created instead, leaving the
+    original volume (and its unedited copies) untouched.  If no copies are
+    being edited along with a volume, then the volume itself is edited.
+    
+    Auto-merging of volumes may still happen in all of these scenarios.
+    
+    Signed-off-by: Jason Etheridge <jason at EquinoxInitiative.org>
+    Signed-off-by: Janet Schrader <jschrader at cwmars.org>
+    Signed-off-by: Jason Stephenson <jason at sigio.com>
+
+44	3	Open-ILS/src/perlmods/lib/OpenILS/Application/Cat.pm
+
+commit 66a2eabfb654cba93eaa81db1fb6d6ae444c2ccb
+Author: Terran McCanna <tmccanna at georgialibraries.org>
+Date:   Tue Mar 5 12:34:49 2019 -0500
+
+    LP#1818576 Offline Noncataloged Checkout Preview
+    
+    This adds the noncataloged type and number to the right-hand
+    preview when doing an offline checkout. (Prior to this, the
+    display was blank if there was no barcode.)
+    
+    Signed-off-by: Terran McCanna <tmccanna at georgialibraries.org>
+    Signed-off-by: Garry Collum <gcollum at gmail.com>
+    Signed-off-by: Bill Erickson <berickxx at gmail.com>
+
+4	1	Open-ILS/src/templates/staff/offline-interface.tt2
+6	0	Open-ILS/web/js/ui/default/staff/offline.js
+
+commit 8046744dd9a347f0d5e285dd966ec0e3d0f302a7
+Author: Jason Boyer <jboyer at library.in.gov>
+Date:   Thu Jan 17 09:58:08 2019 -0500
+
+    LP1734775: Show multiple items in Item Status
+    
+    The ListCtrl controller was only displaying a single
+    copy when an id list was passed to Item Status in the
+    URL. This branch separates each id into a separate
+    fetch call and when all have been resolved it
+    refreshes the grid, which now has all of the items.
+    
+    Signed-off-by: Jason Boyer <jboyer at library.in.gov>
+    Signed-off-by: Josh Stompro <stompro at stompro.org>
+    Signed-off-by: Bill Erickson <berickxx at gmail.com>
+
+6	5	Open-ILS/web/js/ui/default/staff/cat/item/app.js
+
+commit 9988fbca91f1a95b7d41e0b204a98803526d9259
+Author: Jane Sandberg <sandbej at linnbenton.edu>
+Date:   Thu Mar 7 07:14:50 2019 -0800
+
+    Docs: Fixing broken link
+    
+    Signed-off-by: Jane Sandberg <sandbej at linnbenton.edu>
+
+1	1	docs/reports/reporter_add_data_source.adoc
+
+commit e4e8c7a5f1e1586262d9720c45ed0ab443936267
+Author: Remington Steed <rjs7 at calvin.edu>
+Date:   Fri Oct 26 11:28:32 2018 -0400
+
+    LP#1800178 Holdings View should also sort by part
+    
+    The Holdings View tab of the web client doesn't correctly sort by
+    monograph parts. The JS is already grabbing the part label for display,
+    so this commit moves that chunk before the sorting code, and also grabs
+    the sort key. Note that the part labels and sort keys are joined per
+    item, since the database supports multiple parts per item (though the UI
+    hasn't yet supported that). And we now join the label on comma-space,
+    instead of the default (just a comma).
+    
+    Signed-off-by: Remington Steed <rjs7 at calvin.edu>
+    Signed-off-by: Rogan Hamby <rogan.hamby at gmail.com>
+    Signed-off-by: Dan Wells <dbw2 at calvin.edu>
+
+13	8	Open-ILS/web/js/ui/default/staff/cat/services/holdings.js
+
+commit 0da647e53fd367acbf9fc4b1288878c73e365723
+Author: Bill Erickson <berickxx at gmail.com>
+Date:   Tue Mar 5 12:21:00 2019 -0500
+
+    LP1818153 Stamping DB upgrade - WS user activity
+    
+    Signed-off-by: Bill Erickson <berickxx at gmail.com>
+
+1	1	Open-ILS/src/sql/Pg/002.schema.config.sql
+28	0	Open-ILS/src/sql/Pg/upgrade/1154.data.websocket-activity-types.sql
+0	28	Open-ILS/src/sql/Pg/upgrade/XXXX.data.websocket-activity-types.sql
+ create mode 100644 Open-ILS/src/sql/Pg/upgrade/1154.data.websocket-activity-types.sql
+ delete mode 100644 Open-ILS/src/sql/Pg/upgrade/XXXX.data.websocket-activity-types.sql
+
+commit 0fa743800e80f0554e90043905e55ef302094f95
+Author: Bill Erickson <berickxx at gmail.com>
+Date:   Thu Feb 28 17:20:31 2019 -0500
+
+    LP1818153 Log user activity for websocket login/verify
+    
+    Adds support for logging additional user activity types:
+    
+     * websocket v1 login (apache2-websockets)
+     * websocket v2 login (websocketd)
+     * websocket v1 verify
+     * websocket v2 verify
+     * generic login (any ingress)
+     * generic verify (any ingress)
+    
+    Signed-off-by: Bill Erickson <berickxx at gmail.com>
+    Signed-off-by: Michele Morgan <mmorgan at noblenet.org>
+
+23	0	Open-ILS/src/sql/Pg/950.data.seed-values.sql
+28	0	Open-ILS/src/sql/Pg/upgrade/XXXX.data.websocket-activity-types.sql
+ create mode 100644 Open-ILS/src/sql/Pg/upgrade/XXXX.data.websocket-activity-types.sql
+
+commit d363f31c73be21566ab43f16f4a1f82eb9a3fcaa
+Author: Terran McCanna <tmccanna at georgialibraries.org>
+Date:   Tue Mar 5 10:50:59 2019 -0500
+
+    LP#1746360 Add Deleted Column to Record Bucket
+    
+    This adds the Deleted column to the Record Bucket view.
+    
+    Signed-off-by: Terran McCanna <tmccanna at georgialibraries.org>
+    Signed-off-by: Bill Erickson <berickxx at gmail.com>
+
+1	0	Open-ILS/src/templates/staff/cat/bucket/record/t_view.tt2
+
+commit 8f87930b37490726485172ad2526aa4cfcf7291c
+Author: Josh Stompro <stompro at stompro.org>
+Date:   Mon Mar 4 08:57:02 2019 -0600
+
+    LP#1667497 - Define $params{depth} to avoid uninitialized warning.
+    
+    $depth is set to 0 if $params{depth} is unset, but then $params{depth}
+    gets used later on, which causes an uninitialized value warning.
+    
+    So set $params{depth} to whatever $depth was set to.
+    
+    Signed-off-by: Josh Stompro <stompro at stompro.org>
+    Signed-off-by: Jason Stephenson <jason at sigio.com>
+
+1	0	Open-ILS/src/perlmods/lib/OpenILS/Application/Circ/Holds.pm
+
+commit 7433dcac8c2754299fc4994f787e2633962c8583
+Author: Dan Wells <dbw2 at calvin.edu>
+Date:   Thu Feb 28 15:59:02 2019 -0500
+
+    Forward-port 3.1.10 upgrade script
+    
+    Signed-off-by: Dan Wells <dbw2 at calvin.edu>
+
+45	0	Open-ILS/src/sql/Pg/version-upgrade/3.1.9-3.1.10-upgrade-db.sql
+ create mode 100644 Open-ILS/src/sql/Pg/version-upgrade/3.1.9-3.1.10-upgrade-db.sql
diff --git a/Open-ILS/src/perlmods/lib/OpenILS/Application.pm b/Open-ILS/src/perlmods/lib/OpenILS/Application.pm
index d750216454..53f3d6c433 100644
--- a/Open-ILS/src/perlmods/lib/OpenILS/Application.pm
+++ b/Open-ILS/src/perlmods/lib/OpenILS/Application.pm
@@ -7,7 +7,7 @@ use OpenILS::Utils::Fieldmapper;
 sub ils_version {
     # version format is "x-y-z", for example "2-0-0" for Evergreen 2.0.0
     # For branches, format is "x-y"
-    return "HEAD";
+    return "3-1-11";
 }
 
 __PACKAGE__->register_method(
diff --git a/Open-ILS/src/sql/Pg/002.schema.config.sql b/Open-ILS/src/sql/Pg/002.schema.config.sql
index 5327949f13..8ddb3b03cc 100644
--- a/Open-ILS/src/sql/Pg/002.schema.config.sql
+++ b/Open-ILS/src/sql/Pg/002.schema.config.sql
@@ -93,6 +93,7 @@ CREATE TRIGGER no_overlapping_deps
     FOR EACH ROW EXECUTE PROCEDURE evergreen.array_overlap_check ('deprecates');
 
 INSERT INTO config.upgrade_log (version, applied_to) VALUES ('1157', :eg_version); -- berick/sandbergja/Dyrcona
+INSERT INTO config.upgrade_log (version, applied_to) VALUES ('3.1.11', :eg_version);
 
 CREATE TABLE config.bib_source (
 	id		SERIAL	PRIMARY KEY,
diff --git a/Open-ILS/src/sql/Pg/version-upgrade/3.1.10-3.1.11-upgrade-db.sql b/Open-ILS/src/sql/Pg/version-upgrade/3.1.10-3.1.11-upgrade-db.sql
new file mode 100644
index 0000000000..5aefaa0357
--- /dev/null
+++ b/Open-ILS/src/sql/Pg/version-upgrade/3.1.10-3.1.11-upgrade-db.sql
@@ -0,0 +1,231 @@
+--Upgrade Script for 3.1.10 to 3.1.11
+\set eg_version '''3.1.11'''
+BEGIN;
+INSERT INTO config.upgrade_log (version, applied_to) VALUES ('3.1.11', :eg_version);
+
+SELECT evergreen.upgrade_deps_block_check('1154', :eg_version);
+
+INSERT INTO config.usr_activity_type 
+    (id, ewhat, ehow, egroup, enabled, transient, label)
+VALUES (
+    25, 'login', 'ws-translator-v1', 'authen', TRUE, TRUE,
+    oils_i18n_gettext(25, 'Login via Websocket V1', 'cuat', 'label')
+), (
+    26, 'login', 'ws-translator-v2', 'authen', TRUE, TRUE,
+    oils_i18n_gettext(26, 'Login via Websocket V2', 'cuat', 'label')
+), (
+    27, 'verify', 'ws-translator-v1', 'authz', TRUE, TRUE,
+    oils_i18n_gettext(27, 'Verification via Websocket v1', 'cuat', 'label')
+), (
+    28, 'verify', 'ws-translator-v2', 'authz', TRUE, TRUE,
+    oils_i18n_gettext(28, 'Verifiation via Websocket V2', 'cuat', 'label')
+), (
+    29, 'login', NULL, 'authen', TRUE, TRUE,
+    oils_i18n_gettext(29, 'Generic Login', 'cuat', 'label')
+), (
+    30, 'verify', NULL, 'authz', TRUE, TRUE,
+    oils_i18n_gettext(30, 'Generic Verify', 'cuat', 'label')
+);
+
+
+
+SELECT evergreen.upgrade_deps_block_check('1157', :eg_version); 
+
+CREATE OR REPLACE FUNCTION vandelay.replace_field 
+    (target_xml TEXT, source_xml TEXT, field TEXT) RETURNS TEXT AS $_$
+
+    use strict;
+    use MARC::Record;
+    use MARC::Field;
+    use MARC::File::XML (BinaryEncoding => 'UTF-8');
+    use MARC::Charset;
+
+    MARC::Charset->assume_unicode(1);
+
+    my $target_xml = shift;
+    my $source_xml = shift;
+    my $field_spec = shift;
+
+    my $target_r = MARC::Record->new_from_xml($target_xml);
+    my $source_r = MARC::Record->new_from_xml($source_xml);
+
+    return $target_xml unless $target_r && $source_r;
+
+    # Extract the field_spec components into MARC tags, subfields, 
+    # and regex matches.  Copied wholesale from vandelay.strip_field()
+
+    my @field_list = split(',', $field_spec);
+    my %fields;
+    for my $f (@field_list) {
+        $f =~ s/^\s*//; $f =~ s/\s*$//;
+        if ($f =~ /^(.{3})(\w*)(?:\[([^]]*)\])?$/) {
+            my $field = $1;
+            $field =~ s/\s+//;
+            my $sf = $2;
+            $sf =~ s/\s+//;
+            my $match = $3;
+            $match =~ s/^\s*//; $match =~ s/\s*$//;
+            $fields{$field} = { sf => [ split('', $sf) ] };
+            if ($match) {
+                my ($msf,$mre) = split('~', $match);
+                if (length($msf) > 0 and length($mre) > 0) {
+                    $msf =~ s/^\s*//; $msf =~ s/\s*$//;
+                    $mre =~ s/^\s*//; $mre =~ s/\s*$//;
+                    $fields{$field}{match} = { sf => $msf, re => qr/$mre/ };
+                }
+            }
+        }
+    }
+
+    # Returns a flat list of subfield (code, value, code, value, ...)
+    # suitable for adding to a MARC::Field.
+    sub generate_replacement_subfields {
+        my ($source_field, $target_field, @controlled_subfields) = @_;
+
+        # Performing a wholesale field replacment.  
+        # Use the entire source field as-is.
+        return map {$_->[0], $_->[1]} $source_field->subfields
+            unless @controlled_subfields;
+
+        my @new_subfields;
+
+        # Iterate over all target field subfields:
+        # 1. Keep uncontrolled subfields as is.
+        # 2. Replace values for controlled subfields when a
+        #    replacement value exists on the source record.
+        # 3. Delete values for controlled subfields when no 
+        #    replacement value exists on the source record.
+
+        for my $target_sf ($target_field->subfields) {
+            my $subfield = $target_sf->[0];
+            my $target_val = $target_sf->[1];
+
+            if (grep {$_ eq $subfield} @controlled_subfields) {
+                if (my $source_val = $source_field->subfield($subfield)) {
+                    # We have a replacement value
+                    push(@new_subfields, $subfield, $source_val);
+                } else {
+                    # no replacement value for controlled subfield, drop it.
+                }
+            } else {
+                # Field is not controlled.  Copy it over as-is.
+                push(@new_subfields, $subfield, $target_val);
+            }
+        }
+
+        # Iterate over all subfields in the source field and back-fill
+        # any values that exist only in the source field.  Insert these
+        # subfields in the same relative position they exist in the
+        # source field.
+                
+        my @seen_subfields;
+        for my $source_sf ($source_field->subfields) {
+            my $subfield = $source_sf->[0];
+            my $source_val = $source_sf->[1];
+            push(@seen_subfields, $subfield);
+
+            # target field already contains this subfield, 
+            # so it would have been addressed above.
+            next if $target_field->subfield($subfield);
+
+            # Ignore uncontrolled subfields.
+            next unless grep {$_ eq $subfield} @controlled_subfields;
+
+            # Adding a new subfield.  Find its relative position and add
+            # it to the list under construction.  Work backwards from
+            # the list of already seen subfields to find the best slot.
+
+            my $done = 0;
+            for my $seen_sf (reverse(@seen_subfields)) {
+                my $idx = @new_subfields;
+                for my $new_sf (reverse(@new_subfields)) {
+                    $idx--;
+                    next if $idx % 2 == 1; # sf codes are in the even slots
+
+                    if ($new_subfields[$idx] eq $seen_sf) {
+                        splice(@new_subfields, $idx + 2, 0, $subfield, $source_val);
+                        $done = 1;
+                        last;
+                    }
+                }
+                last if $done;
+            }
+
+            # if no slot was found, add to the end of the list.
+            push(@new_subfields, $subfield, $source_val) unless $done;
+        }
+
+        return @new_subfields;
+    }
+
+    # MARC tag loop
+    for my $f (keys %fields) {
+        my $tag_idx = -1;
+        for my $target_field ($target_r->field($f)) {
+
+            # field spec contains a regex for this field.  Confirm field on 
+            # target record matches the specified regex before replacing.
+            if (exists($fields{$f}{match})) {
+                next unless (grep { $_ =~ $fields{$f}{match}{re} } 
+                    $target_field->subfield($fields{$f}{match}{sf}));
+            }
+
+            my @new_subfields;
+            my @controlled_subfields = @{$fields{$f}{sf}};
+
+            # If the target record has multiple matching bib fields,
+            # replace them from matching fields on the source record
+            # in a predictable order to avoid replacing with them with
+            # same source field repeatedly.
+            my @source_fields = $source_r->field($f);
+            my $source_field = $source_fields[++$tag_idx];
+
+            if (!$source_field && @controlled_subfields) {
+                # When there are more target fields than source fields
+                # and we are replacing values for subfields and not
+                # performing wholesale field replacment, use the last
+                # available source field as the input for all remaining
+                # target fields.
+                $source_field = $source_fields[$#source_fields];
+            }
+
+            if (!$source_field) {
+                # No source field exists.  Delete all affected target
+                # data.  This is a little bit counterintuitive, but is
+                # backwards compatible with the previous version of this
+                # function which first deleted all affected data, then
+                # replaced values where possible.
+                if (@controlled_subfields) {
+                    $target_field->delete_subfield($_) for @controlled_subfields;
+                } else {
+                    $target_r->delete_field($target_field);
+                }
+                next;
+            }
+
+            my @new_subfields = generate_replacement_subfields(
+                $source_field, $target_field, @controlled_subfields);
+
+            # Build the replacement field from scratch.  
+            my $replacement_field = MARC::Field->new(
+                $target_field->tag,
+                $target_field->indicator(1),
+                $target_field->indicator(2),
+                @new_subfields
+            );
+
+            $target_field->replace_with($replacement_field);
+        }
+    }
+
+    $target_xml = $target_r->as_xml_record;
+    $target_xml =~ s/^<\?.+?\?>$//mo;
+    $target_xml =~ s/\n//sgo;
+    $target_xml =~ s/>\s+</></sgo;
+
+    return $target_xml;
+
+$_$ LANGUAGE PLPERLU;
+
+
+COMMIT;
diff --git a/Open-ILS/xul/staff_client/chrome/content/main/about.html b/Open-ILS/xul/staff_client/chrome/content/main/about.html
index b2b87b683f..89acb4501b 100644
--- a/Open-ILS/xul/staff_client/chrome/content/main/about.html
+++ b/Open-ILS/xul/staff_client/chrome/content/main/about.html
@@ -1,7 +1,7 @@
 <html><head><script></script></head><body onload="var x = document.getElementById('version'); var version ='/xul/server/'.split(/\//)[2]; if (version == 'server') { version = 'versionless debug build'; } x.appendChild(document.createTextNode(version));">
 <h1 style="text-decoration: underline">Evergreen</h1>
 <p>Target Server ID: <span id="version"></span></p>
-<p>$HeadURL$</p>
+<p>http://git.evergreen-ils.org/?p=Evergreen.git;a=shortlog;h=refs/heads/tags/rel_3_1_11</p>
 <h2>What is Evergreen?</h2>
 <blockquote>
 <p>
diff --git a/Open-ILS/xul/staff_client/defaults/preferences/prefs.js b/Open-ILS/xul/staff_client/defaults/preferences/prefs.js
index 0613a13ddf..27470f1766 100644
--- a/Open-ILS/xul/staff_client/defaults/preferences/prefs.js
+++ b/Open-ILS/xul/staff_client/defaults/preferences/prefs.js
@@ -11,7 +11,7 @@ pref("toolkit.singletonWindowType", "eg_main");
 pref("open-ils.enable_join_tabs", true);
 
 // We'll use this one to help brand some build information into the client, and rely on subversion keywords
-pref("open-ils.repository.headURL","$HeadURL$");
+pref("open-ils.repository.headURL","http://git.evergreen-ils.org/?p=Evergreen.git;a=shortlog;h=refs/heads/tags/rel_3_1_11");
 pref("open-ils.repository.author","$Author$");
 pref("open-ils.repository.revision","$Revision$");
 pref("open-ils.repository.date","$Date$");
diff --git a/Open-ILS/xul/staff_client/windowssetup.nsi b/Open-ILS/xul/staff_client/windowssetup.nsi
index a9543579a8..ae0bbdf527 100644
--- a/Open-ILS/xul/staff_client/windowssetup.nsi
+++ b/Open-ILS/xul/staff_client/windowssetup.nsi
@@ -3,7 +3,7 @@
 ; HM NIS Edit Wizard helper defines
 ; Old versions of makensis don't like this, moved to Makefile
 ;!define /file PRODUCT_VERSION "client/VERSION"
-!define PRODUCT_TAG "Master"
+!define PRODUCT_TAG "3.1"
 !define PRODUCT_INSTALL_TAG "${PRODUCT_TAG}"
 !define UI_IMAGESET "beta"
 ;!define UI_IMAGESET "release"
diff --git a/README b/README
deleted file mode 120000
index 1ee2103e6f..0000000000
--- a/README
+++ /dev/null
@@ -1 +0,0 @@
-docs/installation/server_installation.adoc
\ No newline at end of file
diff --git a/README b/README
new file mode 100644
index 0000000000..01eb9e4b83
--- /dev/null
+++ b/README
@@ -0,0 +1,685 @@
+Installing the Evergreen server
+===============================
+:toc:
+:numbered:
+
+Preamble: referenced user accounts
+----------------------------------
+
+In subsequent sections, we will refer to a number of different accounts, as
+follows:
+
+  * Linux user accounts:
+    ** The *user* Linux account is the account that you use to log onto the
+       Linux system as a regular user.
+    ** The *root* Linux account is an account that has system administrator
+       privileges. On Debian you can switch to this account from
+       your *user* account by issuing the `su -` command and entering the
+       password for the *root* account when prompted. On Ubuntu you can switch
+       to this account from your *user* account using the `sudo su -` command
+       and entering the password for your *user* account when prompted.
+    ** The *opensrf* Linux account is an account that you create when installing
+       OpenSRF. You can switch to this account from the *root* account by
+       issuing the `su - opensrf` command.
+    ** The *postgres* Linux account is created automatically when you install
+       the PostgreSQL database server. You can switch to this account from the
+       *root* account by issuing the `su - postgres` command.
+  * PostgreSQL user accounts:
+    ** The *evergreen* PostgreSQL account is a superuser account that you will
+       create to connect to the PostgreSQL database server.
+  * Evergreen administrator account:
+    ** The *egadmin* Evergreen account is an administrator account for
+       Evergreen that you will use to test connectivity and configure your
+       Evergreen instance.
+
+Preamble: developer instructions
+--------------------------------
+
+[NOTE]
+Skip this section if you are using an official release tarball downloaded
+from http://evergreen-ils.org/egdownloads
+
+Developers working directly with the source code from the Git repository,
+rather than an official release tarball, must perform one step before they 
+can proceed with the `./configure` step.
+
+As the *user* Linux account, issue the following command in the Evergreen
+source directory to generate the configure script and Makefiles:
+
+[source, bash]
+------------------------------------------------------------------------------
+autoreconf -i
+------------------------------------------------------------------------------
+
+Installing prerequisites
+------------------------
+
+  * **PostgreSQL**: The minimum supported version is 9.4.
+  * **Linux**: Evergreen has been tested on Debian Stretch (9), 
+    Debian Jessie (8), Debian Wheezy (7), Ubuntu Xenial Xerus (16.04), 
+    and Ubuntu Trusty Tahr (14.04).
+    If you are running an older version of these distributions, you may want 
+    to upgrade before upgrading Evergreen. For instructions on upgrading these
+    distributions, visit the Debian or Ubuntu websites.
+  * **OpenSRF**: The minimum supported version of OpenSRF is 3.0.0.
+
+
+Evergreen has a number of prerequisite packages that must be installed
+before you can successfully configure, compile, and install Evergreen.
+
+1. Begin by installing the most recent version of OpenSRF (3.0.0 or later).
+   You can download OpenSRF releases from http://evergreen-ils.org/opensrf-downloads/
+2. On some distributions, it is necessary to install PostgreSQL 9.4+ from external
+   repositories.
++
+  * Debian (Wheezy) and Ubuntu (Trusty) comes with older versions of 
+    PostgreSQL, so steps are taken to automatically utilize the 
+    PostgreSQL community's apt sources. 
+    (For complete details, see: https://wiki.postgresql.org/wiki/Apt)
+  * Debian (Jessie/Stretch) and Ubuntu (Xenial) comes with PostgreSQL 9.4+,
+    so no additional steps are required.
++
+3. Issue the following commands as the *root* Linux account to install
+   prerequisites using the `Makefile.install` prerequisite installer,
+   substituting `debian-stretch`, `debian-jessie`, `debian-wheezy`,
+   `ubuntu-xenial`, or `ubuntu-trusty` for <osname> below:
++
+[source, bash]
+------------------------------------------------------------------------------
+make -f Open-ILS/src/extras/Makefile.install <osname>
+------------------------------------------------------------------------------
++
+4. Add the libdbi-libdbd libraries to the system dynamic library path by
+   issuing the following commands as the *root* Linux account:
++
+[NOTE]
+You should skip this step if installing on Ubuntu Trusty/Xenial or Debian Jessie/Stretch. The Ubuntu
+and Debian Jessie/Stretch targets use libdbd-pgsql from packages.
++
+.Debian Wheezy
+[source, bash]
+------------------------------------------------------------------------------
+echo "/usr/local/lib/dbd" > /etc/ld.so.conf.d/eg.conf
+ldconfig
+------------------------------------------------------------------------------
+
+[[optional_developer_additions]]
+5. OPTIONAL: Developer additions
++
+To perform certain developer tasks from a Git source code checkout, 
+additional packages may be required.  As the *root* Linux account:
++
+ * To install packages needed for retrieving and managing web dependencies,
+   use the <osname>-developer Makefile.install target.  Currently, 
+   this is only needed for building and installing the (preview) browser 
+   staff client.
++
+[source, bash]
+------------------------------------------------------------------------------
+make -f Open-ILS/src/extras/Makefile.install <osname>-developer
+------------------------------------------------------------------------------
++
+ * To install packages required for building Evergreen translations, use
+   the <osname>-translator Makefile.install target.
++
+[source, bash]
+------------------------------------------------------------------------------
+make -f Open-ILS/src/extras/Makefile.install <osname>-translator
+------------------------------------------------------------------------------
++
+ * To install packages required for building Evergreen release bundles, use
+   the <osname>-packager Makefile.install target.
++
+[source, bash]
+------------------------------------------------------------------------------
+make -f Open-ILS/src/extras/Makefile.install <osname>-packager
+------------------------------------------------------------------------------
+
+Extra steps for web staff client
+--------------------------------
+
+[NOTE]
+Skip this entire section if you are using an official release tarball downloaded
+from http://evergreen-ils.org/downloads
+
+Install dependencies for web staff client
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+[NOTE]
+You may skip this section if you have installed the
+<<optional_developer_additions,optional developer additions>>.  You will still need to do the following
+steps in <<install_files_for_web_staff_client,Install files for web staff client>>.
+
+1. Install the long-term stability (LTS) release of
+https://nodejs.org[Node.js]. Add the Node.js `/bin` directory to your
+environment variable `PATH`.
+
+[[install_files_for_web_staff_client]]
+Install files for web staff client
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+1. Building, Testing, Minification: The remaining steps all take place within
+   the staff JS web root:
++
+[source,sh]
+------------------------------------------------------------------------------
+cd $EVERGREEN_ROOT/Open-ILS/web/js/ui/default/staff/
+------------------------------------------------------------------------------
++
+2. Install Project-local Dependencies. npm inspects the 'package.json' file
+   for dependencies and fetches them from the Node package network.
++
+[source,sh]
+------------------------------------------------------------------------------
+npm install   # fetch JS dependencies
+------------------------------------------------------------------------------
++
+3. Run the build script.
++
+[source,sh]
+------------------------------------------------------------------------------
+# build, run tests, concat+minify
+npm run build-prod
+npm run test
+------------------------------------------------------------------------------
+
+Configuration and compilation instructions
+------------------------------------------
+
+For the time being, we are still installing everything in the `/openils/`
+directory. From the Evergreen source directory, issue the following commands as
+the *user* Linux account to configure and build Evergreen:
+
+[source, bash]
+------------------------------------------------------------------------------
+PATH=/openils/bin:$PATH ./configure --prefix=/openils --sysconfdir=/openils/conf
+make
+------------------------------------------------------------------------------
+
+These instructions assume that you have also installed OpenSRF under `/openils/`.
+If not, please adjust PATH as needed so that the Evergreen `configure` script
+can find `osrf_config`.
+
+Installation instructions
+-------------------------
+
+1. Once you have configured and compiled Evergreen, issue the following
+   command as the *root* Linux account to install Evergreen, build the server
+   portion of the staff client, and copy example configuration files to
+   `/openils/conf`.
+   Change the value of the `STAFF_CLIENT_STAMP_ID` variable to match the version
+   of the staff client that you will use to connect to the Evergreen server.
++
+[source, bash]
+------------------------------------------------------------------------------
+make STAFF_CLIENT_STAMP_ID=rel_3_1_11 install
+------------------------------------------------------------------------------
++
+2. The server portion of the staff client expects `http://hostname/xul/server`
+   to resolve. Issue the following commands as the *root* Linux account to
+   create a symbolic link pointing to the `server` subdirectory of the server
+   portion of the staff client that we just built using the staff client ID
+   'rel_name':
++
+[source, bash]
+------------------------------------------------------------------------------
+cd /openils/var/web/xul
+ln -sf rel_name/server server
+------------------------------------------------------------------------------
+
+Change ownership of the Evergreen files
+---------------------------------------
+
+All files in the `/openils/` directory and subdirectories must be owned by the
+`opensrf` user. Issue the following command as the *root* Linux account to
+change the ownership on the files:
+
+[source, bash]
+------------------------------------------------------------------------------
+chown -R opensrf:opensrf /openils
+------------------------------------------------------------------------------
+
+Run ldconfig
+------------
+
+On Debian Stretch, run the following command as the root user:
+
+[source, bash]
+------------------------------------------------------------------------------
+ldconfig
+------------------------------------------------------------------------------
+
+Additional Instructions for Developers
+--------------------------------------
+
+[NOTE]
+Skip this section if you are using an official release tarball downloaded
+from http://evergreen-ils.org/egdownloads
+
+Developers working directly with the source code from the Git repository,
+rather than an official release tarball, need to install the Dojo Toolkit
+set of JavaScript libraries. The appropriate version of Dojo is included in
+Evergreen release tarballs. Developers should install the Dojo 1.3.3 version
+of Dojo by issuing the following commands as the *opensrf* Linux account:
+
+[source, bash]
+------------------------------------------------------------------------------
+wget http://download.dojotoolkit.org/release-1.3.3/dojo-release-1.3.3.tar.gz
+tar -C /openils/var/web/js -xzf dojo-release-1.3.3.tar.gz
+cp -r /openils/var/web/js/dojo-release-1.3.3/* /openils/var/web/js/dojo/.
+------------------------------------------------------------------------------
+
+
+Configure the Apache Web server
+-------------------------------
+
+. Use the example configuration files in `Open-ILS/examples/apache/` (for
+Apache versions below 2.4) or `Open-ILS/examples/apache_24/` (for Apache
+versions 2.4 or greater) to configure your Web server for the Evergreen
+catalog, staff client, Web services, and administration interfaces. Issue the
+following commands as the *root* Linux account:
++
+.Debian Wheezy
+[source,bash]
+------------------------------------------------------------------------------
+cp Open-ILS/examples/apache/eg.conf       /etc/apache2/sites-available/
+cp Open-ILS/examples/apache/eg_vhost.conf /etc/apache2/
+cp Open-ILS/examples/apache/eg_startup    /etc/apache2/
+# Now set up SSL
+mkdir /etc/apache2/ssl
+cd /etc/apache2/ssl
+------------------------------------------------------------------------------
++
+.Ubuntu Trusty/Xenial and Debian Jessie/Stretch
+[source,bash]
+------------------------------------------------------------------------------------
+cp Open-ILS/examples/apache_24/eg_24.conf       /etc/apache2/sites-available/eg.conf
+cp Open-ILS/examples/apache_24/eg_vhost_24.conf /etc/apache2/eg_vhost.conf
+cp Open-ILS/examples/apache/eg_startup    	/etc/apache2/
+# Now set up SSL
+mkdir /etc/apache2/ssl
+cd /etc/apache2/ssl
+------------------------------------------------------------------------------------
++
+. The `openssl` command cuts a new SSL key for your Apache server. For a
+production server, you should purchase a signed SSL certificate, but you can
+just use a self-signed certificate and accept the warnings in the staff client
+and browser during testing and development. Create an SSL key for the Apache
+server by issuing the following command as the *root* Linux account:
++
+[source,bash]
+------------------------------------------------------------------------------
+openssl req -new -x509 -days 365 -nodes -out server.crt -keyout server.key
+------------------------------------------------------------------------------
++
+. As the *root* Linux account, edit the `eg.conf` file that you copied into
+place.
+  a. To enable access to the offline upload / execute interface from any
+     workstation on any network, make the following change (and note that
+     you *must* secure this for a production instance):
+     * (Apache 2.2): Replace `Allow from 10.0.0.0/8` with `Allow from all`
+     * (Apache 2.4): Replace `Require host 10.0.0.0/8` with `Require all granted`
+. Change the user for the Apache server.
+  * (Debian and Ubuntu): As the *root* Linux account, edit
+    `/etc/apache2/envvars`.  Change `export APACHE_RUN_USER=www-data` to 
+    `export APACHE_RUN_USER=opensrf`.
+. As the *root* Linux account, configure Apache with KeepAlive settings
+  appropriate for Evergreen. Higher values can improve the performance of a
+  single client by allowing multiple requests to be sent over the same TCP
+  connection, but increase the risk of using up all available Apache child
+  processes and memory.
+  * (Debian and Ubuntu): Edit `/etc/apache2/apache2.conf`.
+    a. Change `KeepAliveTimeout` to `1`.
+    b. Change `MaxKeepAliveRequests` to `100`.
+. As the *root* Linux account, configure the prefork module to start and keep
+  enough Apache servers available to provide quick responses to clients without
+  running out of memory. The following settings are a good starting point for a
+  site that exposes the default Evergreen catalogue to the web:
++
+.Debian Wheezy (`/etc/apache2/apache2.conf`)
+[source,bash]
+------------------------------------------------------------------------------
+<IfModule mpm_prefork_module>
+   StartServers         15
+   MinSpareServers       5
+   MaxSpareServers      15
+   MaxClients           75
+   MaxRequestsPerChild 500
+</IfModule>
+------------------------------------------------------------------------------
++
+.Ubuntu Trusty/Xenial, Debian Jessie/Stretch (`/etc/apache2/mods-available/mpm_prefork.conf`)
+[source,bash]
+------------------------------------------------------------------------------
+<IfModule mpm_prefork_module>
+   StartServers            15
+   MinSpareServers          5
+   MaxSpareServers         15
+   MaxRequestWorkers       75
+   MaxConnectionsPerChild 500
+</IfModule>
+------------------------------------------------------------------------------
++
+. (Ubuntu Trusty/Xenial, Debian Jessie/Stretch) As the *root* user,
+    enable the mpm_prefork module:
++
+[source,bash]
+------------------------------------------------------------------------------
+a2dismod mpm_event
+a2enmod mpm_prefork
+------------------------------------------------------------------------------
++
+. (Debian Wheezy): As the *root* Linux account, enable the Evergreen site:
++
+[source,bash]
+------------------------------------------------------------------------------
+a2dissite default  # OPTIONAL: disable the default site (the "It Works" page)
+a2ensite eg.conf
+------------------------------------------------------------------------------
++
+(Ubuntu Trusty/Xenial, Debian Jessie/Stretch):
++
+[source,bash]
+------------------------------------------------------------------------------
+a2dissite 000-default  # OPTIONAL: disable the default site (the "It Works" page)
+a2ensite eg.conf
+------------------------------------------------------------------------------
++
+. (Debian and Ubuntu): As the *root* Linux account, enable Apache to write
+   to the lock directory; this is currently necessary because Apache
+   is running as the `opensrf` user:
++
+[source,bash]
+------------------------------------------------------------------------------
+chown opensrf /var/lock/apache2
+------------------------------------------------------------------------------
+
+Learn more about additional Apache options in the following sections:
+
+  * <<_apache_rewrite_tricks,Apache Rewrite Tricks>>
+  * <<_apache_access_handler_perl_module,Apache Access Handler Perl Module>>
+
+Configure OpenSRF for the Evergreen application
+-----------------------------------------------
+There are a number of example OpenSRF configuration files in `/openils/conf/`
+that you can use as a template for your Evergreen installation. Issue the
+following commands as the *opensrf* Linux account:
+
+[source, bash]
+------------------------------------------------------------------------------
+cp -b /openils/conf/opensrf_core.xml.example /openils/conf/opensrf_core.xml
+cp -b /openils/conf/opensrf.xml.example /openils/conf/opensrf.xml
+------------------------------------------------------------------------------
+
+When you installed OpenSRF, you created four Jabber users on two
+separate domains and edited the `opensrf_core.xml` file accordingly. Please
+refer back to the OpenSRF README and, as the *opensrf* Linux account, edit the
+Evergreen version of the `opensrf_core.xml` file using the same Jabber users
+and domains as you used while installing and testing OpenSRF.
+
+[NOTE]
+The `-b` flag tells the `cp` command to create a backup version of the
+destination file. The backup version of the destination file has a tilde (`~`)
+appended to the file name, so if you have forgotten the Jabber users and
+domains, you can retrieve the settings from the backup version of the files.
+
+`eg_db_config`, described in <<_creating_the_evergreen_database,Creating the Evergreen
+database>>, sets the database connection information in `opensrf.xml` for you.
+
+Configure action triggers for the Evergreen application
+-------------------------------------------------------
+_Action Triggers_ provide hooks for the system to perform actions when a given
+event occurs; for example, to generate reminder or overdue notices, the
+`checkout.due` hook is processed and events are triggered for potential actions
+if there is no checkin time.
+
+To enable the default set of hooks, issue the following command as the
+*opensrf* Linux account:
+
+[source, bash]
+------------------------------------------------------------------------------
+cp -b /openils/conf/action_trigger_filters.json.example /openils/conf/action_trigger_filters.json
+------------------------------------------------------------------------------
+
+For more information about configuring and running action triggers, see
+<<_processing_action_triggers,Notifications / Action Triggers>>.
+
+Creating the Evergreen database
+-------------------------------
+
+Setting up the PostgreSQL server
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+For production use, most libraries install the PostgreSQL database server on a
+dedicated machine. Therefore, by default, the `Makefile.install` prerequisite
+installer does *not* install the PostgreSQL 9 database server that is required
+by every Evergreen system. You can install the packages required by Debian or
+Ubuntu on the machine of your choice using the following commands as the
+*root* Linux account:
+
+.(Debian / Ubuntu) Installing PostgreSQL server packages
+
+Each OS build target provides the postgres server installation packages
+required for each operating system.  To install Postgres server packages, 
+use the make target 'postgres-server-<OSTYPE>'.  Choose the most appropriate 
+command below based on your operating system.
+
+[source, bash]
+------------------------------------------------------------------------------
+make -f Open-ILS/src/extras/Makefile.install postgres-server-debian-stretch
+make -f Open-ILS/src/extras/Makefile.install postgres-server-debian-jessie
+make -f Open-ILS/src/extras/Makefile.install postgres-server-debian-wheezy
+make -f Open-ILS/src/extras/Makefile.install postgres-server-ubuntu-trusty
+make -f Open-ILS/src/extras/Makefile.install postgres-server-ubuntu-xenial
+------------------------------------------------------------------------------
+
+For a standalone PostgreSQL server, install the following Perl modules for your
+distribution as the *root* Linux account:
+
+.(Debian and Ubuntu) 
+No extra modules required for these distributions.
+
+You need to create a PostgreSQL superuser to create and access the database.
+Issue the following command as the *postgres* Linux account to create a new
+PostgreSQL superuser named `evergreen`. When prompted, enter the new user's
+password:
+
+[source, bash]
+------------------------------------------------------------------------------
+createuser -s -P evergreen
+------------------------------------------------------------------------------
+
+.Enabling connections to the PostgreSQL database
+
+Your PostgreSQL database may be configured by default to prevent connections,
+for example, it might reject attempts to connect via TCP/IP or from other
+servers. To enable TCP/IP connections from localhost, check your `pg_hba.conf`
+file, found in the `/etc/postgresql/` directory on Debian and Ubuntu.
+A simple way to enable TCP/IP
+connections from localhost to all databases with password authentication, which
+would be suitable for a test install of Evergreen on a single server, is to
+ensure the file contains the following entries _before_ any "host ... ident"
+entries:
+
+------------------------------------------------------------------------------
+host    all             all             ::1/128                 md5
+host    all             all             127.0.0.1/32            md5
+------------------------------------------------------------------------------
+
+When you change the `pg_hba.conf` file, you will need to reload PostgreSQL to
+make the changes take effect.  For more information on configuring connectivity
+to PostgreSQL, see
+http://www.postgresql.org/docs/devel/static/auth-pg-hba-conf.html
+
+Creating the Evergreen database and schema
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Once you have created the *evergreen* PostgreSQL account, you also need to
+create the database and schema, and configure your configuration files to point
+at the database server. Issue the following command as the *root* Linux account
+from inside the Evergreen source directory, replacing <user>, <password>,
+<hostname>, <port>, and <dbname> with the appropriate values for your
+PostgreSQL database (where <user> and <password> are for the *evergreen*
+PostgreSQL account you just created), and replace <admin-user> and <admin-pass>
+with the values you want for the *egadmin* Evergreen administrator account:
+
+[source, bash]
+------------------------------------------------------------------------------
+perl Open-ILS/src/support-scripts/eg_db_config --update-config \
+       --service all --create-database --create-schema --create-offline \
+       --user <user> --password <password> --hostname <hostname> --port <port> \
+       --database <dbname> --admin-user <admin-user> --admin-pass <admin-pass>
+------------------------------------------------------------------------------
+
+This creates the database and schema and configures all of the services in
+your `/openils/conf/opensrf.xml` configuration file to point to that database.
+It also creates the configuration files required by the Evergreen `cgi-bin`
+administration scripts, and sets the user name and password for the *egadmin*
+Evergreen administrator account to your requested values.
+
+You can get a complete set of options for `eg_db_config` by passing the
+`--help` parameter.
+
+Loading sample data
+~~~~~~~~~~~~~~~~~~~
+If you add the `--load-all-sample` parameter to the `eg_db_config` command,
+a set of authority and bibliographic records, call numbers, copies, staff
+and regular users, and transactions will be loaded into your target
+database. This sample dataset is commonly referred to as the _concerto_
+sample data, and can be useful for testing out Evergreen functionality and
+for creating problem reports that developers can easily recreate with their
+own copy of the _concerto_ sample data.
+
+Creating the database on a remote server
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+In a production instance of Evergreen, your PostgreSQL server should be
+installed on a dedicated server.
+
+PostgreSQL 9.4 and later
+^^^^^^^^^^^^^^^^^^^^^^^^
+To create the database instance on a remote database server running PostgreSQL
+9.4 or later, simply use the `--create-database` flag on `eg_db_config`.
+
+Starting Evergreen
+------------------
+1. As the *root* Linux account, start the `memcached` and `ejabberd` services
+(if they aren't already running):
++
+[source, bash]
+------------------------------------------------------------------------------
+/etc/init.d/ejabberd start
+/etc/init.d/memcached start
+------------------------------------------------------------------------------
++
+2. As the *opensrf* Linux account, start Evergreen. The `-l` flag in the
+following command is only necessary if you want to force Evergreen to treat the
+hostname as `localhost`; if you configured `opensrf.xml` using the real
+hostname of your machine as returned by `perl -ENet::Domain 'print
+Net::Domain::hostfqdn() . "\n";'`, you should not use the `-l` flag.
++
+[source, bash]
+------------------------------------------------------------------------------
+osrf_control -l --start-all
+------------------------------------------------------------------------------
++
+  ** If you receive the error message `bash: osrf_control: command not found`,
+     then your environment variable `PATH` does not include the `/openils/bin`
+     directory; this should have been set in the *opensrf* Linux account's
+     `.bashrc` configuration file. To manually set the `PATH` variable, edit the
+     configuration file `~/.bashrc` as the *opensrf* Linux account and add the
+     following line:
++
+[source, bash]
+------------------------------------------------------------------------------
+export PATH=$PATH:/openils/bin
+------------------------------------------------------------------------------
++
+3. As the *opensrf* Linux account, generate the Web files needed by the staff
+   client and catalogue and update the organization unit proximity (you need to do
+   this the first time you start Evergreen, and after that each time you change the library org unit configuration.
+):
++
+[source, bash]
+------------------------------------------------------------------------------
+autogen.sh
+------------------------------------------------------------------------------
++
+4. As the *root* Linux account, restart the Apache Web server:
++
+[source, bash]
+------------------------------------------------------------------------------
+/etc/init.d/apache2 restart
+------------------------------------------------------------------------------
++
+If the Apache Web server was running when you started the OpenSRF services, you
+might not be able to successfully log in to the OPAC or staff client until the
+Apache Web server is restarted.
+
+Testing connections to Evergreen
+--------------------------------
+
+Once you have installed and started Evergreen, test your connection to
+Evergreen via `srfsh`. As the *opensrf* Linux account, issue the following
+commands to start `srfsh` and try to log onto the Evergreen server using the
+*egadmin* Evergreen administrator user name and password that you set using the
+`eg_db_config` command:
+
+[source, bash]
+------------------------------------------------------------------------------
+/openils/bin/srfsh
+srfsh% login <admin-user> <admin-pass>
+------------------------------------------------------------------------------
+
+You should see a result like:
+
+    Received Data: "250bf1518c7527a03249858687714376"
+    ------------------------------------
+    Request Completed Successfully
+    Request Time in seconds: 0.045286
+    ------------------------------------
+
+    Received Data: {
+       "ilsevent":0,
+       "textcode":"SUCCESS",
+       "desc":" ",
+       "pid":21616,
+       "stacktrace":"oils_auth.c:304",
+       "payload":{
+          "authtoken":"e5f9827cc0f93b503a1cc66bee6bdd1a",
+          "authtime":420
+       }
+
+    }
+
+    ------------------------------------
+    Request Completed Successfully
+    Request Time in seconds: 1.336568
+    ------------------------------------
+[[install-troubleshooting-1]]
+If this does not work, it's time to do some troubleshooting.
+
+  * As the *opensrf* Linux account, run the `settings-tester.pl` script to see
+    if it finds any system configuration problems. The script is found at
+    `Open-ILS/src/support-scripts/settings-tester.pl` in the Evergreen source
+    tree.
+  * Follow the steps in the http://evergreen-ils.org/dokuwiki/doku.php?id=troubleshooting:checking_for_errors[troubleshooting guide].
+  * If you have faithfully followed the entire set of installation steps
+    listed here, you are probably extremely close to a working system.
+    Gather your configuration files and log files and contact the
+    http://evergreen-ils.org/communicate/mailing-lists/[Evergreen development 
+mailing list] for assistance before making any drastic changes to your system
+    configuration.
+
+Getting help
+------------
+
+Need help installing or using Evergreen? Join the mailing lists at
+http://evergreen-ils.org/communicate/mailing-lists/ or contact us on the Freenode
+IRC network on the #evergreen channel.
+
+License
+-------
+This work is licensed under the Creative Commons Attribution-ShareAlike 3.0
+Unported License. To view a copy of this license, visit
+http://creativecommons.org/licenses/by-sa/3.0/ or send a letter to Creative
+Commons, 444 Castro Street, Suite 900, Mountain View, California, 94041, USA.
diff --git a/configure.ac b/configure.ac
index dacb5a36b7..a7ee6032cc 100644
--- a/configure.ac
+++ b/configure.ac
@@ -20,8 +20,8 @@
 
 export PATH=${PATH}:/usr/sbin
 AC_PREREQ(2.61)
-AC_INIT(Open-ILS, trunk, open-ils-dev at list.georgialibraries.org)
-AM_INIT_AUTOMAKE([OpenILS], [trunk])
+AC_INIT(Open-ILS, 3.1.11, open-ils-dev at list.georgialibraries.org)
+AM_INIT_AUTOMAKE([OpenILS], [3.1.11])
 AC_REVISION($Revision: 0.1 $)
 AC_CONFIG_SRCDIR([configure.ac])
 AC_CONFIG_SUBDIRS([Open-ILS/xul/staff_client/external/libmar])

commit 91ee83cc0d41e4584225e7385baeab9852d652d3
Author: blake <blake at mobiusconsortium.org>
Date:   Tue Mar 26 15:16:26 2019 -0500

    fixed upgrade script naming convention
    
    Signed-off-by: blake <blake at mobiusconsortium.org>

diff --git a/docs/installation/server_upgrade.adoc b/docs/installation/server_upgrade.adoc
index 72f4cf6b56..0f8731003d 100644
--- a/docs/installation/server_upgrade.adoc
+++ b/docs/installation/server_upgrade.adoc
@@ -7,7 +7,7 @@ Software Prerequisites
 ~~~~~~~~~~~~~~~~~~~~~~
 
   * **PostgreSQL**: The minimum supported version is 9.4.
-  * **Linux**: Evergreen 3.1.1 has been tested on Debian Stretch (9.0),
+  * **Linux**: Evergreen 3.1.11 has been tested on Debian Stretch (9.0),
     Debian Jessie (8.0), Debian Wheezy (7.0), Ubuntu Xenial Xerus (16.04),
     and Ubuntu Trusty Tahr (14.04).
     If you are running an older version of these distributions, you may want
@@ -43,12 +43,12 @@ osrf_control --localhost --stop-all
  .. Back up the /openils directory.
 . Upgrade OpenSRF. Download and install the latest version of OpenSRF from
 the https://evergreen-ils.org/opensrf-downloads/[OpenSRF download page].
-. As the *opensrf* user, download and extract Evergreen 3.1.1:
+. As the *opensrf* user, download and extract Evergreen 3.1.11:
 +
 [source, bash]
 -----------------------------------------------
-wget https://evergreen-ils.org/downloads/Evergreen-ILS-3.1.1.tar.gz
-tar xzf Evergreen-ILS-3.1.1.tar.gz
+wget https://evergreen-ils.org/downloads/Evergreen-ILS-3.1.11.tar.gz
+tar xzf Evergreen-ILS-3.1.11.tar.gz
 -----------------------------------------------
 +
 [NOTE]
@@ -58,7 +58,7 @@ For the latest edition of Evergreen, check the https://evergreen-ils.org/egdownl
 +
 [source, bash]
 ---------------------------------------------
-cd /home/opensrf/Evergreen-ILS-3.1.1
+cd /home/opensrf/Evergreen-ILS-3.1.11
 ---------------------------------------------
 +
 On the next command, replace `[distribution]` with one of these values for your
@@ -82,7 +82,7 @@ make -f Open-ILS/src/extras/Makefile.install [distribution]
 +
 [source, bash]
 ------------------------------------------------------------
-cd /home/opensrf/Evergreen-ILS-3.1.1
+cd /home/opensrf/Evergreen-ILS-3.1.11
 PATH=/openils/bin:$PATH ./configure --prefix=/openils --sysconfdir=/openils/conf
 make
 ------------------------------------------------------------
@@ -93,8 +93,8 @@ These instructions assume that you have also installed OpenSRF under /openils/.
 +
 [source, bash]
 ------------------------------------------------------------
-cd /home/opensrf/Evergreen-ILS-3.1.1
-make STAFF_CLIENT_STAMP_ID=rel_3_1_1 install
+cd /home/opensrf/Evergreen-ILS-3.1.11
+make STAFF_CLIENT_STAMP_ID=rel_3_1_11 install
 ------------------------------------------------------------
 +
 . As the *root* user, change all files to be owned by the opensrf user and group:
@@ -110,7 +110,7 @@ chown -R opensrf:opensrf /openils
 -----------------------------------------------------------
 cd /openils/var/web/xul/
 rm server
-ln -sf rel_3_1_1/server server
+ln -sf rel_3_1_11/server server
 ----------------------------------------------------------
 +
 . As the *opensrf* user, update opensrf_core.xml and opensrf.xml by copying the
@@ -130,7 +130,7 @@ Copying these configuration files will remove any customizations you have made t
 +
 [source, bash]
 -------------------------------------------------------------------------
-cd /home/opensrf/Evergreen-ILS-3.1.1
+cd /home/opensrf/Evergreen-ILS-3.1.11
 perl Open-ILS/src/support-scripts/eg_db_config --update-config --service all \
 --create-offline --database evergreen --host localhost --user evergreen --password evergreen
 -------------------------------------------------------------------------
@@ -154,21 +154,21 @@ The diff command can be used to show the differences between the distribution ve
 +
 [source, bash]
 ----------------------------------------------------------
-cp /home/opensrf/Evergreen-ILS-3.1.1/Open-ILS/examples/apache/eg_startup /etc/apache2/eg_startup
+cp /home/opensrf/Evergreen-ILS-3.1.11/Open-ILS/examples/apache/eg_startup /etc/apache2/eg_startup
 ----------------------------------------------------------
 +
 .. Update /etc/apache2/eg_vhost.conf by copying the example from Open-ILS/examples/apache/eg_vhost.conf.
 +
 [source, bash]
 ----------------------------------------------------------
-cp /home/opensrf/Evergreen-ILS-3.1.1/Open-ILS/examples/apache/eg_vhost.conf /etc/apache2/eg_vhost.conf
+cp /home/opensrf/Evergreen-ILS-3.1.11/Open-ILS/examples/apache/eg_vhost.conf /etc/apache2/eg_vhost.conf
 ----------------------------------------------------------
 +
 .. Update /etc/apache2/sites-available/eg.conf by copying the example from Open-ILS/examples/apache/eg.conf.
 +
 [source, bash]
 ----------------------------------------------------------
-cp /home/opensrf/Evergreen-ILS-3.1.1/Open-ILS/examples/apache/eg.conf /etc/apache2/sites-available/eg.conf
+cp /home/opensrf/Evergreen-ILS-3.1.11/Open-ILS/examples/apache/eg.conf /etc/apache2/sites-available/eg.conf
 ----------------------------------------------------------
 
 Upgrade the Evergreen database schema
@@ -225,8 +225,18 @@ as a user with the ability to connect to the database server.
 
 [source, bash]
 ----------------------------------------------------------
-cd /home/opensrf/Evergreen-ILS-3.1.1/Open-ILS/src/sql/Pg
+cd /home/opensrf/Evergreen-ILS-3.1.11/Open-ILS/src/sql/Pg
 psql -U evergreen -h localhost -f version-upgrade/3.1.0-3.1.1-upgrade-db.sql evergreen
+psql -U evergreen -h localhost -f version-upgrade/3.1.1-3.1.2-upgrade-db.sql evergreen
+psql -U evergreen -h localhost -f version-upgrade/3.1.2-3.1.3-upgrade-db.sql evergreen
+psql -U evergreen -h localhost -f version-upgrade/3.1.3-3.1.4-upgrade-db.sql evergreen
+psql -U evergreen -h localhost -f version-upgrade/3.1.4-3.1.5-upgrade-db.sql evergreen
+psql -U evergreen -h localhost -f version-upgrade/3.1.5-3.1.6-upgrade-db.sql evergreen
+psql -U evergreen -h localhost -f version-upgrade/3.1.6-3.1.7-upgrade-db.sql evergreen
+psql -U evergreen -h localhost -f version-upgrade/3.1.7-3.1.8-upgrade-db.sql evergreen
+psql -U evergreen -h localhost -f version-upgrade/3.1.8-3.1.9-upgrade-db.sql evergreen
+psql -U evergreen -h localhost -f version-upgrade/3.1.9-3.1.10-upgrade-db.sql evergreen
+psql -U evergreen -h localhost -f version-upgrade/3.1.10-3.1.11-upgrade-db.sql evergreen
 ----------------------------------------------------------
 
 [TIP]

commit 54b4b915503838c8def8f8b66ce5e370958fd139
Author: blake <blake at mobiusconsortium.org>
Date:   Tue Mar 26 15:13:47 2019 -0500

    bumping Perl version string for 3.1.11
    
    Signed-off-by: blake <blake at mobiusconsortium.org>

diff --git a/Open-ILS/src/perlmods/lib/OpenILS.pm b/Open-ILS/src/perlmods/lib/OpenILS.pm
index d7235ce61a..5a26b50cb6 100644
--- a/Open-ILS/src/perlmods/lib/OpenILS.pm
+++ b/Open-ILS/src/perlmods/lib/OpenILS.pm
@@ -6,6 +6,6 @@ OpenILS - Client and server support for the Evergreen open source library system
 
 =cut
 
-our $VERSION = '2.4';
+our $VERSION = '3.0111';
 
 1;

-----------------------------------------------------------------------


hooks/post-receive
-- 
Evergreen ILS


More information about the open-ils-commits mailing list