Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
bugzilla
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
etersoft
bugzilla
Commits
ac3b5ab8
Commit
ac3b5ab8
authored
Oct 24, 2000
by
tara%tequilarista.org
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Landing duplicates stuff from gervase markham
parent
cf9b879f
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
177 additions
and
2 deletions
+177
-2
checksetup.pl
checksetup.pl
+44
-1
collectstats.pl
collectstats.pl
+84
-0
defparams.pl
defparams.pl
+44
-0
process_bug.cgi
process_bug.cgi
+5
-1
No files found.
checksetup.pl
View file @
ac3b5ab8
...
...
@@ -835,9 +835,12 @@ $table{shadowlog} =
ts timestamp,
reflected tinyint not null,
command mediumtext not null,
index(reflected)'
;
# GRM
$table
{
duplicates
}
=
'dupe_of mediumint(9) not null,
dupe mediumint(9) not null primary key'
;
###########################################################################
...
...
@@ -1745,6 +1748,46 @@ if ( CountIndexes('keywords') != 3 ) {
}
# 2000-07-15 Added duplicates table so Bugzilla tracks duplicates in a better
# way than it used to. This code searches the comments to populate the table
# initially. It's executed if the table is empty; if it's empty because there
# are no dupes (as opposed to having just created the table) it won't have
# any effect anyway, so it doesn't matter.
# This should give us the number of populated rows but seems to return "5"
# all the time <shrug>
$dbh
->
prepare
(
"SELECT * FROM duplicates"
);
$sth
->
execute
();
if
(
$sth
->
fetchrow_array
()
==
5
)
{
# populate table
print
(
"Populating duplicates table...\n"
);
$sth
=
$dbh
->
prepare
(
"SELECT longdescs.bug_id, thetext FROM longdescs left JOIN bugs using(bug_id) WHERE (thetext "
.
"regexp 'This bug has been marked as a duplicate of') AND (resolution = 'DUPLICATE') ORDER"
.
" BY longdescs.bug_when"
);
$sth
->
execute
();
my
%
dupes
;
my
$key
;
# Because of the way hashes work, this loop removes all but the last dupe
# resolution found for a given bug.
while
(
my
(
$dupe
,
$dupe_of
)
=
$sth
->
fetchrow_array
())
{
$dupes
{
$dupe
}
=
$dupe_of
;
}
foreach
$key
(
keys
(
%
dupes
))
{
$dupes
{
$key
}
=~
s/.*This bug has been marked as a duplicate of (\d{1,5}).*/$1/
;
$dbh
->
do
(
"INSERT INTO duplicates VALUES('$dupes{$key}', '$key')"
);
# BugItsADupeOf Dupe
}
$regenerateshadow
=
1
;
}
#
# If you had to change the --TABLE-- definition in any way, then add your
# differential change code *** A B O V E *** this comment.
...
...
collectstats.pl
View file @
ac3b5ab8
...
...
@@ -20,9 +20,11 @@
#
# Contributor(s): Terry Weissman <terry@mozilla.org>,
# Harrison Page <harrison@netscape.com>
# Gervase Markham <gerv@gerv.net>
# Run me out of cron at midnight to collect Bugzilla statistics.
use
DB_File
;
use
diagnostics
;
use
strict
;
use
vars
@::legal_product
,
...
...
@@ -43,6 +45,8 @@ foreach (@myproducts) {
&
collect_stats
(
$dir
,
$_
);
}
&
calculate_dupes
();
sub
check_data_dir
{
my
$dir
=
shift
;
...
...
@@ -100,6 +104,86 @@ FIN
}
}
sub
calculate_dupes
{
SendSQL
(
"SELECT * FROM duplicates"
);
my
%
dupes
;
my
%
count
;
my
@row
;
my
$key
;
my
$changed
=
1
;
my
$today
=
&
today
;
# Save % count here in a date-named file
# so we can read it back in to do changed counters
# First, delete it if it exists, so we don't add to the contents of an old file
if
(
-
e
"data/mining/dupes$today.db"
)
{
system
(
"rm -f data/mining/dupes$today.db"
);
}
dbmopen
(
%
count
,
"data/mining/dupes$today.db"
,
0644
)
||
die
"Can't open DBM dupes file: $!"
;
# Create a hash with key "a bug number", value "bug which that bug is a
# direct dupe of" - straight from the duplicates table.
while
(
@row
=
FetchSQLData
())
{
my
$dupe_of
=
shift
@row
;
my
$dupe
=
shift
@row
;
$dupes
{
$dupe
}
=
$dupe_of
;
}
# Total up the number of bugs which are dupes of a given bug
# count will then have key = "bug number",
# value = "number of immediate dupes of that bug".
foreach
$key
(
keys
(
%
dupes
))
{
my
$dupe_of
=
$dupes
{
$key
};
if
(
!
defined
(
$count
{
$dupe_of
}))
{
$count
{
$dupe_of
}
=
0
;
}
$count
{
$dupe_of
}
++
;
}
# Now we collapse the dupe tree by iterating over %count until
# there is no further change.
while
(
$changed
==
1
)
{
$changed
=
0
;
foreach
$key
(
keys
(
%
count
))
{
# if this bug is actually itself a dupe, and has a count...
if
(
defined
(
$dupes
{
$key
})
&&
$count
{
$key
}
>
0
)
{
# add that count onto the bug it is a dupe of,
# and zero the count; the check is to avoid
# loops
if
(
$count
{
$dupes
{
$key
}}
!=
0
)
{
$count
{
$dupes
{
$key
}}
+=
$count
{
$key
};
$count
{
$key
}
=
0
;
$changed
=
1
;
}
}
}
}
# Remove the values for which the count is zero
foreach
$key
(
keys
(
%
count
))
{
if
(
$count
{
$key
}
==
0
)
{
delete
$count
{
$key
};
}
}
dbmclose
(
%
count
);
}
sub
today
{
my
(
$dom
,
$mon
,
$year
)
=
(
localtime
(
time
))[
3
,
4
,
5
];
return
sprintf
"%04d%02d%02d"
,
1900
+
$year
,
++
$mon
,
$dom
;
...
...
defparams.pl
View file @
ac3b5ab8
...
...
@@ -284,6 +284,50 @@ information about what Bugzilla is and what it can do, see
<A HREF=\"http://www.mozilla.org/bugs/\"><B>bug pages</B></A>."
);
DefParam
(
"mostfreqhtml"
,
"The HTML which appears at the top of the list of most-frequently-reported bugs. Use it to explain the page, set a maintainer etc."
,
"l"
,
q{
<br><p>
<b>What are "most frequent bugs"?</b>
<blockquote>The Most Frequent Bugs page lists the known open bugs which
are reported most frequently in recent builds of Mozilla. It is automatically
generated from the Bugzilla database.
This information is provided in order to assist in minimizing
the amount of duplicate bugs entered into Bugzilla which in turn cuts down
on development time.
</blockquote>
<b>How do I use this list?</b>
<ul>
<li>Review the most frequent bugs list.</li>
<li>If problem is listed:</li>
<ul>
<li>Click on Bug # link to confirm that you have found the same bug and comment
if you have additional information. Or move on with your testing
of the product.</li>
</ul>
<li>If problem not listed:</li>
<ul>
<li>Go to the <a href="http://bugzilla.mozilla.org/query.cgi">Bugzilla Query/Search</a>
page to try and locate a similar bug that has already been written.</li>
<li>If you find your bug in Bugzilla, feel free to comment with any new or
additional data you may have.</li>
<li>If you cannot find your problem already documented in Bugzilla, go to the
<a href="http://www.mozilla.org/qualtiy/help/bug-form.html">Bugzilla Helper</a> and post a new bug.</li>
</ul>
</ul>
<br>
}
);
DefParam
(
"mybugstemplate"
,
"This is the URL to use to bring up a simple 'all of my bugs' list for a user. %userid% will get replaced with the login name of a user."
,
"t"
,
...
...
process_bug.cgi
View file @
ac3b5ab8
...
...
@@ -498,8 +498,12 @@ SWITCH: for ($::FORM{'knob'}) {
last
SWITCH
;
};
/^reopen$/
&&
CheckonComment
(
"reopen"
)
&&
do
{
SendSQL
(
"SELECT resolution FROM bugs WHERE bug_id = $::FORM{'id'}"
);
ChangeStatus
(
'REOPENED'
);
ChangeResolution
(
''
);
if
(
FetchOneColumn
()
eq
'DUPLICATE'
)
{
SendSQL
(
"DELETE FROM duplicates WHERE dupe = $::FORM{'id'}"
);
}
last
SWITCH
;
};
/^verify$/
&&
CheckonComment
(
"verify"
)
&&
do
{
...
...
@@ -539,8 +543,8 @@ SWITCH: for ($::FORM{'knob'}) {
if
(
Param
(
'strictvaluechecks'
)
)
{
CheckFormFieldDefined
(
\%::
FORM
,
'comment'
);
}
SendSQL
(
"INSERT INTO duplicates VALUES ($num, $::FORM{'id'})"
);
$::FORM
{
'comment'
}
.=
"\n\n*** This bug has been marked as a duplicate of $num ***"
;
print
"<TABLE BORDER=1><TD><H2>Notation added to bug $num</H2>\n"
;
system
(
"./processmail"
,
$num
,
$::FORM
{
'who'
});
print
"<TD><A HREF=\"show_bug.cgi?id=$num\">Go To BUG# $num</A></TABLE>\n"
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment