[Webkit-unassigned] [Bug 152345] Teach dashboard code to compare non-integer revisions.

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Wed Feb 3 15:22:27 PST 2016


https://bugs.webkit.org/show_bug.cgi?id=152345

--- Comment #26 from Daniel Bates <dbates at webkit.org> ---
Comment on attachment 270457
  --> https://bugs.webkit.org/attachment.cgi?id=270457
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=270457&action=review

> Tools/ChangeLog:20
> +        (Trac.prototype.commitsOnBranchLaterThanRevision): Finds revisions on a branch great later than the specified revision.

Nit: This sentence does not read well.

> Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BuildbotQueue.js:290
> +            indexA = trac.indexOfRevision(a.revision[repositoryName]);

This will define a global variable named indexA. We should make this a local variable as you did for variable trac.

> Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BuildbotQueue.js:291
> +            indexB = trac.indexOfRevision(b.revision[repositoryName]);

Ditto.

> Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/Trac.js:73
> +    _commitsOnBranch: function(branchName, filter)
>      {
> +        if (!filter)
> +            filter = function(commit) { return true; };
>          return this.recordedCommits.filter(function(commit, index, array) {
>              return (!commit.containsBranchLocation || commit.branches.includes(branchName)) && filter(commit, index, array);
>          });
>      },

We always pass a filter to this function and that filter only looks at the index position. So, I suggest we remove the filter argument and have this function take optional begin and end index positions:

_commitsOnBranch(branchName, beginPosition, endPosition)
{
    beginPosition = beginPosition || 0;
    endPosition = endPosition || this.recordedCommits.length - 1;
    let commits = [];
    for (let i = beginPosition; i <= endPosition; ++i) {
        let commit = this.recordedCommits[i]
        if (!commit.containsBranchLocation || commit.branches.includes(branchName))
            commits.push(commit);
    }
    return commits;
},

This will allow us to remove the need to iterate over the entire array of recorded commits once we know either a begin or end position (or both).

> Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/Trac.js:82
> +        var indexToBeLaterThan = this.indexOfRevision(revision);
> +        function selectCommitsLaterThanRevision(commit, index, allCommits) {
> +            return index > indexToBeLaterThan;
> +        }
> +        var commits = this._commitsOnBranch(branchName, selectCommitsLaterThanRevision.bind(this));
> +        return commits;

Then we can implement this as:

let indexToBeLaterThan = this.indexOfRevision(revision);
console.assert(indexToBeLaterThan !== -1, revision + " is not in the list of recorded commits");
if (indexToBeLaterThan === -1)
    return [];
return this._commitsOnBranch(branchName, null, indexToBeLaterThan + 1);

> Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/Trac.js:93
> +        var indexOfFirstRevision = this.indexOfRevision(firstRevision);
> +        var indexOfLastRevision = this.indexOfRevision(lastRevision);
> +        function selectCommitsInRange(commit, index, allCommits) {
> +            return index >= indexOfFirstRevision && index <= indexOfLastRevision;
> +        }
> +        var commits = this._commitsOnBranch(branchName, selectCommitsInRange.bind(this));
> +        return commits;

And we can implement this as:

let indexOfFirstRevision = this.indexOfRevision(firstRevision);
console.assert(indexOfFirstRevision !== -1, firstRevision + " is not in the list of recorded commits");
if (indexOfFirstRevision === -1)
    return [];
let indexOfLastRevision = this.indexOfRevision(lastRevision);
console.assert(indexOfLastRevision !== -1, indexOfLastRevision + " is not in the list of recorded commits");
if (indexOfLastRevision === -1)
    return [];
return this._commitOnBranch(branchName, null, indexOfFirstRevision, indexOfLastRevision);

> Tools/BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/Utilities.js:177
> +Array.prototype.indexOfObjectPassingTest = function(predicate)
> +{
> +    for (var i = 0; i < this.length; ++i) {
> +        if (predicate(this[i]))
> +            return i;
> +    }
> +
> +    return -1;
> +};

This function is only used by Trac.indexOfRevision(). Unless you plan to make use of this function in a near future patch, I suggest that we inline the implementation of this function into Trac.indexOfRevision() and remove this function.

-- 
You are receiving this mail because:
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.webkit.org/pipermail/webkit-unassigned/attachments/20160203/1fb70e5b/attachment-0001.html>


More information about the webkit-unassigned mailing list