[webkit-changes] [WebKit/WebKit] 45adfd: [git-webkit] Automatically classify commits

Jonathan Bedard noreply at github.com
Tue Feb 14 13:52:53 PST 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 45adfd10be4108a4331f479ddc809104ca85a45a
      https://github.com/WebKit/WebKit/commit/45adfd10be4108a4331f479ddc809104ca85a45a
  Author: Jonathan Bedard <jbedard at apple.com>
  Date:   2023-02-14 (Tue, 14 Feb 2023)

  Changed paths:
    M Tools/Scripts/git-webkit
    M Tools/Scripts/libraries/webkitscmpy/setup.py
    M Tools/Scripts/libraries/webkitscmpy/webkitscmpy/__init__.py
    A Tools/Scripts/libraries/webkitscmpy/webkitscmpy/commit_classifier.py
    M Tools/Scripts/libraries/webkitscmpy/webkitscmpy/local/git.py
    M Tools/Scripts/libraries/webkitscmpy/webkitscmpy/local/scm.py
    M Tools/Scripts/libraries/webkitscmpy/webkitscmpy/local/svn.py
    M Tools/Scripts/libraries/webkitscmpy/webkitscmpy/program/__init__.py
    A Tools/Scripts/libraries/webkitscmpy/webkitscmpy/program/classify.py
    M Tools/Scripts/libraries/webkitscmpy/webkitscmpy/program/pickable.py
    M Tools/Scripts/libraries/webkitscmpy/webkitscmpy/remote/bitbucket.py
    M Tools/Scripts/libraries/webkitscmpy/webkitscmpy/remote/git_hub.py
    M Tools/Scripts/libraries/webkitscmpy/webkitscmpy/remote/scm.py
    M Tools/Scripts/libraries/webkitscmpy/webkitscmpy/remote/svn.py
    M Tools/Scripts/libraries/webkitscmpy/webkitscmpy/scm_base.py
    A Tools/Scripts/libraries/webkitscmpy/webkitscmpy/test/classify_unittest.py
    M Tools/Scripts/libraries/webkitscmpy/webkitscmpy/test/pickable_unittest.py
    A metadata/commit_classes.json
    M metadata/git_config_extension

  Log Message:
  -----------
  [git-webkit] Automatically classify commits
https://bugs.webkit.org/show_bug.cgi?id=251824
rdar://105105664

Rubber-stamped by Aakash Jain.

The WebKit project often wants tools to reason about the type of commit they are
dealing with. For example, certain test gardening changes don't require review.
And many EWS tests don't need to be run when adding to contributors.json.

* Tools/Scripts/git-webkit: Pass WebKit's commit classifier as a default.
* Tools/Scripts/libraries/webkitscmpy/setup.py: Bump version.
* Tools/Scripts/libraries/webkitscmpy/webkitscmpy/__init__.py: Export CommitClassifier.
* Tools/Scripts/libraries/webkitscmpy/webkitscmpy/commit_classifier.py: Added.
(CommitClassifier.HeaderFilter): A string filter which can be a regex or a fuzzy matcher.
(CommitClassifier.CommitClass): Object representing a type of commit in a project.
(CommitClassifier.load): Load a list of commit classes from a json file.
(CommitClassifier.classify): Given a commit and a repository, attempt to assign the
commit a class.
* Tools/Scripts/libraries/webkitscmpy/webkitscmpy/local/git.py:
(Git.__init__): Pass classifier.
* Tools/Scripts/libraries/webkitscmpy/webkitscmpy/local/scm.py:
(Scm.__init__): Pass classifier.
* Tools/Scripts/libraries/webkitscmpy/webkitscmpy/local/svn.py:
(Svn.__init__): Pass classifier.
* Tools/Scripts/libraries/webkitscmpy/webkitscmpy/program/__init__.py:
(main): Pass provisional classifier to parsers and help message generators.
* Tools/Scripts/libraries/webkitscmpy/webkitscmpy/program/classify.py: Added.
(Classify.help): Generate a help message including commit class names.
(Classify.parser): Added.
(Classify.main): Classify the specified commit, printing out its classification.
* Tools/Scripts/libraries/webkitscmpy/webkitscmpy/program/pickable.py:
(Pickable.parser): Generate help message based on a provisional classifier.
(Pickable.pickable): Use CommitClassifier object instead of implementing classification.
* Tools/Scripts/libraries/webkitscmpy/webkitscmpy/remote/bitbucket.py:
(BitBucket.__init__): Pass classifier.
* Tools/Scripts/libraries/webkitscmpy/webkitscmpy/remote/git_hub.py:
* Tools/Scripts/libraries/webkitscmpy/webkitscmpy/remote/scm.py:
(Scm.from_url): Pass classifier.
(Scm.__init__): Ditto.
* Tools/Scripts/libraries/webkitscmpy/webkitscmpy/remote/svn.py:
(Svn.__init__): Pass classifier.
* Tools/Scripts/libraries/webkitscmpy/webkitscmpy/scm_base.py:
(ScmBase.__init__): Pass classifier.
* Tools/Scripts/libraries/webkitscmpy/webkitscmpy/test/classify_unittest.py: Added.
(TestClassify.test_no_classes):
(TestClassify.test_list_classes):
(TestClassify.test_header_success):
(TestClassify.test_header_failure):
(TestClassify.test_path_success):
(TestClassify.test_path_failure):
* Tools/Scripts/libraries/webkitscmpy/webkitscmpy/test/pickable_unittest.py:
(TestPickable.test_branch):
(TestPickable.test_branch_diverged_cherry_pick):
(TestPickable.test_branch_none):
(TestPickable.test_branch_include_versioning):
(TestPickable.test_branch_gardening_exclude):
(TestPickable.test_branch_gardening_include):
* metadata/commit_classes.json: Added.
* metadata/git_config_extension: "Test" commits are now defined by their classifier.

Canonical link: https://commits.webkit.org/260273@main




More information about the webkit-changes mailing list