Diff
Modified: trunk/Tools/ChangeLog (284282 => 284283)
--- trunk/Tools/ChangeLog 2021-10-15 22:41:44 UTC (rev 284282)
+++ trunk/Tools/ChangeLog 2021-10-15 22:51:41 UTC (rev 284283)
@@ -1,3 +1,20 @@
+2021-10-15 Jonathan Bedard <[email protected]>
+
+ [webkitscmpy] Allow repositories to define custom setup commands
+ https://bugs.webkit.org/show_bug.cgi?id=231345
+ <rdar://problem/83960249>
+
+ Reviewed by Dewei Zhu.
+
+ * Scripts/git-webkit: Define changelog conflict resolver.
+ * Scripts/libraries/webkitscmpy/setup.py: Add inspect2 as dependency, bump version.
+ * Scripts/libraries/webkitscmpy/webkitscmpy/__init__.py: Ditto.
+ * Scripts/libraries/webkitscmpy/webkitscmpy/program/__init__.py:
+ (main): Attempt to resolve additional_setup function.
+ * Scripts/libraries/webkitscmpy/webkitscmpy/program/setup.py:
+ (Setup.github): Invoke additional_setup function, if it exists.
+ (Setup.git): Ditto.
+
2021-10-15 BJ Burg <[email protected]>
[Cocoa] Web Inspector: handle Promise objects returned from evaluateScriptInExtensionTab
Modified: trunk/Tools/Scripts/git-webkit (284282 => 284283)
--- trunk/Tools/Scripts/git-webkit 2021-10-15 22:41:44 UTC (rev 284282)
+++ trunk/Tools/Scripts/git-webkit 2021-10-15 22:51:41 UTC (rev 284283)
@@ -26,7 +26,8 @@
import sys
import webkitpy
-from webkitscmpy import local, program, remote
+from webkitcorepy import run
+from webkitscmpy import local, program, remote, Contributor, log
def is_webkit_filter(to_return):
@@ -45,10 +46,30 @@
return callback
+def additional_setup(args, repository):
+ if not isinstance(repository, local.Git):
+ return 0
+
+ log.warning('Setting merging behavior for changelogs...')
+ if run([
+ repository.executable(),
+ 'config', 'merge.changelog.driver',
+ 'perl {} --merge-driver -c %O %A %B'.format(os.path.join(
+ os.path.abspath(os.path.dirname(os.path.dirname(os.path.dirname(os.path.dirname(__file__))))),
+ 'OpenSource', 'Tools', 'Scripts', 'resolve-ChangeLogs',
+ )),
+ ], capture_output=True, cwd=repository.root_path).returncode:
+ sys.stderr.write('Failed to set the git merging behaivor for changelogs...\n')
+ return 1
+ log.warning('Set merging behavior for changelogs!')
+ return 0
+
+
if '__main__' == __name__:
sys.exit(program.main(
path=os.path.dirname(__file__),
identifier_template=is_webkit_filter('Canonical link: https://commits.webkit.org/{}'),
subversion=is_webkit_filter('https://svn.webkit.org/repository/webkit'),
+ additional_setup=is_webkit_filter(additional_setup),
))
Modified: trunk/Tools/Scripts/libraries/webkitscmpy/setup.py (284282 => 284283)
--- trunk/Tools/Scripts/libraries/webkitscmpy/setup.py 2021-10-15 22:41:44 UTC (rev 284282)
+++ trunk/Tools/Scripts/libraries/webkitscmpy/setup.py 2021-10-15 22:51:41 UTC (rev 284283)
@@ -29,7 +29,7 @@
setup(
name='webkitscmpy',
- version='2.2.11',
+ version='2.2.12',
description='Library designed to interact with git and svn repositories.',
long_description=readme(),
classifiers=[
@@ -58,7 +58,7 @@
'webkitscmpy.test',
],
scripts=['git-webkit'],
- install_requires=['fasteners', 'monotonic', 'webkitcorepy', 'xmltodict'],
+ install_requires=['fasteners', 'inspect2', 'monotonic', 'webkitcorepy', 'xmltodict'],
include_package_data=True,
zip_safe=False,
)
Modified: trunk/Tools/Scripts/libraries/webkitscmpy/webkitscmpy/__init__.py (284282 => 284283)
--- trunk/Tools/Scripts/libraries/webkitscmpy/webkitscmpy/__init__.py 2021-10-15 22:41:44 UTC (rev 284282)
+++ trunk/Tools/Scripts/libraries/webkitscmpy/webkitscmpy/__init__.py 2021-10-15 22:51:41 UTC (rev 284283)
@@ -46,7 +46,7 @@
"Please install webkitcorepy with `pip install webkitcorepy --extra-index-url <package index URL>`"
)
-version = Version(2, 2, 11)
+version = Version(2, 2, 12)
AutoInstall.register(Package('fasteners', Version(0, 15, 0)))
AutoInstall.register(Package('monotonic', Version(1, 5)))
@@ -53,6 +53,9 @@
AutoInstall.register(Package('whichcraft', Version(0, 6, 1)))
AutoInstall.register(Package('xmltodict', Version(0, 11, 0)))
+if sys.version_info < (3, 0):
+ AutoInstall.register(Package('inspect2', Version(0, 1, 2)))
+
from webkitscmpy.contributor import Contributor
from webkitscmpy.commit import Commit
from webkitscmpy.pull_request import PullRequest
Modified: trunk/Tools/Scripts/libraries/webkitscmpy/webkitscmpy/program/__init__.py (284282 => 284283)
--- trunk/Tools/Scripts/libraries/webkitscmpy/webkitscmpy/program/__init__.py 2021-10-15 22:41:44 UTC (rev 284282)
+++ trunk/Tools/Scripts/libraries/webkitscmpy/webkitscmpy/program/__init__.py 2021-10-15 22:51:41 UTC (rev 284283)
@@ -42,7 +42,10 @@
from webkitscmpy import local, log, remote
-def main(args=None, path=None, loggers=None, contributors=None, identifier_template=None, subversion=None):
+def main(
+ args=None, path=None, loggers=None, contributors=None,
+ identifier_template=None, subversion=None, additional_setup=None,
+):
logging.basicConfig(level=logging.WARNING)
loggers = [logging.getLogger(), webkitcorepy_log, log] + (loggers or [])
@@ -110,6 +113,13 @@
if callable(subversion):
subversion = subversion(repository)
+ if sys.version_info > (3, 0):
+ import inspect
+ else:
+ import inspect2 as inspect
+ if callable(additional_setup) and list(inspect.signature(additional_setup).parameters.keys()) == ['repository']:
+ additional_setup = additional_setup(repository)
+
if not getattr(parsed, 'main', None):
parser.print_help()
return -1
@@ -119,4 +129,5 @@
repository=repository,
identifier_template=identifier_template,
subversion=subversion,
+ additional_setup=additional_setup,
)
Modified: trunk/Tools/Scripts/libraries/webkitscmpy/webkitscmpy/program/setup.py (284282 => 284283)
--- trunk/Tools/Scripts/libraries/webkitscmpy/webkitscmpy/program/setup.py 2021-10-15 22:41:44 UTC (rev 284282)
+++ trunk/Tools/Scripts/libraries/webkitscmpy/webkitscmpy/program/setup.py 2021-10-15 22:51:41 UTC (rev 284283)
@@ -34,11 +34,16 @@
help = 'Configure local settings for the current repository'
@classmethod
- def github(cls, args, repository, **kwargs):
+ def github(cls, args, repository, additional_setup=None, **kwargs):
log.warning('Saving GitHub credentials in system credential store...')
username, access_token = repository.credentials(required=True)
log.warning('GitHub credentials saved via Keyring!')
+ # Any additional setup passed to main
+ result = 0
+ if additional_setup:
+ result += additional_setup(args, repository)
+
log.warning('Verifying user owned fork...')
auth = HTTPBasicAuth(username, access_token)
response = requests.get('{}/repos/{}/{}'.format(
@@ -48,7 +53,7 @@
), auth=auth, headers=dict(Accept='application/vnd.github.v3+json'))
if response.status_code == 200:
log.warning("User already owns a fork of '{}'!".format(repository.name))
- return 0
+ return result
if repository.owner == username or args.defaults or Terminal.choose(
"Create a private fork of '{}' belonging to '{}'".format(repository.name, username),
@@ -70,10 +75,10 @@
sys.stderr.write("Failed to create a fork of '{}' belonging to '{}'\n".format(repository.name, username))
return 1
log.warning("Created a private fork of '{}' belonging to '{}'!".format(repository.name, username))
- return 0
+ return result
@classmethod
- def git(cls, args, repository, **kwargs):
+ def git(cls, args, repository, additional_setup=None, **kwargs):
global_config = local.Git.config()
result = 0
@@ -160,6 +165,10 @@
else:
log.warning("Set git editor to '{}'".format(editor_name))
+ # Any additional setup passed to main
+ if additional_setup:
+ result += additional_setup(args, repository)
+
# Only configure GitHub if the URL is a GitHub URL
rmt = repository.remote()
if not isinstance(rmt, remote.GitHub):