[open-ils-commits] [GIT] Evergreen ILS branch tags/rel_2_7_7 created. f530d7b745dd287191c536dd4e33e507b76f8cfc

Evergreen Git git at git.evergreen-ils.org
Wed Aug 19 16:53:29 EDT 2015


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_2_7_7 has been created
        at  f530d7b745dd287191c536dd4e33e507b76f8cfc (commit)

- Log -----------------------------------------------------------------
commit f530d7b745dd287191c536dd4e33e507b76f8cfc
Author: Ben Shum <bshum at biblio.org>
Date:   Wed Aug 19 16:27:17 2015 -0400

    Bumping version numbers, adding Upgrade Script and Changelog
    
    Signed-off-by: Ben Shum <bshum at biblio.org>

diff --git a/ChangeLog b/ChangeLog
index 1f72b2c..c9d9ed0 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,660 @@
-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 e49f8f3a4520c790941a5271148dd9f485896020
+Author: Ben Shum <bshum at biblio.org>
+Date:   Wed Feb 4 14:42:16 2015 -0500
+
+    Bump OpenILS.pm version to 2.7.7
+    
+    Signed-off-by: Ben Shum <bshum at biblio.org>
+
+1	1	Open-ILS/src/perlmods/lib/OpenILS.pm
+
+commit 9076d045ce0dc64b5c66eefddb336d8050a3923c
+Author: Dan Wells <dbw2 at calvin.edu>
+Date:   Thu Jan 16 15:07:40 2014 -0500
+
+    Changes to smooth out make_release
+    
+    1) Make the fake 'HeadURL' into a URL which works with our web repo.
+    Note that this has 'tags/' hardcoded in, so it only works with true
+    release branches (e.g. rel_x_y_z) not "working" branches
+    (e.g. rel_x_y).
+    
+    2) Change range selector when building log to better exclude commits
+    from previous releases.
+    
+    Signed-off-by: Dan Wells <dbw2 at calvin.edu>
+    Signed-off-by: Ben Shum <bshum at biblio.org>
+
+2	2	build/tools/make_release
+
+commit 90d022249201a37e277e960e33433d0d9196f9bb
+Author: Jason Stephenson <jstephenson at mvlc.org>
+Date:   Wed Aug 19 15:52:47 2015 -0400
+
+    Fix mis-stamping of 0940.schema.vlist_freq.sql.
+    
+    I typed the wrong number in the upgrade script.
+    
+    Signed-off-by: Jason Stephenson <jstephenson at mvlc.org>
+
+1	1	Open-ILS/src/sql/Pg/upgrade/0940.schema.vlist_freq.sql
+
+commit 9a9b062a7ec1b4762838850935af59d581d75d41
+Author: Bill Erickson <berickxx at gmail.com>
+Date:   Wed May 20 12:24:13 2015 -0400
+
+    LP#1457111 eg-pbx-allocator uses modern rpc api name
+    
+    Replace "-" with "__" in XML-RPC method name for compatibility with
+    modern Perl XML-RPC libraries.
+    
+    See also https://bugs.launchpad.net/bugs/1050596
+    
+    Signed-off-by: Bill Erickson <berickxx at gmail.com>
+    Signed-off-by: Ben Shum <bshum at biblio.org>
+
+1	1	Open-ILS/src/asterisk/pbx-daemon/eg-pbx-allocator.pl
+
+commit 813541a513bd8d8ecc2594350d28e1e1acaa06dc
+Author: Jason Stephenson <jstephenson at mvlc.org>
+Date:   Wed Aug 19 15:01:10 2015 -0400
+
+    LP 1438136: Stamping upgrade script.
+    
+    Signed-off-by: Jason Stephenson <jstephenson at mvlc.org>
+    Signed-off-by: Ben Shum <bshum at biblio.org>
+    
+    Conflicts:
+    	Open-ILS/src/sql/Pg/002.schema.config.sql
+
+1	1	Open-ILS/src/sql/Pg/002.schema.config.sql
+37	0	Open-ILS/src/sql/Pg/upgrade/0940.schema.vlist_freq.sql
+0	37	Open-ILS/src/sql/Pg/upgrade/XXXX.schema.vlist_freq.sql
+ create mode 100644 Open-ILS/src/sql/Pg/upgrade/0940.schema.vlist_freq.sql
+ delete mode 100644 Open-ILS/src/sql/Pg/upgrade/XXXX.schema.vlist_freq.sql
+
+commit 5fbf8f14b447bd5708e77b372cdbb5945b1aa945
+Author: Mike Rylander <mrylander at gmail.com>
+Date:   Sun Apr 26 12:29:18 2015 -0400
+
+    LP#1438136: Make upgrade script forgiving
+    
+    If the functions already exist, that's OK.
+    
+    Signed-off-by: Mike Rylander <mrylander at gmail.com>
+    Signed-off-by: Jason Boyer <jboyer at library.in.gov>
+    Signed-off-by: Chris Sharp <csharp at georgialibraries.org>
+    Signed-off-by: Jason Stephenson <jstephenson at mvlc.org>
+    Signed-off-by: Ben Shum <bshum at biblio.org>
+
+1	1	Open-ILS/src/sql/Pg/300.schema.staged_search.sql
+1	1	Open-ILS/src/sql/Pg/upgrade/XXXX.schema.vlist_freq.sql
+
+commit 451d2ec08645735d0bbcac660bbd6a39eb4d2bb0
+Author: Mike Rylander <mrylander at gmail.com>
+Date:   Fri Apr 17 12:37:06 2015 -0400
+
+    LP#1438136: Protect PG < 9.2 from our stats probe
+    
+    Signed-off-by: Mike Rylander <mrylander at gmail.com>
+    Signed-off-by: Chris Sharp <csharp at georgialibraries.org>
+    Signed-off-by: Jason Stephenson <jstephenson at mvlc.org>
+    Signed-off-by: Ben Shum <bshum at biblio.org>
+
+16	6	Open-ILS/src/perlmods/lib/OpenILS/Application/Storage/Driver/Pg/QueryParser.pm
+1	0	Open-ILS/src/sql/Pg/300.schema.staged_search.sql
+1	0	Open-ILS/src/sql/Pg/upgrade/XXXX.schema.vlist_freq.sql
+
+commit fbed5b92f1ffa5cad20e56388e0bdf2c3401abb5
+Author: Mike Rylander <mrylander at gmail.com>
+Date:   Thu Apr 16 17:39:49 2015 -0400
+
+    LP#1438136: Update baseline schema files
+    
+    Signed-off-by: Mike Rylander <mrylander at gmail.com>
+    Signed-off-by: Chris Sharp <csharp at georgialibraries.org>
+    Signed-off-by: Jason Stephenson <jstephenson at mvlc.org>
+    Signed-off-by: Ben Shum <bshum at biblio.org>
+
+30	0	Open-ILS/src/sql/Pg/300.schema.staged_search.sql
+
+commit 50e76bbfdbd11ed49156dec36a42884fb6249e2d
+Author: Mike Rylander <mrylander at gmail.com>
+Date:   Wed Apr 15 12:10:27 2015 -0400
+
+    LP#1438136: Teach QP to be smart about attribute selectivity
+    
+    Signed-off-by: Mike Rylander <mrylander at gmail.com>
+    Signed-off-by: Chris Sharp <csharp at georgialibraries.org>
+    Signed-off-by: Jason Stephenson <jstephenson at mvlc.org>
+    Signed-off-by: Ben Shum <bshum at biblio.org>
+
+28	12	Open-ILS/src/perlmods/lib/OpenILS/Application/Storage/Driver/Pg/QueryParser.pm
+36	0	Open-ILS/src/sql/Pg/upgrade/XXXX.schema.vlist_freq.sql
+ create mode 100644 Open-ILS/src/sql/Pg/upgrade/XXXX.schema.vlist_freq.sql
+
+commit 88ddb52a04a57f185c7f47025941ca905e386b81
+Author: Ben Shum <bshum at biblio.org>
+Date:   Wed Aug 19 15:06:08 2015 -0400
+
+    LP#1442796: (backport) Stamping upgrade script for xpath-based record attributes
+    
+    Signed-off-by: Ben Shum <bshum at biblio.org>
+
+1	1	Open-ILS/src/sql/Pg/002.schema.config.sql
+221	0	Open-ILS/src/sql/Pg/upgrade/0936.schema.fix_ingest_of_xpath_based_attrs.sql
+0	221	Open-ILS/src/sql/Pg/upgrade/lp1442796_1of1.schema.fix_ingest_of_xpath_based_attrs.sql
+ create mode 100644 Open-ILS/src/sql/Pg/upgrade/0936.schema.fix_ingest_of_xpath_based_attrs.sql
+ delete mode 100644 Open-ILS/src/sql/Pg/upgrade/lp1442796_1of1.schema.fix_ingest_of_xpath_based_attrs.sql
+
+commit 308e72f8a47d6657f1b9cc0c488e58e844dfa61c
+Author: Galen Charlton <gmc at esilibrary.com>
+Date:   Fri Apr 10 20:56:17 2015 +0000
+
+    LP#1442796: make XPath-based record attribute definitions work
+    
+    Record attribue definitions that use XPath to extract their values
+    could break ingest; this patch fixes that.
+    
+    Signed-off-by: Galen Charlton <gmc at esilibrary.com>
+    Signed-off-by: Jason Stephenson <jstephenson at mvlc.org>
+    Signed-off-by: Ben Shum <bshum at biblio.org>
+
+1	1	Open-ILS/src/sql/Pg/030.schema.metabib.sql
+31	0	Open-ILS/src/sql/Pg/t/regress/lp1442796_record_attr_using_xpath.pg
+221	0	Open-ILS/src/sql/Pg/upgrade/lp1442796_1of1.schema.fix_ingest_of_xpath_based_attrs.sql
+ create mode 100644 Open-ILS/src/sql/Pg/t/regress/lp1442796_record_attr_using_xpath.pg
+ create mode 100644 Open-ILS/src/sql/Pg/upgrade/lp1442796_1of1.schema.fix_ingest_of_xpath_based_attrs.sql
+
+commit 45dcc8299cb5dc807c443d70c2a3e33a5bb8e24e
+Author: Bill Erickson <berickxx at gmail.com>
+Date:   Wed Aug 19 11:08:48 2015 -0400
+
+    LP#1240119 safe auth activity live test
+    
+    Signed-off-by: Bill Erickson <berickxx at gmail.com>
+    Signed-off-by: Jason Stephenson <jstephenson at mvlc.org>
+
+43	0	Open-ILS/src/perlmods/live_t/11-lp1240119-safe-token-activity.t
+ create mode 100644 Open-ILS/src/perlmods/live_t/11-lp1240119-safe-token-activity.t
+
+commit a5c030f94bfbc2f63fb59921dc9fda9da2875305
+Author: Bill Erickson <berick at esilibrary.com>
+Date:   Mon Aug 19 09:24:17 2013 -0400
+
+    LP#1240119 Safe auth token activity logging
+    
+    Expand safe token generation to include user ID in the cached data,
+    which can be retrieved later for activity logging.  Add activity logging
+    directly to the open-ils.actor.safe_token.home_lib.shortname API.
+    
+    Signed-off-by: Bill Erickson <berickxx at gmail.com>
+    Signed-off-by: Josh Stompro <stomproj at larl.org>
+    Signed-off-by: Jason Stephenson <jstephenson at mvlc.org>
+
+14	8	Open-ILS/src/perlmods/lib/OpenILS/Application/Actor.pm
+
+commit c99a45667aeec97a0a0f06444dbd5ab50876ebd6
+Author: Matt Berowski <berowskim at larl.org>
+Date:   Tue Aug 18 09:17:26 2015 -0500
+
+    Documentation typo fixes
+     - Corrected effect to affect
+     - Removed double the
+     - Spelling correction Preceeded to Preceded
+     - Corrected Spelling error self serve to self-serve
+     - Small typo in staff client receipt template - hold slip 2 docs.
+    
+    Matt's first commit to evergreen docs!
+    
+    Signed-off-by: Matt Berowski <berowskim at larl.org>
+    Signed-off-by: Josh Stompro <stomproj at larl.org>
+
+2	2	docs/admin/sip_server.txt
+1	1	docs/admin/workstation_admin_receipt_template_editor.txt
+1	1	docs/admin_initial_setup/migrating_patron_data.txt
+1	1	docs/admin_initial_setup/ordering_materials.txt
+
+commit 1ea17671155f447c00cfab12d849f08c8be4c310
+Author: Bill Erickson <berickxx at gmail.com>
+Date:   Tue Jun 9 17:59:42 2015 -0400
+
+    LP#1463590 Loosen read access to distribution formulas
+    
+    Make it possible for ACQ staff that have the CREATE_PURCHASE_ORDER
+    permission to view distribution formulas (via PCRUD) , making it
+    possible to use them from the PO batch update operation.
+    
+    Signed-off-by: Bill Erickson <berickxx at gmail.com>
+    Signed-off-by: Ben Shum <bshum at biblio.org>
+
+1	1	Open-ILS/examples/fm_IDL.xml
+
+commit 55fbf4e3e3bc7921b8aaa3ad084c9c89f9bf7190
+Author: Bill Erickson <berickxx at gmail.com>
+Date:   Mon Mar 30 11:19:55 2015 -0400
+
+    LP#1438252 SIP honor floating copy checkin location
+    
+    Report the new value for a copy's circ_lib when it's a floating copy
+    whose circ_lib is modified during checkin.
+    
+    This affects the AQ field of the SIP checkin (10) message.
+    
+    Signed-off-by: Bill Erickson <berickxx at gmail.com>
+    Signed-off-by: Ben Shum <bshum at biblio.org>
+
+14	0	Open-ILS/src/perlmods/lib/OpenILS/SIP/Transaction/Checkin.pm
+
+commit 0a294d7453e864e8c6c25ffc8cd9f7884e49e357
+Author: Dan Scott <dscott at laurentian.ca>
+Date:   Thu Mar 12 16:06:16 2015 -0400
+
+    LP1431541: SRU UTF8 encoding issues
+    
+    The SuperCat SRU service was encoding MARCXML using an encode_utf8()
+    call that ended up corrupting non-ASCII characters. In addition, the
+    HTTP header charset was not being set, meaning that the return header
+    would default to ISO-8859-1.
+    
+    Signed-off-by: Dan Scott <dscott at laurentian.ca>
+    Signed-off-by: Ben Shum <bshum at biblio.org>
+
+3	4	Open-ILS/src/perlmods/lib/OpenILS/WWW/SuperCat.pm
+
+commit 1ee6d382348c5849b3ba93eb0f18d083b11e4b6d
+Author: Ben Shum <bshum at biblio.org>
+Date:   Tue Aug 18 23:06:39 2015 -0400
+
+    LP#1419172: Stamping upgrade script for optimizing full circ count
+    
+    Signed-off-by: Ben Shum <bshum at biblio.org>
+
+1	1	Open-ILS/src/sql/Pg/002.schema.config.sql
+12	0	Open-ILS/src/sql/Pg/upgrade/0927.schema.optimize_full_circ_count.sql
+0	12	Open-ILS/src/sql/Pg/upgrade/XXXX.schema.optimize_full_circ_count.sql
+ create mode 100644 Open-ILS/src/sql/Pg/upgrade/0927.schema.optimize_full_circ_count.sql
+ delete mode 100644 Open-ILS/src/sql/Pg/upgrade/XXXX.schema.optimize_full_circ_count.sql
+
+commit de63ff6ad6960ae26348e4283dc83a89237e71b4
+Author: Dan Wells <dbw2 at calvin.edu>
+Date:   Thu May 7 16:43:16 2015 -0400
+
+    LP#1419172 Optimize full_circ_count view to avoid seq scans
+    
+    As reported by Chris Sharp:
+    
+    "The reporter.classic_item_list view was modified in bug 1208572 to use
+    extend_reporter.full_circ_count to provide the use count for each item.
+    Unfortunately, this change was found to be the cause of consistently
+    long-running (2+ hours) reports queries in PINES as its query plan on
+    our PostgreSQL 9.3 server was resulting in sequential scans of both the
+    circulation and aged_circulation tables."
+    
+    This commit restructures the view to avoid JOINs, and is in production
+    at PINES with noted improvement.
+    
+    Signed-off-by: Dan Wells <dbw2 at calvin.edu>
+    Signed-off-by: Chris Sharp <csharp at georgialibraries.org>
+    Signed-off-by: Ben Shum <bshum at biblio.org>
+
+5	6	Open-ILS/src/sql/Pg/extend-reporter.sql
+12	0	Open-ILS/src/sql/Pg/upgrade/XXXX.schema.optimize_full_circ_count.sql
+ create mode 100644 Open-ILS/src/sql/Pg/upgrade/XXXX.schema.optimize_full_circ_count.sql
+
+commit 2fd6c8239bacffdd2d57f64972c86f273b00fbb9
+Author: Thomas Berezansky <tsbere at mvlc.org>
+Date:   Wed Apr 15 10:48:03 2015 -0400
+
+    LP#1444514: Have amnesty mode override backdate for voiding
+    
+    Otherwise you get amnesty notes on just backdate voiding.
+    
+    Signed-off-by: Thomas Berezansky <tsbere at mvlc.org>
+    Signed-off-by: Michele Morgan <mmorgan at noblenet.org>
+    Signed-off-by: Ben Shum <bshum at biblio.org>
+
+1	1	Open-ILS/src/perlmods/lib/OpenILS/Application/Circ/Circulate.pm
+
+commit f6a60e9c4d2c9512a7c93c6f6ab1ae6590a63931
+Author: Bill Erickson <berickxx at gmail.com>
+Date:   Wed Aug 5 17:41:51 2015 -0400
+
+    LP#1481036 Ignore future backdates live test
+    
+    Signed-off-by: Bill Erickson <berickxx at gmail.com>
+    Signed-off-by: Ben Shum <bshum at biblio.org>
+
+36	0	Open-ILS/src/perlmods/live_t/10-lp1481036-future-backdate.t
+ create mode 100644 Open-ILS/src/perlmods/live_t/10-lp1481036-future-backdate.t
+
+commit fe2947c4b6e6e29dade91de63da2976bf4260326
+Author: Bill Erickson <berickxx at gmail.com>
+Date:   Mon Aug 3 14:03:52 2015 -0400
+
+    LP#1481036 Ignore future backdates (part 2).
+    
+    Ensure that future backdates are successully ignored in the checkin API.
+    The logic was in place to do this, but it failed to clear the values,
+    resulting in using the future backdate anyway.
+    
+    Signed-off-by: Bill Erickson <berickxx at gmail.com>
+    Signed-off-by: Ben Shum <bshum at biblio.org>
+
+5	3	Open-ILS/src/perlmods/lib/OpenILS/Application/Circ/Circulate.pm
+
+commit fc48994d3a0afb7ff92db55c0e6ec0d29a93a797
+Author: Ben Shum <bshum at biblio.org>
+Date:   Tue Aug 18 22:30:13 2015 -0400
+
+    LP#1204671: Stamping upgrade script for fund tag propagation
+    
+    Signed-off-by: Ben Shum <bshum at biblio.org>
+
+1	1	Open-ILS/src/sql/Pg/002.schema.config.sql
+319	0	Open-ILS/src/sql/Pg/upgrade/0926.fund_tags_persist.sql
+0	317	Open-ILS/src/sql/Pg/upgrade/XXXX.fund_tags_persist.sql
+ create mode 100644 Open-ILS/src/sql/Pg/upgrade/0926.fund_tags_persist.sql
+ delete mode 100644 Open-ILS/src/sql/Pg/upgrade/XXXX.fund_tags_persist.sql
+
+commit 2366b20a791397148f48ea1aafd5d06d84bb2cff
+Author: Dan Pearl <dpearl at cwmars.org>
+Date:   Fri Jan 9 14:23:58 2015 -0500
+
+    LP#1204671  Allow fund tags to remain attached to new fund during end-of-year propagation
+    or rollower.
+    
+    Signed-off-by: Dan Pearl dpearl at cwmars.org
+    Signed-off-by: Kathy Lussier <klussier at masslnc.org>
+    Signed-off-by: Ben Shum <bshum at biblio.org>
+
+28	0	Open-ILS/src/sql/Pg/200.schema.acq.sql
+317	0	Open-ILS/src/sql/Pg/upgrade/XXXX.fund_tags_persist.sql
+4	0	docs/RELEASE_NOTES_NEXT/Acquisitions/Fund_Tag_Preservation.txt
+ create mode 100644 Open-ILS/src/sql/Pg/upgrade/XXXX.fund_tags_persist.sql
+ create mode 100644 docs/RELEASE_NOTES_NEXT/Acquisitions/Fund_Tag_Preservation.txt
+
+commit bd103005ea3f1e6734ac367d123cd1d55aa1d9e0
+Author: Ben Shum <bshum at biblio.org>
+Date:   Tue Aug 18 22:22:42 2015 -0400
+
+    LP#1450561: Stamping upgrade script for library settings editor history limits
+    
+    Signed-off-by: Ben Shum <bshum at biblio.org>
+
+1	1	Open-ILS/src/sql/Pg/002.schema.config.sql
+26	0	Open-ILS/src/sql/Pg/upgrade/0925.limit_logs_oust-create.sql
+0	26	Open-ILS/src/sql/Pg/upgrade/XXXX.lmit_logs_oust-create.sql
+ create mode 100644 Open-ILS/src/sql/Pg/upgrade/0925.limit_logs_oust-create.sql
+ delete mode 100644 Open-ILS/src/sql/Pg/upgrade/XXXX.lmit_logs_oust-create.sql
+
+commit 618910ec115d47111d68c2e7bd3c409320265f9a
+Author: Jason Stephenson <jstephenson at mvlc.org>
+Date:   Fri May 1 15:33:05 2015 -0400
+
+    LP 1450561: Restore org. unit settings history limit function and trigger
+    
+    The evergreen.limit_oustl function and the limit_log_oustl trigger on
+    config.org_unit_setting_type_log were missed in the upgrade scripts
+    when these were added to the base schema.  This commit adds them and a
+    pgtap test to check that they exist after.
+    
+    This commit also alters the body of the limit_oustl function to take into
+    account of the org unit when deleting entries from the log table.  This
+    change allows multiple consortium members to have their own five history
+    entries.  The original code only kept the last five entries of any given
+    setting across the whole installation.
+    
+    Signed-off-by: Jason Stephenson <jstephenson at mvlc.org>
+    Signed-off-by: Ben Shum <bshum at biblio.org>
+
+3	3	Open-ILS/src/sql/Pg/002.schema.config.sql
+12	0	Open-ILS/src/sql/Pg/t/lp1450561-limit_oustl.pg
+26	0	Open-ILS/src/sql/Pg/upgrade/XXXX.lmit_logs_oust-create.sql
+ create mode 100644 Open-ILS/src/sql/Pg/t/lp1450561-limit_oustl.pg
+ create mode 100644 Open-ILS/src/sql/Pg/upgrade/XXXX.lmit_logs_oust-create.sql
+
+commit a3f27f0b54c9222c2eec692a0972f9144cbb555e
+Author: Ben Shum <bshum at biblio.org>
+Date:   Tue Aug 18 22:14:26 2015 -0400
+
+    LP#1112723: stamping upgrade script for unapi copy visibility
+    
+    Signed-off-by: Ben Shum <bshum at biblio.org>
+    
+    Conflicts:
+    	Open-ILS/src/sql/Pg/002.schema.config.sql
+
+1	1	Open-ILS/src/sql/Pg/002.schema.config.sql
+209	0	Open-ILS/src/sql/Pg/upgrade/0924.schema.rank_cp_visibility.sql
+0	209	Open-ILS/src/sql/Pg/upgrade/XXXX.schema.rank_cp_visibility.sql
+ create mode 100644 Open-ILS/src/sql/Pg/upgrade/0924.schema.rank_cp_visibility.sql
+ delete mode 100644 Open-ILS/src/sql/Pg/upgrade/XXXX.schema.rank_cp_visibility.sql
+
+commit 11eade3939fcea1fd5c8f1184fcba4d70dc81f65
+Author: Dan Wells <dbw2 at calvin.edu>
+Date:   Thu Mar 7 08:30:02 2013 -0500
+
+    LP#1112723 Consider copy-level opac_visible flag when ranking
+    
+    The current unAPI calls consider opac_visibility of the status,
+    but not the copy itself. If you have a record with copies set to
+    opac_visible = false, you might see few or no copies in the OPAC
+    results list, as these invisible copies may be the first five
+    returned, and they then crowd out the visible copies.
+    
+    Signed-off-by: Dan Wells <dbw2 at calvin.edu>
+    Signed-off-by: Josh Stompro <stomproj at larl.org>
+    Signed-off-by: Ben Shum <bshum at biblio.org>
+
+2	2	Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Record.pm
+32	9	Open-ILS/src/sql/Pg/990.schema.unapi.sql
+209	0	Open-ILS/src/sql/Pg/upgrade/XXXX.schema.rank_cp_visibility.sql
+ create mode 100644 Open-ILS/src/sql/Pg/upgrade/XXXX.schema.rank_cp_visibility.sql
+
+commit 44bc436649eefd8c23d90fc5ca6bb1a9f1a79ed7
+Author: Bill Erickson <berickxx at gmail.com>
+Date:   Tue Jul 28 10:39:57 2015 -0400
+
+    LP#1478997 Items out display sort overdues to top
+    
+    Sort overdue items to the top of the patron items out display in the XUL
+    client, consistent with pre-2.5 behavior.
+    
+    Signed-off-by: Bill Erickson <berickxx at gmail.com>
+    Signed-off-by: Ben Shum <bshum at biblio.org>
+
+1	1	Open-ILS/xul/staff_client/server/patron/items.js
+
+commit cbb8076af25f8e7c3fe30ba4b3f88208635e5122
+Author: Josh Stompro <stomproj at larl.org>
+Date:   Sat Jun 13 06:38:10 2015 -0500
+
+    LP#1463097 - eg_db_config.in help text fix
+    
+    Two of the descriptions of which config files are used were transposed.
+    
+    Signed-off-by: Josh Stompro <stomproj at larl.org>
+    Signed-off-by: Galen Charlton <gmc at esilibrary.com>
+
+2	2	Open-ILS/src/support-scripts/eg_db_config.in
+
+commit 5fe29e98f5a9f4d0851eab365dbbaa65f5133b01
+Author: Josh Stompro <stomproj at larl.org>
+Date:   Fri Jul 24 14:20:21 2015 -0500
+
+    LP#1478123: fix leak of file descriptors by Apache workers
+    
+    Apache backends handling TPAC requests and making requests
+    of the added content handler were not properly closing
+    their sockets. This patch adds a close() after the shutdown()
+    to plug the leak.
+    
+    Signed-off-by: Josh Stompro <stomproj at larl.org>
+    Signed-off-by: Galen Charlton <gmc at esilibrary.com>
+
+4	1	Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Record.pm
+
+commit 52f7adbd1fbe600d24be8b9f2795244cbf81d435
+Author: Jason Stephenson <jstephenson at mvlc.org>
+Date:   Thu Aug 13 15:22:33 2015 -0400
+
+    LP 1484655: ftp://ftp.mozilla.org moved to http://archive.mozilla.org
+    
+    This commit changes the XULRUNNER_URL in Open-ILS/xul/staff_client/
+    Makefile.am from using ftp to talk to ftp.mozilla.org to using http
+    with archive.mozilla.org.  This is necessary because Mozilla.org
+    have apparently declared the former to be closed and the latter to
+    be the canonical location for downloads.
+    
+    Signed-off-by: Jason Stephenson <jstephenson at mvlc.org>
+    Signed-off-by: Kathy Lussier <klussier at masslnc.org>
+
+1	1	Open-ILS/xul/staff_client/Makefile.am
+
+commit 9a8fca0714155d131b32746475e76b9a8bf33b25
+Author: Bill Ott <bott at grpl.org>
+Date:   Tue Jul 28 16:05:31 2015 -0400
+
+    LP#1394989: Do not include deleted users when retrieving for Collections
+    
+    As a side effect of discovering that users with no cards were being retrieved
+    as part of the Collections API calls, those users ended up being mostly
+    made up of deleted users (merged with an actual lead record, etc.)
+    
+    This patch contribued by Bill Ott changes the retrieval so that it skips
+    over those deleted users.
+    
+    Signed-off-by: Bill Ott <bott at grpl.org>
+    Signed-off-by: Ben Shum <bshum at biblio.org>
+
+2	0	Open-ILS/src/perlmods/lib/OpenILS/Application/Storage/Publisher/money.pm
+
+commit d16ee8734748bf484492a82e1bc6db4047f57fe4
+Author: Michael Peters <mpeters at emeralddata.net>
+Date:   Thu Nov 20 17:41:44 2014 -0500
+
+    LP#1394989: Make users_of_interest test for defined actor.usr.card values
+    
+    If the open-ils.collections.users_of_interest API encounters a patron that
+    has a null "card" value in actor.usr the API will crash with an error like:
+    
+    Received Exception:
+    Name: osrfMethodException
+    Status:  *** Call to [open-ils.collections.users_of_interest.retrieve] failed for session [1416515351.333446.1416515351406], thread trace [1]:
+    Can't call method "barcode" on an undefined value at /usr/local/share/perl/5.14.2/OpenILS/Application/Collections.pm line 299.
+    
+    This patches users_of_interest to provide "undef" in the event that there is
+    not a proper barcode associated with the user when retrieving results for the
+    API call.
+    
+    Signed-off-by: Michael Peters <mpeters at emeralddata.net>
+    Signed-off-by: Ben Shum <bshum at biblio.org>
+
+1	1	Open-ILS/src/perlmods/lib/OpenILS/Application/Collections.pm
+
+commit b7b858f7c2d39625e66946b02bb14b0e0046c5cc
+Author: Mike Rylander <mrylander at gmail.com>
+Date:   Mon Jun 15 15:32:20 2015 -0400
+
+    LP#1465385: Fix some syntax issues with make_release
+    
+    Some versions of bash become confused when a unary = operator
+    is used in place of a binary == operator.  Also, some variables
+    live without the protection of quoting, and thus further confuse
+    the shell when their contents are not as simple as originally
+    expected.
+    
+    Here we adress those issues.
+    
+    Signed-off-by: Mike Rylander <mrylander at gmail.com>
+    Signed-off-by: Ben Shum <bshum at biblio.org>
+
+12	12	build/tools/make_release
+
+commit 2aad1520e62b8c2e389cc04a7a02e0911fad20d7
+Author: Angela Kilsdonk <akilsdonk at esilibrary.com>
+Date:   Wed Jun 24 12:16:21 2015 -0500
+
+    Docs: 2.6 Duplicate Serials Barcode Alert
+    
+    Documentation for new duplicate serials barcode alert in Serials Batch Receive.
+    
+    Signed-off-by: Angela Kilsdonk <akilsdonk at esilibrary.com>
+
+-	-	docs/media/dup_serials_barcode.JPG
+7	0	docs/serials/F-Receiving.txt
+ create mode 100644 docs/media/dup_serials_barcode.JPG
+
+commit 3e960988b7e6f3460b2580e850ea650f7d345c36
+Author: Josh Stompro <stomproj at larl.org>
+Date:   Tue Apr 28 08:16:54 2015 -0500
+
+    Docs: Update action trigger docs to add missing fields.
+    
+    Rename heading to "Notifications / Action Trigger" so it matches
+    the staff client admin menu.
+    
+    Signed-off-by: Josh Stompro <stomproj at larl.org>
+
+11	4	docs/admin/actiontriggers.txt
+
+commit f626ee32d2183fdd47164953c2f150d3e313fa4c
+Author: Yamil Suarez <yamil at yamil.com>
+Date:   Fri Jun 19 10:50:45 2015 -0400
+
+    LP#1465830: authority linker now ignores $e and $4 in bib name headings
+    
+    presence of relator terms or codes in $e or $4 can prevent authority
+    headings linking
+    
+    To test
+    -------
+    [1] Create an authority record with a name heading like this
+    
+        100 $a Example, Natalia $d 1945-
+    
+    [2] Create a bib record that contains the name and a relator
+        code or term, e.g.,
+    
+        100 $a Example, Natalia $d 1945- $4edt
+    
+    [3] Run authority_control_fields.pl. Note that the
+        heading in the bib is *NOT* linked, as evidence
+        by no $0 being added to the bib heading and no
+        rows added to authority.bib_linking for that bib
+        and authority.
+    
+    [4] Apply the patch and re-run step 3.  This time,
+        the link gets established:
+    
+        100 $a Example, Natalia $d 1945- $4 edt $0 (CONS)xxx
+    
+    Signed-off-by: Yamil Suarez <yamil at yamil.com>
+    Signed-off-by: Galen Charlton <gmc at esilibrary.com>
+
+0	13	Open-ILS/src/support-scripts/authority_control_fields.pl.in
+
+commit dede50c572e16fd623db896062b46983e96efd9c
+Author: Ben Shum <bshum at biblio.org>
+Date:   Wed Jun 17 23:59:16 2015 -0400
+
+    Docs: Change references to release 2.7.6
+    
+    Since 2.7.6 is released, change references in upgrade docs to this newest
+    release.
+    
+    Signed-off-by: Ben Shum <bshum at biblio.org>
+
+16	15	docs/installation/server_upgrade.txt
+
+commit f2e25f58f0a813b41f086f5a8a8a9d710eae028c
+Author: Ben Shum <bshum at biblio.org>
+Date:   Wed Jun 17 23:53:57 2015 -0400
+
+    Forward-port 2.7.5-2.7.6 upgrade script
+    
+    Signed-off-by: Ben Shum <bshum at biblio.org>
+
+35	0	Open-ILS/src/sql/Pg/version-upgrade/2.7.5-2.7.6-upgrade-db.sql
+ create mode 100644 Open-ILS/src/sql/Pg/version-upgrade/2.7.5-2.7.6-upgrade-db.sql
diff --git a/Open-ILS/src/perlmods/lib/OpenILS/Application.pm b/Open-ILS/src/perlmods/lib/OpenILS/Application.pm
index d750216..7b0a8f6 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 "2-7-7";
 }
 
 __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 919601d..ba892b4 100644
--- a/Open-ILS/src/sql/Pg/002.schema.config.sql
+++ b/Open-ILS/src/sql/Pg/002.schema.config.sql
@@ -92,6 +92,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 ('0940', :eg_version); -- miker/jboyer/csharp/dyrcona
+INSERT INTO config.upgrade_log (version, applied_to) VALUES ('2.7.7', :eg_version);
 
 CREATE TABLE config.bib_source (
 	id		SERIAL	PRIMARY KEY,
diff --git a/Open-ILS/src/sql/Pg/version-upgrade/2.7.6-2.7.7-upgrade-db.sql b/Open-ILS/src/sql/Pg/version-upgrade/2.7.6-2.7.7-upgrade-db.sql
new file mode 100644
index 0000000..f3b5b01
--- /dev/null
+++ b/Open-ILS/src/sql/Pg/version-upgrade/2.7.6-2.7.7-upgrade-db.sql
@@ -0,0 +1,817 @@
+--Upgrade Script for 2.7.6 to 2.7.7
+\set eg_version '''2.7.7'''
+BEGIN;
+INSERT INTO config.upgrade_log (version, applied_to) VALUES ('2.7.7', :eg_version);
+-- Evergreen DB patch 0924.schema.rank_cp_visibility.sql
+--
+-- rank_cp() is meant to return the most-available copies, so it needs to
+-- factor in the opac_visible flag on the copies themselves
+--
+
+-- check whether patch can be applied
+SELECT evergreen.upgrade_deps_block_check('0924', :eg_version);
+
+-- function is being expanded and renamed, so drop the old version
+DROP FUNCTION IF EXISTS evergreen.rank_cp_status(INT);
+
+-- this version exists mainly to accommodate JSON query transform limitations
+-- (the transform argument must be an IDL field, not an entire row/object)
+-- XXX is there another way?
+CREATE OR REPLACE FUNCTION evergreen.rank_cp(copy_id BIGINT)
+RETURNS INTEGER AS $$
+DECLARE
+    copy asset.copy%ROWTYPE;
+BEGIN
+    SELECT * INTO copy FROM asset.copy WHERE id = copy_id;
+    RETURN evergreen.rank_cp(copy);
+END;
+$$ LANGUAGE PLPGSQL STABLE;
+
+CREATE OR REPLACE FUNCTION evergreen.rank_cp(copy asset.copy)
+RETURNS INTEGER AS $$
+DECLARE
+    rank INT;
+BEGIN
+    WITH totally_available AS (
+        SELECT id, 0 AS avail_rank
+        FROM config.copy_status
+        WHERE opac_visible IS TRUE
+            AND copy_active IS TRUE
+            AND id != 1 -- "Checked out"
+    ), almost_available AS (
+        SELECT id, 10 AS avail_rank
+        FROM config.copy_status
+        WHERE holdable IS TRUE
+            AND opac_visible IS TRUE
+            AND copy_active IS FALSE
+            OR id = 1 -- "Checked out"
+    )
+    SELECT COALESCE(
+        CASE WHEN NOT copy.opac_visible THEN 100 END,
+        (SELECT avail_rank FROM totally_available WHERE copy.status IN (id)),
+        CASE WHEN copy.holdable THEN
+            (SELECT avail_rank FROM almost_available WHERE copy.status IN (id))
+        END,
+        100
+    ) INTO rank;
+
+    RETURN rank;
+END;
+$$ LANGUAGE PLPGSQL STABLE;
+
+CREATE OR REPLACE FUNCTION evergreen.ranked_volumes(
+    bibid BIGINT[], 
+    ouid INT,
+    depth INT DEFAULT NULL,
+    slimit HSTORE DEFAULT NULL,
+    soffset HSTORE DEFAULT NULL,
+    pref_lib INT DEFAULT NULL,
+    includes TEXT[] DEFAULT NULL::TEXT[]
+) RETURNS TABLE(id BIGINT, name TEXT, label_sortkey TEXT, rank BIGINT) AS $$
+    WITH RECURSIVE ou_depth AS (
+        SELECT COALESCE(
+            $3,
+            (
+                SELECT depth
+                FROM actor.org_unit_type aout
+                    INNER JOIN actor.org_unit ou ON ou_type = aout.id
+                WHERE ou.id = $2
+            )
+        ) AS depth
+    ), descendant_depth AS (
+        SELECT  ou.id,
+                ou.parent_ou,
+                out.depth
+        FROM  actor.org_unit ou
+                JOIN actor.org_unit_type out ON (out.id = ou.ou_type)
+                JOIN anscestor_depth ad ON (ad.id = ou.id),
+                ou_depth
+        WHERE ad.depth = ou_depth.depth
+            UNION ALL
+        SELECT  ou.id,
+                ou.parent_ou,
+                out.depth
+        FROM  actor.org_unit ou
+                JOIN actor.org_unit_type out ON (out.id = ou.ou_type)
+                JOIN descendant_depth ot ON (ot.id = ou.parent_ou)
+    ), anscestor_depth AS (
+        SELECT  ou.id,
+                ou.parent_ou,
+                out.depth
+        FROM  actor.org_unit ou
+                JOIN actor.org_unit_type out ON (out.id = ou.ou_type)
+        WHERE ou.id = $2
+            UNION ALL
+        SELECT  ou.id,
+                ou.parent_ou,
+                out.depth
+        FROM  actor.org_unit ou
+                JOIN actor.org_unit_type out ON (out.id = ou.ou_type)
+                JOIN anscestor_depth ot ON (ot.parent_ou = ou.id)
+    ), descendants as (
+        SELECT ou.* FROM actor.org_unit ou JOIN descendant_depth USING (id)
+    )
+
+    SELECT ua.id, ua.name, ua.label_sortkey, MIN(ua.rank) AS rank FROM (
+        SELECT acn.id, aou.name, acn.label_sortkey,
+            evergreen.rank_cp(acp),
+            RANK() OVER w
+        FROM asset.call_number acn
+            JOIN asset.copy acp ON (acn.id = acp.call_number)
+            JOIN descendants AS aou ON (acp.circ_lib = aou.id)
+        WHERE acn.record = ANY ($1)
+            AND acn.deleted IS FALSE
+            AND acp.deleted IS FALSE
+            AND CASE WHEN ('exclude_invisible_acn' = ANY($7)) THEN 
+                EXISTS (
+                    SELECT 1 
+                    FROM asset.opac_visible_copies 
+                    WHERE copy_id = acp.id AND record = acn.record
+                ) ELSE TRUE END
+        GROUP BY acn.id, evergreen.rank_cp(acp), aou.name, acn.label_sortkey, aou.id
+        WINDOW w AS (
+            ORDER BY 
+                COALESCE(
+                    CASE WHEN aou.id = $2 THEN -20000 END,
+                    CASE WHEN aou.id = $6 THEN -10000 END,
+                    (SELECT distance - 5000
+                        FROM actor.org_unit_descendants_distance($6) as x
+                        WHERE x.id = aou.id AND $6 IN (
+                            SELECT q.id FROM actor.org_unit_descendants($2) as q)),
+                    (SELECT e.distance FROM actor.org_unit_descendants_distance($2) as e WHERE e.id = aou.id),
+                    1000
+                ),
+                evergreen.rank_cp(acp)
+        )
+    ) AS ua
+    GROUP BY ua.id, ua.name, ua.label_sortkey
+    ORDER BY rank, ua.name, ua.label_sortkey
+    LIMIT ($4 -> 'acn')::INT
+    OFFSET ($5 -> 'acn')::INT;
+$$ LANGUAGE SQL STABLE ROWS 10;
+
+CREATE OR REPLACE FUNCTION unapi.acn ( obj_id BIGINT, format TEXT,  ename TEXT, includes TEXT[], org TEXT, depth INT DEFAULT NULL, slimit HSTORE DEFAULT NULL, soffset HSTORE DEFAULT NULL, include_xmlns BOOL DEFAULT TRUE ) RETURNS XML AS $F$
+        SELECT  XMLELEMENT(
+                    name volume,
+                    XMLATTRIBUTES(
+                        CASE WHEN $9 THEN 'http://open-ils.org/spec/holdings/v1' ELSE NULL END AS xmlns,
+                        'tag:open-ils.org:U2 at acn/' || acn.id AS id,
+                        acn.id AS vol_id, o.shortname AS lib,
+                        o.opac_visible AS opac_visible,
+                        deleted, label, label_sortkey, label_class, record
+                    ),
+                    unapi.aou( owning_lib, $2, 'owning_lib', evergreen.array_remove_item_by_value($4,'acn'), $5, $6, $7, $8),
+                    CASE 
+                        WHEN ('acp' = ANY ($4)) THEN
+                            CASE WHEN $6 IS NOT NULL THEN
+                                XMLELEMENT( name copies,
+                                    (SELECT XMLAGG(acp ORDER BY rank_avail) FROM (
+                                        SELECT  unapi.acp( cp.id, 'xml', 'copy', evergreen.array_remove_item_by_value($4,'acn'), $5, $6, $7, $8, FALSE),
+                                            evergreen.rank_cp(cp) AS rank_avail
+                                          FROM  asset.copy cp
+                                                JOIN actor.org_unit_descendants( (SELECT id FROM actor.org_unit WHERE shortname = $5), $6) aoud ON (cp.circ_lib = aoud.id)
+                                          WHERE cp.call_number = acn.id
+                                              AND cp.deleted IS FALSE
+                                          ORDER BY rank_avail, COALESCE(cp.copy_number,0), cp.barcode
+                                          LIMIT ($7 -> 'acp')::INT
+                                          OFFSET ($8 -> 'acp')::INT
+                                    )x)
+                                )
+                            ELSE
+                                XMLELEMENT( name copies,
+                                    (SELECT XMLAGG(acp ORDER BY rank_avail) FROM (
+                                        SELECT  unapi.acp( cp.id, 'xml', 'copy', evergreen.array_remove_item_by_value($4,'acn'), $5, $6, $7, $8, FALSE),
+                                            evergreen.rank_cp(cp) AS rank_avail
+                                          FROM  asset.copy cp
+                                                JOIN actor.org_unit_descendants( (SELECT id FROM actor.org_unit WHERE shortname = $5) ) aoud ON (cp.circ_lib = aoud.id)
+                                          WHERE cp.call_number = acn.id
+                                              AND cp.deleted IS FALSE
+                                          ORDER BY rank_avail, COALESCE(cp.copy_number,0), cp.barcode
+                                          LIMIT ($7 -> 'acp')::INT
+                                          OFFSET ($8 -> 'acp')::INT
+                                    )x)
+                                )
+                            END
+                        ELSE NULL
+                    END,
+                    XMLELEMENT(
+                        name uris,
+                        (SELECT XMLAGG(auri) FROM (SELECT unapi.auri(uri,'xml','uri', evergreen.array_remove_item_by_value($4,'acn'), $5, $6, $7, $8, FALSE) FROM asset.uri_call_number_map WHERE call_number = acn.id)x)
+                    ),
+                    unapi.acnp( acn.prefix, 'marcxml', 'prefix', evergreen.array_remove_item_by_value($4,'acn'), $5, $6, $7, $8, FALSE),
+                    unapi.acns( acn.suffix, 'marcxml', 'suffix', evergreen.array_remove_item_by_value($4,'acn'), $5, $6, $7, $8, FALSE),
+                    CASE WHEN ('bre' = ANY ($4)) THEN unapi.bre( acn.record, 'marcxml', 'record', evergreen.array_remove_item_by_value($4,'acn'), $5, $6, $7, $8, FALSE) ELSE NULL END
+                ) AS x
+          FROM  asset.call_number acn
+                JOIN actor.org_unit o ON (o.id = acn.owning_lib)
+          WHERE acn.id = $1
+              AND acn.deleted IS FALSE
+          GROUP BY acn.id, o.shortname, o.opac_visible, deleted, label, label_sortkey, label_class, owning_lib, record, acn.prefix, acn.suffix;
+$F$ LANGUAGE SQL STABLE;
+
+
+SELECT evergreen.upgrade_deps_block_check('0925', :eg_version);
+
+CREATE OR REPLACE FUNCTION evergreen.limit_oustl() RETURNS TRIGGER AS $oustl_limit$
+    BEGIN
+        -- Only keeps the most recent five settings changes.
+        DELETE FROM config.org_unit_setting_type_log WHERE field_name = NEW.field_name AND org = NEW.org AND date_applied NOT IN 
+        (SELECT date_applied FROM config.org_unit_setting_type_log WHERE field_name = NEW.field_name AND org = NEW.org ORDER BY date_applied DESC LIMIT 4);
+        
+        IF (TG_OP = 'UPDATE') THEN
+            RETURN NEW;
+        ELSIF (TG_OP = 'INSERT') THEN
+            RETURN NEW;
+        END IF;
+        RETURN NULL;
+    END;
+$oustl_limit$ LANGUAGE plpgsql;
+
+DROP TRIGGER IF EXISTS limit_logs_oust ON config.org_unit_setting_type_log;
+
+CREATE TRIGGER limit_logs_oust
+    BEFORE INSERT OR UPDATE ON config.org_unit_setting_type_log
+    FOR EACH ROW EXECUTE PROCEDURE limit_oustl();
+
+
+SELECT evergreen.upgrade_deps_block_check('0926', :eg_version);
+
+CREATE OR REPLACE FUNCTION acq.copy_fund_tags(
+        old_fund_id INTEGER,
+        new_fund_id INTEGER
+) RETURNS VOID AS $$
+DECLARE
+fund_tag_rec	RECORD;
+BEGIN
+       
+	FOR fund_tag_rec IN SELECT * FROM acq.fund_tag_map WHERE fund=old_fund_id LOOP
+                BEGIN
+		     INSERT INTO acq.fund_tag_map(fund, tag) VALUES(new_fund_id, fund_tag_rec.tag);
+                EXCEPTION
+			WHEN unique_violation THEN
+			--    RAISE NOTICE 'Fund tag already propagated', old_fund.id;
+			CONTINUE;
+		END;
+	END LOOP;
+	RETURN;
+END;
+$$ LANGUAGE plpgsql;
+
+CREATE OR REPLACE FUNCTION acq.rollover_funds_by_org_tree(
+	old_year INTEGER,
+	user_id INTEGER,
+	org_unit_id INTEGER,
+    encumb_only BOOL DEFAULT FALSE,
+    include_desc BOOL DEFAULT TRUE
+) RETURNS VOID AS $$
+DECLARE
+--
+new_fund    INT;
+new_year    INT := old_year + 1;
+org_found   BOOL;
+perm_ous    BOOL;
+xfer_amount NUMERIC := 0;
+roll_fund   RECORD;
+deb         RECORD;
+detail      RECORD;
+roll_distrib_forms BOOL;
+--
+BEGIN
+	--
+	-- Sanity checks
+	--
+	IF old_year IS NULL THEN
+		RAISE EXCEPTION 'Input year argument is NULL';
+    ELSIF old_year NOT BETWEEN 2008 and 2200 THEN
+        RAISE EXCEPTION 'Input year is out of range';
+	END IF;
+	--
+	IF user_id IS NULL THEN
+		RAISE EXCEPTION 'Input user id argument is NULL';
+	END IF;
+	--
+	IF org_unit_id IS NULL THEN
+		RAISE EXCEPTION 'Org unit id argument is NULL';
+	ELSE
+		--
+		-- Validate the org unit
+		--
+		SELECT TRUE
+		INTO org_found
+		FROM actor.org_unit
+		WHERE id = org_unit_id;
+		--
+		IF org_found IS NULL THEN
+			RAISE EXCEPTION 'Org unit id % is invalid', org_unit_id;
+		ELSIF encumb_only THEN
+			SELECT INTO perm_ous value::BOOL FROM
+			actor.org_unit_ancestor_setting(
+				'acq.fund.allow_rollover_without_money', org_unit_id
+			);
+			IF NOT FOUND OR NOT perm_ous THEN
+				RAISE EXCEPTION 'Encumbrance-only rollover not permitted at org %', org_unit_id;
+			END IF;
+		END IF;
+	END IF;
+	--
+	-- Loop over the propagable funds to identify the details
+	-- from the old fund plus the id of the new one, if it exists.
+	--
+	FOR roll_fund in
+	SELECT
+	    oldf.id AS old_fund,
+	    oldf.org,
+	    oldf.name,
+	    oldf.currency_type,
+	    oldf.code,
+		oldf.rollover,
+	    newf.id AS new_fund_id
+	FROM
+    	acq.fund AS oldf
+    	LEFT JOIN acq.fund AS newf
+        	ON ( oldf.code = newf.code )
+	WHERE
+ 		    oldf.year = old_year
+		AND oldf.propagate
+        AND newf.year = new_year
+		AND ( ( include_desc AND oldf.org IN ( SELECT id FROM actor.org_unit_descendants( org_unit_id ) ) )
+                OR (NOT include_desc AND oldf.org = org_unit_id ) )
+	LOOP
+		--RAISE NOTICE 'Processing fund %', roll_fund.old_fund;
+		--
+		IF roll_fund.new_fund_id IS NULL THEN
+			--
+			-- The old fund hasn't been propagated yet.  Propagate it now.
+			--
+			INSERT INTO acq.fund (
+				org,
+				name,
+				year,
+				currency_type,
+				code,
+				rollover,
+				propagate,
+				balance_warning_percent,
+				balance_stop_percent
+			) VALUES (
+				roll_fund.org,
+				roll_fund.name,
+				new_year,
+				roll_fund.currency_type,
+				roll_fund.code,
+				true,
+				true,
+				roll_fund.balance_warning_percent,
+				roll_fund.balance_stop_percent
+			)
+			RETURNING id INTO new_fund;
+
+		        PERFORM acq.copy_fund_tags(roll_fund.id,new_fund);
+
+		ELSE
+			new_fund = roll_fund.new_fund_id;
+		END IF;
+		--
+		-- Determine the amount to transfer
+		--
+		SELECT amount
+		INTO xfer_amount
+		FROM acq.fund_spent_balance
+		WHERE fund = roll_fund.old_fund;
+		--
+		IF xfer_amount <> 0 THEN
+			IF NOT encumb_only AND roll_fund.rollover THEN
+				--
+				-- Transfer balance from old fund to new
+				--
+				--RAISE NOTICE 'Transferring % from fund % to %', xfer_amount, roll_fund.old_fund, new_fund;
+				--
+				PERFORM acq.transfer_fund(
+					roll_fund.old_fund,
+					xfer_amount,
+					new_fund,
+					xfer_amount,
+					user_id,
+					'Rollover'
+				);
+			ELSE
+				--
+				-- Transfer balance from old fund to the void
+				--
+				-- RAISE NOTICE 'Transferring % from fund % to the void', xfer_amount, roll_fund.old_fund;
+				--
+				PERFORM acq.transfer_fund(
+					roll_fund.old_fund,
+					xfer_amount,
+					NULL,
+					NULL,
+					user_id,
+					'Rollover into the void'
+				);
+			END IF;
+		END IF;
+		--
+		IF roll_fund.rollover THEN
+			--
+			-- Move any lineitems from the old fund to the new one
+			-- where the associated debit is an encumbrance.
+			--
+			-- Any other tables tying expenditure details to funds should
+			-- receive similar treatment.  At this writing there are none.
+			--
+			UPDATE acq.lineitem_detail
+			SET fund = new_fund
+			WHERE
+    			fund = roll_fund.old_fund -- this condition may be redundant
+    			AND fund_debit in
+    			(
+        			SELECT id
+        			FROM acq.fund_debit
+        			WHERE
+            			fund = roll_fund.old_fund
+            			AND encumbrance
+    			);
+			--
+			-- Move encumbrance debits from the old fund to the new fund
+			--
+			UPDATE acq.fund_debit
+			SET fund = new_fund
+			wHERE
+				fund = roll_fund.old_fund
+				AND encumbrance;
+		END IF;
+
+		-- Rollover distribution formulae funds
+		SELECT INTO roll_distrib_forms value::BOOL FROM
+			actor.org_unit_ancestor_setting(
+				'acq.fund.rollover_distrib_forms', org_unit_id
+			);
+
+		IF roll_distrib_forms THEN
+			UPDATE acq.distribution_formula_entry 
+				SET fund = roll_fund.new_fund_id
+				WHERE fund = roll_fund.old_fund;
+		END IF;
+
+		--
+		-- Mark old fund as inactive, now that we've closed it
+		--
+		UPDATE acq.fund
+		SET active = FALSE
+		WHERE id = roll_fund.old_fund;
+	END LOOP;
+END;
+$$ LANGUAGE plpgsql;
+
+CREATE OR REPLACE FUNCTION acq.propagate_funds_by_org_tree(
+	old_year INTEGER,
+	user_id INTEGER,
+	org_unit_id INTEGER,
+    include_desc BOOL DEFAULT TRUE
+) RETURNS VOID AS $$
+DECLARE
+--
+new_id      INT;
+old_fund    RECORD;
+org_found   BOOLEAN;
+--
+BEGIN
+	--
+	-- Sanity checks
+	--
+	IF old_year IS NULL THEN
+		RAISE EXCEPTION 'Input year argument is NULL';
+	ELSIF old_year NOT BETWEEN 2008 and 2200 THEN
+		RAISE EXCEPTION 'Input year is out of range';
+	END IF;
+	--
+	IF user_id IS NULL THEN
+		RAISE EXCEPTION 'Input user id argument is NULL';
+	END IF;
+	--
+	IF org_unit_id IS NULL THEN
+		RAISE EXCEPTION 'Org unit id argument is NULL';
+	ELSE
+		SELECT TRUE INTO org_found
+		FROM actor.org_unit
+		WHERE id = org_unit_id;
+		--
+		IF org_found IS NULL THEN
+			RAISE EXCEPTION 'Org unit id is invalid';
+		END IF;
+	END IF;
+	--
+	-- Loop over the applicable funds
+	--
+	FOR old_fund in SELECT * FROM acq.fund
+	WHERE
+		year = old_year
+		AND propagate
+		AND ( ( include_desc AND org IN ( SELECT id FROM actor.org_unit_descendants( org_unit_id ) ) )
+                OR (NOT include_desc AND org = org_unit_id ) )
+    
+	LOOP
+		BEGIN
+			INSERT INTO acq.fund (
+				org,
+				name,
+				year,
+				currency_type,
+				code,
+				rollover,
+				propagate,
+				balance_warning_percent,
+				balance_stop_percent
+			) VALUES (
+				old_fund.org,
+				old_fund.name,
+				old_year + 1,
+				old_fund.currency_type,
+				old_fund.code,
+				old_fund.rollover,
+				true,
+				old_fund.balance_warning_percent,
+				old_fund.balance_stop_percent
+			)
+			RETURNING id INTO new_id;
+		EXCEPTION
+			WHEN unique_violation THEN
+				--RAISE NOTICE 'Fund % already propagated', old_fund.id;
+				CONTINUE;
+		END;
+
+		PERFORM acq.copy_fund_tags(old_fund.id,new_id);
+
+		--RAISE NOTICE 'Propagating fund % to fund %',
+		--	old_fund.code, new_id;
+	END LOOP;
+END;
+$$ LANGUAGE plpgsql;
+
+
+
+
+SELECT evergreen.upgrade_deps_block_check('0927', :eg_version);
+
+CREATE OR REPLACE VIEW extend_reporter.full_circ_count AS
+   SELECT cp.id,
+   COALESCE((SELECT circ_count FROM extend_reporter.legacy_circ_count WHERE id = cp.id), 0)
+   + (SELECT COUNT(*) FROM action.circulation WHERE target_copy = cp.id)
+   + (SELECT COUNT(*) FROM action.aged_circulation WHERE target_copy = cp.id) AS circ_count
+   FROM asset.copy cp;
+
+-- make record attributes definitions that use xpath to extract values 
+-- work
+
+
+SELECT evergreen.upgrade_deps_block_check('0936', :eg_version);
+
+CREATE OR REPLACE FUNCTION metabib.reingest_record_attributes (rid BIGINT, pattr_list TEXT[] DEFAULT NULL, prmarc TEXT DEFAULT NULL, rdeleted BOOL DEFAULT TRUE) RETURNS VOID AS $func$
+DECLARE
+    transformed_xml TEXT;
+    rmarc           TEXT := prmarc;
+    tmp_val         TEXT;
+    prev_xfrm       TEXT;
+    normalizer      RECORD;
+    xfrm            config.xml_transform%ROWTYPE;
+    attr_vector     INT[] := '{}'::INT[];
+    attr_vector_tmp INT[];
+    attr_list       TEXT[] := pattr_list;
+    attr_value      TEXT[];
+    norm_attr_value TEXT[];
+    tmp_xml         TEXT;
+    attr_def        config.record_attr_definition%ROWTYPE;
+    ccvm_row        config.coded_value_map%ROWTYPE;
+BEGIN
+
+    IF attr_list IS NULL OR rdeleted THEN -- need to do the full dance on INSERT or undelete
+        SELECT ARRAY_AGG(name) INTO attr_list FROM config.record_attr_definition;
+    END IF;
+
+    IF rmarc IS NULL THEN
+        SELECT marc INTO rmarc FROM biblio.record_entry WHERE id = rid;
+    END IF;
+
+    FOR attr_def IN SELECT * FROM config.record_attr_definition WHERE NOT composite AND name = ANY( attr_list ) ORDER BY format LOOP
+
+        attr_value := '{}'::TEXT[];
+        norm_attr_value := '{}'::TEXT[];
+        attr_vector_tmp := '{}'::INT[];
+
+        SELECT * INTO ccvm_row FROM config.coded_value_map c WHERE c.ctype = attr_def.name LIMIT 1; 
+
+        -- tag+sf attrs only support SVF
+        IF attr_def.tag IS NOT NULL THEN -- tag (and optional subfield list) selection
+            SELECT  ARRAY[ARRAY_TO_STRING(ARRAY_AGG(value), COALESCE(attr_def.joiner,' '))] INTO attr_value
+              FROM  (SELECT * FROM metabib.full_rec ORDER BY tag, subfield) AS x
+              WHERE record = rid
+                    AND tag LIKE attr_def.tag
+                    AND CASE
+                        WHEN attr_def.sf_list IS NOT NULL 
+                            THEN POSITION(subfield IN attr_def.sf_list) > 0
+                        ELSE TRUE
+                    END
+              GROUP BY tag
+              ORDER BY tag
+              LIMIT 1;
+
+        ELSIF attr_def.fixed_field IS NOT NULL THEN -- a named fixed field, see config.marc21_ff_pos_map.fixed_field
+            attr_value := vandelay.marc21_extract_fixed_field_list(rmarc, attr_def.fixed_field);
+
+            IF NOT attr_def.multi THEN
+                attr_value := ARRAY[attr_value[1]];
+            END IF;
+
+        ELSIF attr_def.xpath IS NOT NULL THEN -- and xpath expression
+
+            SELECT INTO xfrm * FROM config.xml_transform WHERE name = attr_def.format;
+        
+            -- See if we can skip the XSLT ... it's expensive
+            IF prev_xfrm IS NULL OR prev_xfrm <> xfrm.name THEN
+                -- Can't skip the transform
+                IF xfrm.xslt <> '---' THEN
+                    transformed_xml := oils_xslt_process(rmarc,xfrm.xslt);
+                ELSE
+                    transformed_xml := rmarc;
+                END IF;
+    
+                prev_xfrm := xfrm.name;
+            END IF;
+
+            IF xfrm.name IS NULL THEN
+                -- just grab the marcxml (empty) transform
+                SELECT INTO xfrm * FROM config.xml_transform WHERE xslt = '---' LIMIT 1;
+                prev_xfrm := xfrm.name;
+            END IF;
+
+            FOR tmp_xml IN SELECT UNNEST(oils_xpath(attr_def.xpath, transformed_xml, ARRAY[ARRAY[xfrm.prefix, xfrm.namespace_uri]])) LOOP
+                tmp_val := oils_xpath_string(
+                                '//*',
+                                tmp_xml,
+                                COALESCE(attr_def.joiner,' '),
+                                ARRAY[ARRAY[xfrm.prefix, xfrm.namespace_uri]]
+                            );
+                IF tmp_val IS NOT NULL AND BTRIM(tmp_val) <> '' THEN
+                    attr_value := attr_value || tmp_val;
+                    EXIT WHEN NOT attr_def.multi;
+                END IF;
+            END LOOP;
+
+        ELSIF attr_def.phys_char_sf IS NOT NULL THEN -- a named Physical Characteristic, see config.marc21_physical_characteristic_*_map
+            SELECT  ARRAY_AGG(m.value) INTO attr_value
+              FROM  vandelay.marc21_physical_characteristics(rmarc) v
+                    LEFT JOIN config.marc21_physical_characteristic_value_map m ON (m.id = v.value)
+              WHERE v.subfield = attr_def.phys_char_sf AND (m.value IS NOT NULL AND BTRIM(m.value) <> '')
+                    AND ( ccvm_row.id IS NULL OR ( ccvm_row.id IS NOT NULL AND v.id IS NOT NULL) );
+
+            IF NOT attr_def.multi THEN
+                attr_value := ARRAY[attr_value[1]];
+            END IF;
+
+        END IF;
+
+                -- apply index normalizers to attr_value
+        FOR tmp_val IN SELECT value FROM UNNEST(attr_value) x(value) LOOP
+            FOR normalizer IN
+                SELECT  n.func AS func,
+                        n.param_count AS param_count,
+                        m.params AS params
+                  FROM  config.index_normalizer n
+                        JOIN config.record_attr_index_norm_map m ON (m.norm = n.id)
+                  WHERE attr = attr_def.name
+                  ORDER BY m.pos LOOP
+                    EXECUTE 'SELECT ' || normalizer.func || '(' ||
+                    COALESCE( quote_literal( tmp_val ), 'NULL' ) ||
+                        CASE
+                            WHEN normalizer.param_count > 0
+                                THEN ',' || REPLACE(REPLACE(BTRIM(normalizer.params,'[]'),E'\'',E'\\\''),E'"',E'\'')
+                                ELSE ''
+                            END ||
+                    ')' INTO tmp_val;
+
+            END LOOP;
+            IF tmp_val IS NOT NULL AND tmp_val <> '' THEN
+                -- note that a string that contains only blanks
+                -- is a valid value for some attributes
+                norm_attr_value := norm_attr_value || tmp_val;
+            END IF;
+        END LOOP;
+        
+        IF attr_def.filter THEN
+            -- Create unknown uncontrolled values and find the IDs of the values
+            IF ccvm_row.id IS NULL THEN
+                FOR tmp_val IN SELECT value FROM UNNEST(norm_attr_value) x(value) LOOP
+                    IF tmp_val IS NOT NULL AND BTRIM(tmp_val) <> '' THEN
+                        BEGIN -- use subtransaction to isolate unique constraint violations
+                            INSERT INTO metabib.uncontrolled_record_attr_value ( attr, value ) VALUES ( attr_def.name, tmp_val );
+                        EXCEPTION WHEN unique_violation THEN END;
+                    END IF;
+                END LOOP;
+
+                SELECT ARRAY_AGG(id) INTO attr_vector_tmp FROM metabib.uncontrolled_record_attr_value WHERE attr = attr_def.name AND value = ANY( norm_attr_value );
+            ELSE
+                SELECT ARRAY_AGG(id) INTO attr_vector_tmp FROM config.coded_value_map WHERE ctype = attr_def.name AND code = ANY( norm_attr_value );
+            END IF;
+
+            -- Add the new value to the vector
+            attr_vector := attr_vector || attr_vector_tmp;
+        END IF;
+
+        IF attr_def.sorter AND norm_attr_value[1] IS NOT NULL THEN
+            DELETE FROM metabib.record_sorter WHERE source = rid AND attr = attr_def.name;
+            INSERT INTO metabib.record_sorter (source, attr, value) VALUES (rid, attr_def.name, norm_attr_value[1]);
+        END IF;
+
+    END LOOP;
+
+/* We may need to rewrite the vlist to contain
+   the intersection of new values for requested
+   attrs and old values for ignored attrs. To
+   do this, we take the old attr vlist and
+   subtract any values that are valid for the
+   requested attrs, and then add back the new
+   set of attr values. */
+
+    IF ARRAY_LENGTH(pattr_list, 1) > 0 THEN 
+        SELECT vlist INTO attr_vector_tmp FROM metabib.record_attr_vector_list WHERE source = rid;
+        SELECT attr_vector_tmp - ARRAY_AGG(id::INT) INTO attr_vector_tmp FROM metabib.full_attr_id_map WHERE attr = ANY (pattr_list);
+        attr_vector := attr_vector || attr_vector_tmp;
+    END IF;
+
+    -- On to composite attributes, now that the record attrs have been pulled.  Processed in name order, so later composite
+    -- attributes can depend on earlier ones.
+    PERFORM metabib.compile_composite_attr_cache_init();
+    FOR attr_def IN SELECT * FROM config.record_attr_definition WHERE composite AND name = ANY( attr_list ) ORDER BY name LOOP
+
+        FOR ccvm_row IN SELECT * FROM config.coded_value_map c WHERE c.ctype = attr_def.name ORDER BY value LOOP
+
+            tmp_val := metabib.compile_composite_attr( ccvm_row.id );
+            CONTINUE WHEN tmp_val IS NULL OR tmp_val = ''; -- nothing to do
+
+            IF attr_def.filter THEN
+                IF attr_vector @@ tmp_val::query_int THEN
+                    attr_vector = attr_vector + intset(ccvm_row.id);
+                    EXIT WHEN NOT attr_def.multi;
+                END IF;
+            END IF;
+
+            IF attr_def.sorter THEN
+                IF attr_vector @@ tmp_val THEN
+                    DELETE FROM metabib.record_sorter WHERE source = rid AND attr = attr_def.name;
+                    INSERT INTO metabib.record_sorter (source, attr, value) VALUES (rid, attr_def.name, ccvm_row.code);
+                END IF;
+            END IF;
+
+        END LOOP;
+
+    END LOOP;
+
+    IF ARRAY_LENGTH(attr_vector, 1) > 0 THEN
+        IF rdeleted THEN -- initial insert OR revivication
+            DELETE FROM metabib.record_attr_vector_list WHERE source = rid;
+            INSERT INTO metabib.record_attr_vector_list (source, vlist) VALUES (rid, attr_vector);
+        ELSE
+            UPDATE metabib.record_attr_vector_list SET vlist = attr_vector WHERE source = rid;
+        END IF;
+    END IF;
+
+END;
+
+$func$ LANGUAGE PLPGSQL;
+
+
+SELECT evergreen.upgrade_deps_block_check('0940', :eg_version);
+
+CREATE OR REPLACE FUNCTION evergreen.pg_statistics (tab TEXT, col TEXT) RETURNS TABLE(element TEXT, frequency INT) AS $$
+BEGIN
+    -- This query will die on PG < 9.2, but the function can be created. We just won't use it where we can't.
+    RETURN QUERY
+        SELECT  e,
+                f
+          FROM  (SELECT ROW_NUMBER() OVER (),
+                        (f * 100)::INT AS f
+                  FROM  (SELECT UNNEST(most_common_elem_freqs) AS f
+                          FROM  pg_stats
+                          WHERE tablename = tab
+                                AND attname = col
+                        )x
+                ) AS f
+                JOIN (SELECT ROW_NUMBER() OVER (),
+                             e
+                       FROM (SELECT UNNEST(most_common_elems::text::text[]) AS e
+                              FROM  pg_stats 
+                              WHERE tablename = tab
+                                    AND attname = col
+                            )y
+                ) AS elems USING (row_number);
+END;
+$$ LANGUAGE PLPGSQL;
+
+CREATE OR REPLACE FUNCTION evergreen.query_int_wrapper (INT[],TEXT) RETURNS BOOL AS $$
+BEGIN
+    RETURN $1 @@ $2::query_int;
+END;
+$$ LANGUAGE PLPGSQL STABLE;
+
+
+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 dd10653..ac25d12 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_2_7_7</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 0613a13..682603f 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_2_7_7");
 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 a954357..31ae06e 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 "2.7"
 !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 b57451a..0000000
--- a/README
+++ /dev/null
@@ -1 +0,0 @@
-docs/installation/server_installation.txt
\ No newline at end of file
diff --git a/README b/README
new file mode 100644
index 0000000..26fa65d
--- /dev/null
+++ b/README
@@ -0,0 +1,620 @@
+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 and Fedora 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 install some extra packages
+and perform one step before they can proceed with the `./configure` step.
+
+As the *root* Linux account, install the following packages:
+
+  * autoconf
+  * automake
+  * libtool
+
+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**: Version 9.3 is recommended. The minimum supported version
+    is 9.1.
+  * **Linux**: Evergreen 2.8 has been tested on Debian Jessie (8.0), 
+    Debian Wheezy (7.0), Debian Squeeze(6.0), Ubuntu Trusty Tahr (14.04), 
+    Ubuntu Precise Pangolin (12.04), and Fedora. 
+    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, Ubuntu or Fedora websites.
+  * **OpenSRF**: The minimum supported version of OpenSRF is 2.4.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 (2.4.0 or later).
+   You can download OpenSRF releases from http://evergreen-ils.org/opensrf-downloads/
+2. On many distributions, it is necessary to install PostgreSQL 9.1+ from external
+   repositories.
++
+  * On Debian Squeeze, open `/etc/apt/sources.list` in a text editor as the
+    *root* Linux account and add the following line:
++
+[source, bash]
+------------------------------------------------------------------------------
+deb http://backports.debian.org/debian-backports squeeze-backports main contrib
+------------------------------------------------------------------------------
++
+  * Ubuntu Precise and Trusty comes with PostgreSQL 9.1+, so no additional steps are required.
+  * Fedora 19 and 20 come with PostgreSQL 9.2+, so no additional steps are required.
++
+3. On Debian and Ubuntu, run `aptitude update` as the *root* Linux account to
+   retrieve the new packages from the backports repository.
+4. Issue the following commands as the *root* Linux account to install
+   prerequisites using the `Makefile.install` prerequisite installer,
+   substituting `debian-jessie`, `debian-wheezy`, `debian-squeeze`, `fedora`, 
+   `ubuntu-trusty`, or `ubuntu-precise` for <osname> below:
++
+[source, bash]
+------------------------------------------------------------------------------
+make -f Open-ILS/src/extras/Makefile.install <osname>
+------------------------------------------------------------------------------
++
+5. 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 Precise, Trusty or Debian Jessie. The ubuntu
+and Debian Jessie targets use libdbd-pgsql from packages.
++
+.Debian Wheezy
+[source, bash]
+------------------------------------------------------------------------------
+echo "/usr/local/lib/dbd" > /etc/ld.so.conf.d/eg.conf
+ldconfig
+------------------------------------------------------------------------------
++
+.Fedora
+[source, bash]
+------------------------------------------------------------------------------
+echo "/usr/lib64/dbd" > /etc/ld.so.conf.d/eg.conf
+ldconfig
+------------------------------------------------------------------------------
+
+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_2_7_7 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
+------------------------------------------------------------------------------
+
+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
+-------------------------------
+
+1. 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 and Ubuntu Precise
+[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 and Debian Jessie
+[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
+------------------------------------------------------------------------------------
++
+.Fedora
+[source,bash]
+------------------------------------------------------------------------------
+cp Open-ILS/examples/apache_24/eg_24.conf       /etc/httpd/conf.d/
+cp Open-ILS/examples/apache_24/eg_vhost_24.conf /etc/httpd/eg_vhost.conf
+cp Open-ILS/examples/apache/eg_startup          /etc/httpd/
+# Now set up SSL
+mkdir /etc/httpd/ssl
+cd /etc/httpd/ssl
+------------------------------------------------------------------------------
++
+2. 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
+------------------------------------------------------------------------------
++
+3. 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`
+  b. (Fedora): Change references from the non-existent `/etc/apache2/` directory
+     to `/etc/httpd/`.
+4. 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`.
+  * (Fedora): As the *root* Linux account , edit `/etc/httpd/conf/httpd.conf`.
+    Change `User apache` to `User opensrf`.
+5. Configure Apache with performance settings appropriate for Evergreen:
+  * (Debian and Ubuntu): As the *root* Linux account, edit
+    `/etc/apache2/apache2.conf`:
+  * (Fedora): As the *root* Linux account, edit `/etc/httpd/conf/httpd.conf`:
+    a. Change `KeepAliveTimeout` to `1`. Higher values reduce the chance of
+       a request timing out unexpectedly, but increase the risk of using up
+       all available Apache child processes.
+    b. 'Optional': Change `MaxKeepAliveRequests` to `100`
+    c. (Debian Wheezy, Ubuntu Precise, and Fedora) Update the prefork configuration 
+       section to suit your environment. The following settings apply to a busy 
+       system:
++
+[source,bash]
+------------------------------------------------------------------------------
+<IfModule mpm_prefork_module>
+   StartServers           20
+   MinSpareServers         5
+   MaxSpareServers        15
+   MaxClients            150
+   MaxRequestsPerChild 10000
+</IfModule>
+------------------------------------------------------------------------------
+    d. (Ubuntu Trusty, Debian Jessie) As the *root* user, edit 
+       /etc/apache2/mods-available/mpm_prefork.conf to match the above values.  
+       Then, also as the *root* user, enable the mpm_prefork module by doing:
++
+[source,bash]
+------------------------------------------------------------------------------
+a2dismod mpm_event
+a2enmod mpm_prefork
+------------------------------------------------------------------------------
++
+6. (Fedora): As the *root* Linux account, edit the `/etc/httpd/eg_vhost.conf`
+   file to change references from the non-existent `/etc/apache2/` directory
+   to `/etc/httpd/`.
+7. (Debian Wheezy and Ubuntu Precise): 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, Debian Jessie):
++
+[source,bash]
+------------------------------------------------------------------------------
+a2dissite 000-default  # OPTIONAL: disable the default site (the "It Works" page)
+a2ensite eg.conf
+------------------------------------------------------------------------------
++
+8. (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
+------------------------------------------------------------------------------
+
+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 the following section, sets the database
+connection information in `opensrf.xml` for you.
+
+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 / Fedora) 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-jessie
+make -f Open-ILS/src/extras/Makefile.install postgres-server-debian-wheezy
+make -f Open-ILS/src/extras/Makefile.install postgres-server-debian-squeeze
+make -f Open-ILS/src/extras/Makefile.install postgres-server-ubuntu-precise
+make -f Open-ILS/src/extras/Makefile.install postgres-server-ubuntu-trusty
+make -f Open-ILS/src/extras/Makefile.install postgres-server-fedora
+------------------------------------------------------------------------------
+
+.(Fedora) Postgres initialization
+
+Installing Postgres on Fedora also requires you to initialize the PostgreSQL
+cluster and start the service. Issue the following commands as the *root* user:
+
+[source, bash]
+------------------------------------------------------------------------------
+postgresql-setup initdb
+systemctl start postgresql
+------------------------------------------------------------------------------
+
+For a standalone PostgreSQL server, install the following Perl modules for your
+distribution as the *root* Linux account:
+
+.(Ubuntu Precise)
+[source,bash]
+---------------------------------------------------------------------------------
+cpan Rose::URI
+---------------------------------------------------------------------------------
+
+.(Debian "wheezy" and Ubuntu Trusty) 
+No extra modules required for these distributions.
+
+.(Fedora)
+[source, bash]
+------------------------------------------------------------------------------
+cpan Rose::URI
+------------------------------------------------------------------------------
+
+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, and in
+the `/var/lib/pgsql/data/` directory on Fedora. 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.1 and later
+^^^^^^^^^^^^^^^^^^^^^^^^
+To create the database instance on a remote database server running PostgreSQL
+9.1 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 585ab00..168ddb0 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, 2.7.7, open-ils-dev at list.georgialibraries.org)
+AM_INIT_AUTOMAKE([OpenILS], [2.7.7])
 AC_REVISION($Revision: 0.1 $)
 AC_CONFIG_SRCDIR([configure.ac])
 AC_CONFIG_SUBDIRS([Open-ILS/xul/staff_client/external/libmar])

commit e49f8f3a4520c790941a5271148dd9f485896020
Author: Ben Shum <bshum at biblio.org>
Date:   Wed Feb 4 14:42:16 2015 -0500

    Bump OpenILS.pm version to 2.7.7
    
    Signed-off-by: Ben Shum <bshum at biblio.org>

diff --git a/Open-ILS/src/perlmods/lib/OpenILS.pm b/Open-ILS/src/perlmods/lib/OpenILS.pm
index d7235ce..0b50c92 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 = '2.0707';
 
 1;

commit 9076d045ce0dc64b5c66eefddb336d8050a3923c
Author: Dan Wells <dbw2 at calvin.edu>
Date:   Thu Jan 16 15:07:40 2014 -0500

    Changes to smooth out make_release
    
    1) Make the fake 'HeadURL' into a URL which works with our web repo.
    Note that this has 'tags/' hardcoded in, so it only works with true
    release branches (e.g. rel_x_y_z) not "working" branches
    (e.g. rel_x_y).
    
    2) Change range selector when building log to better exclude commits
    from previous releases.
    
    Signed-off-by: Dan Wells <dbw2 at calvin.edu>
    Signed-off-by: Ben Shum <bshum at biblio.org>

diff --git a/build/tools/make_release b/build/tools/make_release
index 96e3239..c738355 100755
--- a/build/tools/make_release
+++ b/build/tools/make_release
@@ -2,7 +2,7 @@
 
 GIT_ABS=`git rev-parse --show-toplevel`
 GIT_BRANCH=`git rev-parse --abbrev-ref HEAD | sed 's|.*/||'`
-HEADURLBASE="http://git.evergreen-ils.org/Evergreen.git?h=refs/heads/"
+HEADURLBASE="http://git.evergreen-ils.org/?p=Evergreen.git;a=shortlog;h=refs/heads/tags/"
 HEADURL="$HEADURLBASE$GIT_BRANCH"
 
 # Drop to the root of the checkout
@@ -277,7 +277,7 @@ if [ "$PREV_BRANCH" != "PACKAGE" ]; then
     grep -i -m 1 Signed-off-by ChangeLog &> /dev/null
     if [ $? -ne 0 ]; then
         echo "Building ChangeLog"
-        git log --cherry-pick --right-only --no-merges --pretty --summary --numstat $PREV_BRANCH..HEAD > $GIT_ABS/ChangeLog
+        git log --cherry-pick --right-only --no-merges --pretty --summary --numstat $PREV_BRANCH...HEAD > $GIT_ABS/ChangeLog
     else
         echo "Not overwriting existing ChangeLog!"
     fi

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


hooks/post-receive
-- 
Evergreen ILS




More information about the open-ils-commits mailing list