⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 release-notes.html.tmpl

📁 buzilla软件
💻 TMPL
📖 第 1 页 / 共 4 页
字号:
  <a href="http://www.bugzilla.org/security/2.20.4/">Security Advisory</a>.</p><h2><a name="v30_upgrading"></a>How to Upgrade From An Older Version</h2><h3>Notes For Upgraders</h3><ul>  <li>If you upgrade by CVS, there are several .cvsignore files    that are now in CVS instead of being locally created by     <kbd>checksetup.pl</kbd>. This means that you will have to    delete those files when CVS tells you there's a conflict, and    then run <kbd>cvs update</kbd> again.</li>  <li>In this version of [% terms.Bugzilla %], the Summary field    is now limited to 255 characters. When you upgrade, any Summary    longer than that will be truncated, and the old summary will be    preserved in a comment.</li>  <li>If you have the <kbd>utf8</kbd> parameter turned on, at some    point you will have to convert your database. <kbd>checksetup.pl</kbd>    will tell you when this is, and it will give you certain instructions    at that time, that you have to follow before you can complete    the upgrade. Don't do the conversion yourself manually--follow    the instructions of checksetup.pl.</li>  <li>If you ever ran 2.23.3, 2.23.4, or 3.0rc1, you will have to run    <kbd>./collectstats.pl --regenerate</kbd> at the command line, because    the data for your Old Charts is corrupted. This can take several days,    so you may only want to run it if you use Old Charts.</li>  <li>You should also read the Outstanding Issues sections of    <a href="#v30_previous">older release notes</a> if you are upgrading    from a version lower than 2.22.</li></ul><h3>Steps For Upgrading</h3><p>Once you have read the notes above, see the  <a href="[% Param('docs_urlbase') FILTER html %]upgrade.html">Upgrading   documentation</a> for instructions on how to upgrade.</p><h2><a name="v30_code_changes"></a>Code Changes Which May Affect   Customizations</h2><ul>  <li><a href="#v30_code_loc"><strong>Packagers:</strong> Location    Variables Have Moved</a></li>  <li><a href="#v30_code_hooks">Hooks!</a></li>  <li><a href="#v30_code_api">API Documentation</a></li>  <li><a href="#v30_code_globals">Elimination of globals.pl</a></li>  <li><a href="#v30_code_scope">Cleaned Up Variable Scoping Issues</a></li>  <li><a href="#v30_code_sql">No More SendSQL</a></li>  <li><a href="#v30_code_auth">Auth Re-write</a></li>  <li><a href="#v30_code_obj">Bugzilla::Object</a></li>  <li><a href="#v30_code_req">Bugzilla-&gt;request_cache</a></li>  <li><a href="#v30_code_other">Other Changes</a></li></ul><h3><a name="v30_code_loc"></a><strong>Packagers:</strong> Location    Variables Have Moved</h3><p>In previous versions of [% terms.Bugzilla %], <kbd>Bugzilla::Config</kbd>  held all the paths for different things, such as the path to localconfig  and the path to the <kbd>data/</kbd> directory.</p><p>Now, all of this data is stored in a subroutine,  <kbd>Bugzilla::Constants::bz_locations</kbd>.</p><p>Also, note that for mod_perl, <kbd>bz_locations</kbd> must return  <em>absolute</em> (not relative) paths. There is already code in that  subroutine to help you with this.</p><h3><a name="v30_code_hooks"></a>Hooks!</h3><p>[% terms.Bugzilla %] now supports a code hook mechanism. See the   documentation for   <a href="[% Param('docs_urlbase') FILTER html %]api/Bugzilla/Hook.html">Bugzilla::Hook</a>  for more details.</p><p>This gives [% terms.Bugzilla %] very advanced plugin support. You can  hook templates, hook code, add new parameters, and use the XML-RPC  interface. So we'd like to see some [% terms.Bugzilla %] plugins  written! Let us know on the <a href="http://bugzilla.org/cgi-bin/mj_wwwusr?func=lists-long-full&amp;extra=developers">developers&#64;bugzilla.org</a>  mailing list if you write a plugin.</p><p>If you need more hooks, please   <a href="http://www.bugzilla.org/developers/reporting_bugs.html">File a  bug</a>!</p><h3><a name="v30_code_api"></a>API Documentation</h3><p>[% terms.Bugzilla %] now ships with all of its perldoc built  as HTML. Go ahead and read the  <a href="[% Param('docs_urlbase') FILTER html %]api/">API Documentation</a>  for all of the [% terms.Bugzilla %] modules now! Even scripts like  <kbd>checksetup.pl</kbd> have HTML documentation.</p><h3><a name="v30_code_globals"></a>Elimination of globals.pl</h3><p>The old file <kbd>globals.pl</kbd> has been eliminated.  Its code is now in various modules. Each function went to the module  that was appropriate for it.</p><p>Usually we filed [% terms.abug %] in   <a href="https://bugzilla.mozilla.org">bugzilla.mozilla.org</a> for  each function we moved. You can search there for the old name of  the function, and that should get you the information about what  it's called now and where it lives.</p><h3><a name="v30_code_scope"></a>Cleaned Up Variable Scoping Issues</h3><p>In normal perl, you can have code like this:</p><pre>my $var = 0;sub y { $var++ }</pre><p>However, under mod_perl that doesn't work. So variables are no  longer &quot;shared&quot; with subroutines--instead all variables  that a subroutine needs must be declared inside the subroutine itself.</p><h3><a name="v30_code_sql"></a>No More SendSQL</h3><p>The old <kbd>SendSQL</kbd> function and all of its companions are  <strong>gone</strong>. Instead, we now use DBI for all database  interaction.</p><p>For more information about how to use   <a href="http://search.cpan.org/perldoc?DBI">DBI</a> with   [% terms.Bugzilla %], see the   <a href="http://www.bugzilla.org/docs/developer.html#sql-sendreceive">Developer's  Guide Section About DBI</a></p><h3><a name="v30_code_auth"></a>Auth Re-write</h3><p>The <kbd>Bugzilla::Auth</kbd> family of modules have been completely  re-written. For details on how the new structure of authentication,  read the   <a href="[% Param('docs_urlbase') FILTER html %]api/Bugzilla/Auth.html">Bugzilla::Auth  API docs</a>.</p><p>It should be very easy to write new authentication plugins, now.</p><h3><a name="v30_code_obj"></a>Bugzilla::Object</h3><p>There is a new base class for most of our objects,   <a href="[% Param('docs_urlbase') FILTER html %]api/Bugzilla/Object.html">Bugzilla::Object</a>.  It makes it really easy to create new objects based on things that are   in the database.</p><h3><a name="v30_code_req"></a>Bugzilla-&gt;request-cache</h3><p><kbd>Bugzilla.pm</kbd> used to cache things like the database  connection in package-global variables (like <kbd>$_dbh</kbd>).  That doesn't work in mod_perl, so instead now there's a hash  that can be accessed through <code>Bugzilla-&gt;request_cache</code>  to store things for the rest of the current page request.</p><p>You shouldn't access <code>Bugzilla-&gt;request_cache</code> directly,  but you should use it inside of <kbd>Bugzilla.pm</kbd> if you modify  that. The only time you should be accessing it directly is if you need  to reset one of the caches. Hash keys are always named after the function  that they cache, so to reset the template object, you'd do:  <code>delete Bugzilla-&gt;request_cache-&gt;{template};</code>.</p><h3><a name="v30_code_other"></a>Other Changes</h3><ul>  <li><code>checksetup.pl</code> has been completely re-written, and most    of its code moved into modules in the <kbd>Bugzilla::Install</kbd>    namespace. See the    <a href="[% Param('docs_urlbase') FILTER html %]api/checksetup.html">checksetup    documentation</a> and <a href="https://bugzilla.mozilla.org/showdependencytree.cgi?id=277502&amp;hide_resolved=0">[% terms.Bugzilla %]   [%+ terms.bug %] 277502</a> for details.</li>  <li>Instead of <kbd>UserInGroup()</kbd>, all of [% terms.Bugzilla %] now     uses <kbd>Bugzilla-&gt;user-&gt;in_group</kbd></li>  <li>mod_perl doesn't like dependency loops in modules, so we now have    a test for that detects dependency loops in modules when you run   <kbd>runtests.pl</kbd>.</li>  <li><kbd>globals.pl</kbd> used to modify the environment variables,    like <kbd>PATH</kbd>. That now happens in <kbd>Bugzilla.pm</kbd>.</li>  <li>Templates can now link to the documentation more easily.    See the <kbd>global/code-error.html.tmpl</kbd> and    <kbd>global/user-error.html.tmpl</kbd> templates for examples.    (Search for &quot;docslinks.&quot;)</li>  <li>Parameters are accessed through <kbd>Bugzilla-&gt;params</kbd>    instead of using the <kbd>Param()</kbd> function, now.</li>  <li>The variables from the <kbd>localconfig</kbd> file are accessed    through the <code>Bugzilla-&gt;localconfig</code> hash instead of through    <kbd>Bugzilla::Config</kbd>.</li>  <li><kbd>Bugzilla::BugMail::MessageToMTA()</kbd> has moved into its    own module, along with other mail-handling code, called    <kbd>Bugzilla::Mailer</kbd></li>  <li>The <kbd>CheckCanChangeField()</kbd> subroutine in     <kbd>process_bug.cgi</kbd> has been moved to <kbd>Bugzilla::Bug</kbd>,    and is now a method of a [% terms.bug %] object.</li>  <li>The code that used to be in the <kbd>global/banner.html.tmpl</kbd>    template is now in <kbd>global/header.html.tmpl</kbd>. The banner    still exists, but the file is empty.</li></ul><h2><a name="v30_previous"></a>Release Notes For Previous Versions</h2><p>Release notes for versions of [% terms.Bugzilla %] for versions  prior to 3.0 are only available in text format:   <a href="docs/rel_notes.txt">Release Notes for [% terms.Bugzilla %] 2.22  and Earlier</a>.</p>[% INCLUDE global/footer.html.tmpl %][% BLOCK db_req %]  [% SET m = DB_MODULE.$db %]  <h3><a name="v30_req_[% db FILTER html %]"></a>For [% m.name FILTER html %]     Users</h3>  <ul>    <li>[% m.name FILTER html %] v[% m.db_version FILTER html %]</li>    <li><strong>perl module:</strong>      [%+ m.dbd.module FILTER html %] v[% m.dbd.version FILTER html %]</li>  </ul>[% END %][% BLOCK req_table %]  <table class="req_table" border="0" cellspacing="0" cellpadding="0">    <tr>      <th>Module</th> <th>Version</th>      [% IF include_feature %]        <th>Enables Feature</th>      [% END %]    </tr>    [% FOREACH req = reqs %]      <tr>        <td [% 'class="req_new"' IF new.contains(req.package) %]>          [%- req.module FILTER html %]</td>         <td [% 'class="req_new"' IF updated.contains(req.package)                                     OR new.contains(req.package) %]>          [%- IF req.version == 0 %]            (Any)          [% ELSE %]            [%- req.version FILTER html %]          [% END %]        </td>        [% IF include_feature %]           <td>[% req.feature FILTER html %]</td>        [% END %]      </tr>    [% END %]</table>[% END %]

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -