This patch is meant to stimulate a discussion about how to deal with the fact we cannot reasonable support obsolete versions of wine ;^)
For example we would like to be able to age Test Results and probably do not want submittions of test results or bugs that are from older versions of wine. On the other hand we should accept new bug reports from CVS and at least our current release. Since we cannot simply delete old versions in bugzilla I came up the following patch.
To use this patch you need to run the following sql:
use bugs; alter table versions add column status enum('obsolete','supported','current') NOT NULL default 'current';
change log: Add status ('obsolete','supported' or 'current') to versions table
files changed: editversions.cgi
Index: editversions.cgi =================================================================== RCS file: /home/wine/bugzilla/editversions.cgi,v retrieving revision 1.1.1.1 diff -u -r1.1.1.1 editversions.cgi --- editversions.cgi 1 Dec 2004 23:15:14 -0000 1.1.1.1 +++ editversions.cgi 29 Oct 2005 22:02:25 -0000 @@ -105,13 +105,28 @@ # Displays the form to edit a version #
-sub EmitFormElements ($$) +sub EmitFormElements ($$$) { - my ($product, $version) = @_; + my ($product, $version, $status) = @_; + my @aStatus = ("obsolete","supported","current");
print " <TH ALIGN="right">Version:</TH>\n"; print " <TD><INPUT SIZE=64 MAXLENGTH=64 NAME="version" VALUE="" . value_quote($version) . "">\n"; + print " </TD></TR>\n"; + print " <TH ALIGN="right">Status:</TH>\n"; + print "<TD><select name="status">\n"; + + for (my $i = 0; $i < @aStatus; ++$i) { + if ($aStatus[$i] eq $status) { + print "<option value=" .value_quote($aStatus[$i]). " selected>" .value_quote($aStatus[$i]). "\n"; + } + else { + print "<option value=" .value_quote($aStatus[$i]). ">" .value_quote($aStatus[$i]). "\n"; + } + } + print "</select></TD>\n"; + print " <INPUT TYPE=HIDDEN NAME="product" VALUE="" . value_quote($product) . ""></TD>\n"; } @@ -173,6 +188,7 @@ # my $product = trim($::FORM{product} || ''); my $version = trim($::FORM{version} || ''); +my $status = trim($::FORM{status} || ''); my $action = trim($::FORM{action} || ''); my $localtrailer; if ($version) { @@ -225,21 +241,24 @@ CheckProduct($product); my $product_id = get_product_id($product);
- SendSQL("SELECT value + SendSQL("SELECT value, status FROM versions WHERE product_id=$product_id ORDER BY value");
print "<TABLE BORDER=1 CELLPADDING=4 CELLSPACING=0><TR BGCOLOR="#6666FF">\n"; print " <TH ALIGN="left">Edit version ...</TH>\n"; - #print " <TH ALIGN="left">Bugs</TH>\n"; + print " <TH ALIGN="left">Status</TH>\n"; print " <TH ALIGN="left">Action</TH>\n"; print "</TR>"; while ( MoreSQLData() ) { - my $version = FetchOneColumn(); + my @data = FetchSQLData(); + my $version = $data[0]; + my $status = $data[1]; + print "<TR>\n"; - print " <TD VALIGN="top"><A HREF="editversions.cgi?product=", url_quote($product), "&version=", url_quote($version), "&action=edit"><B>$version</B></A></TD>\n"; - #print " <TD VALIGN="top">$bugs</TD>\n"; + print " <TD VALIGN="top"><A HREF="editversions.cgi?product=", url_quote($product), "&version=", url_quote($version),"&status=", url_quote($status), "&action=edit"><B>$version</B></A></TD>\n"; + print " <TD VALIGN="top">" ,$status, "</TD>\n"; print " <TD VALIGN="top"><A HREF="editversions.cgi?product=", url_quote($product), "&version=", url_quote($version), "&action=del"><B>Delete</B></A></TD>\n"; print "</TR>"; } @@ -271,7 +290,7 @@ print "<FORM METHOD=POST ACTION=editversions.cgi>\n"; print "<TABLE BORDER=0 CELLPADDING=4 CELLSPACING=0><TR>\n";
- EmitFormElements($product, $version); + EmitFormElements($product, $version, $status);
print "</TABLE>\n<HR>\n"; print "<INPUT TYPE=SUBMIT VALUE="Add">\n"; @@ -312,9 +331,9 @@
# Add the new version SendSQL("INSERT INTO versions ( " . - "value, product_id" . + "value, status, product_id" . " ) VALUES ( " . - SqlQuote($version) . ", $product_id)"); + SqlQuote($version) .",". SqlQuote($status) .", $product_id)");
# Make versioncache flush unlink "data/versioncache"; @@ -467,7 +486,7 @@ print "<FORM METHOD=POST ACTION=editversions.cgi>\n"; print "<TABLE BORDER=0 CELLPADDING=4 CELLSPACING=0><TR>\n";
- EmitFormElements($product, $version); + EmitFormElements($product, $version, $status );
print "</TR></TABLE>\n";
@@ -523,13 +542,14 @@ delta_ts = delta_ts WHERE version=" . SqlQuote($versionold) . " AND product_id = $product_id"); + } SendSQL("UPDATE versions - SET value=" . SqlQuote($version) . " + SET value=" . SqlQuote($version) .",". "status=" . SqlQuote($status) . " WHERE product_id = $product_id AND value=" . SqlQuote($versionold)); unlink "data/versioncache"; print "Updated version.<BR>\n"; - } + SendSQL("UNLOCK TABLES");
PutTrailer($localtrailer);
Curious. The more we diverge our Bugzilla from the mainline Bugzilla, the harder it will be for us to upgrade. I've had requests to get us up to the latest release. But I'm fearful of the amount of work it will be to clean it up once the merge is complete.
That and the last time I upgraded Bugzilla the upgrade process deleted all the comments from the DB. (Note: not a problem anymore as we keep good DB backups.)
Maybe someone with more time can look into keeping our Bugzilla current and maintain our patches.
On Sat, 2005-10-29 at 16:24 -0600, Tony Lambregts wrote:
This patch is meant to stimulate a discussion about how to deal with the fact we cannot reasonable support obsolete versions of wine ;^)
For example we would like to be able to age Test Results and probably do not want submittions of test results or bugs that are from older versions of wine. On the other hand we should accept new bug reports from CVS and at least our current release. Since we cannot simply delete old versions in bugzilla I came up the following patch.
To use this patch you need to run the following sql:
use bugs; alter table versions add column status enum('obsolete','supported','current') NOT NULL default 'current';
change log: Add status ('obsolete','supported' or 'current') to versions table