Throw away my changes, and go revisit bug $id\n};
navigation_header();
exit;
}
+ my %deps;
+ if (defined $::FORM{'dependson'}) {
+ my $me = "blocked";
+ my $target = "dependson";
+ for (1..2) {
+ $deps{$target} = [];
+ my %seen;
+ foreach my $i (split('[\s,]+', $::FORM{$target})) {
+ if ($i eq "") {
+ next;
+ }
+ SendSQL("select bug_id from bugs where bug_id = " .
+ SqlQuote($i));
+ my $comp = FetchOneColumn();
+ if ($comp ne $i) {
+ print "$i is not a legal bug number
\n";
+ print "Click Back and try again.\n";
+ exit;
+ }
+ if (!exists $seen{$i}) {
+ push(@{$deps{$target}}, $i);
+ $seen{$i} = 1;
+ }
+ }
+ my @stack = @{$deps{$target}};
+ while (@stack) {
+ my $i = shift @stack;
+ SendSQL("select $target from dependencies where $me = $i");
+ while (MoreSQLData()) {
+ my $t = FetchOneColumn();
+ if ($t == $id) {
+ print "
Dependency loop detected!
\n";
+ print "The change you are making to dependencies\n";
+ print "has caused a circular dependency chain.\n";
+ print "Click Back and try again.\n";
+ exit;
+ }
+ if (!exists $seen{$t}) {
+ push @stack, $t;
+ $seen{$t} = 1;
+ }
+ }
+ }
+
+
+ my $tmp = $me;
+ $me = $target;
+ $target = $tmp;
+ }
+ }
my $query = "$basequery\nwhere bug_id = $id";
@@ -339,9 +417,65 @@ The changes made were:
}
}
+ SendSQL("select delta_ts from bugs where bug_id = $id");
+ $timestamp = FetchOneColumn();
+
+ if (defined $::FORM{'dependson'}) {
+ my $me = "blocked";
+ my $target = "dependson";
+ for (1..2) {
+ SendSQL("select $target from dependencies where $me = $id order by $target");
+ my %snapshot;
+ my @oldlist;
+ while (MoreSQLData()) {
+ push(@oldlist, FetchOneColumn());
+ }
+ my @newlist = sort {$a <=> $b} @{$deps{$target}};
+
+ while (0 < @oldlist || 0 < @newlist) {
+ if (@oldlist == 0 || (@newlist > 0 &&
+ $oldlist[0] > $newlist[0])) {
+ $snapshot{$newlist[0]} = SnapShotDeps($newlist[0], $me,
+ $target);
+ shift @newlist;
+ } elsif (@newlist == 0 || (@oldlist > 0 &&
+ $newlist[0] > $oldlist[0])) {
+ $snapshot{$oldlist[0]} = SnapShotDeps($oldlist[0], $me,
+ $target);
+ shift @oldlist;
+ } else {
+ if ($oldlist[0] != $newlist[0]) {
+ die "Error in list comparing code";
+ }
+ shift @oldlist;
+ shift @newlist;
+ }
+ }
+ my @keys = keys(%snapshot);
+ if (@keys) {
+ my $oldsnap = SnapShotDeps($id, $target, $me);
+ SendSQL("delete from dependencies where $me = $id");
+ foreach my $i (@{$deps{$target}}) {
+ SendSQL("insert into dependencies ($me, $target) values ($id, $i)");
+ }
+ foreach my $k (@keys) {
+ if (LogDependencyActivity($k, $snapshot{$k}, $me,
+ $target)) {
+ $dependencychanged{$k} = 1;
+ }
+
+ }
+ LogDependencyActivity($id, $oldsnap, $target, $me);
+ }
+
+ my $tmp = $me;
+ $me = $target;
+ $target = $tmp;
+ }
+ }
+
+
my @newvalues = SnapShotBug($id);
- my $whoid;
- my $timestamp;
foreach my $col (@::log_columns) {
my $old = shift @oldvalues;
my $new = shift @newvalues;
@@ -352,14 +486,9 @@ The changes made were:
$new = "";
}
if ($old ne $new) {
- if (!defined $whoid) {
- $whoid = DBNameToIdAndCheck($::FORM{'who'});
- SendSQL("select delta_ts from bugs where bug_id = $id");
- $timestamp = FetchOneColumn();
- }
- if ($col eq 'assigned_to') {
- $old = DBID_to_name($old);
- $new = DBID_to_name($new);
+ if ($col eq 'assigned_to' || $col eq 'qa_contact') {
+ $old = DBID_to_name($old) if $old != 0;
+ $new = DBID_to_name($new) if $new != 0;
}
$col = SqlQuote($col);
$old = SqlQuote($old);
@@ -374,6 +503,13 @@ The changes made were:
SendSQL("unlock tables");
system("./processmail $id $::FORM{'who'}");
print "
Back To BUG# $id |