- Revision
- 293667
- Author
- jbed...@apple.com
- Date
- 2022-05-02 09:57:43 -0700 (Mon, 02 May 2022)
Log Message
[git-webkit] log should support ranges
https://bugs.webkit.org/show_bug.cgi?id=239510
<rdar://problem/92031167>
Reviewed by Ryan Haddad.
* Tools/Scripts/libraries/webkitscmpy/setup.py: Bump version.
* Tools/Scripts/libraries/webkitscmpy/webkitscmpy/__init__.py: Ditto.
* Tools/Scripts/libraries/webkitscmpy/webkitscmpy/program/command.py:
(FilteredCommand.replace): Break logic converting a substring into a revision or hash into a function.
(FilteredCommand.main): If an argument can be split by ..., convert it's substrings into revisions/hashes.
Canonical link: https://commits.webkit.org/250171@main
Modified Paths
Diff
Modified: trunk/Tools/ChangeLog (293666 => 293667)
--- trunk/Tools/ChangeLog 2022-05-02 16:52:55 UTC (rev 293666)
+++ trunk/Tools/ChangeLog 2022-05-02 16:57:43 UTC (rev 293667)
@@ -1,3 +1,17 @@
+2022-05-02 Jonathan Bedard <jbed...@apple.com>
+
+ [git-webkit] log should support ranges
+ https://bugs.webkit.org/show_bug.cgi?id=239510
+ <rdar://problem/92031167>
+
+ Reviewed by Ryan Haddad.
+
+ * Scripts/libraries/webkitscmpy/setup.py: Bump version.
+ * Scripts/libraries/webkitscmpy/webkitscmpy/__init__.py: Ditto.
+ * Scripts/libraries/webkitscmpy/webkitscmpy/program/command.py:
+ (FilteredCommand.replace): Break logic converting a substring into a revision or hash into a function.
+ (FilteredCommand.main): If an argument can be split by ..., convert it's substrings into revisions/hashes.
+
2022-05-02 Wenson Hsieh <wenson_hs...@apple.com>
[iOS] Add support for the "Markup Image" action when right clicking an image in editable content
Modified: trunk/Tools/Scripts/libraries/webkitscmpy/setup.py (293666 => 293667)
--- trunk/Tools/Scripts/libraries/webkitscmpy/setup.py 2022-05-02 16:52:55 UTC (rev 293666)
+++ trunk/Tools/Scripts/libraries/webkitscmpy/setup.py 2022-05-02 16:57:43 UTC (rev 293667)
@@ -29,7 +29,7 @@
setup(
name='webkitscmpy',
- version='4.12.1',
+ version='4.12.2',
description='Library designed to interact with git and svn repositories.',
long_description=readme(),
classifiers=[
Modified: trunk/Tools/Scripts/libraries/webkitscmpy/webkitscmpy/__init__.py (293666 => 293667)
--- trunk/Tools/Scripts/libraries/webkitscmpy/webkitscmpy/__init__.py 2022-05-02 16:52:55 UTC (rev 293666)
+++ trunk/Tools/Scripts/libraries/webkitscmpy/webkitscmpy/__init__.py 2022-05-02 16:57:43 UTC (rev 293667)
@@ -46,7 +46,7 @@
"Please install webkitcorepy with `pip install webkitcorepy --extra-index-url <package index URL>`"
)
-version = Version(4, 12, 1)
+version = Version(4, 12, 2)
AutoInstall.register(Package('fasteners', Version(0, 15, 0)))
AutoInstall.register(Package('jinja2', Version(2, 11, 3)))
Modified: trunk/Tools/Scripts/libraries/webkitscmpy/webkitscmpy/program/command.py (293666 => 293667)
--- trunk/Tools/Scripts/libraries/webkitscmpy/webkitscmpy/program/command.py 2022-05-02 16:52:55 UTC (rev 293666)
+++ trunk/Tools/Scripts/libraries/webkitscmpy/webkitscmpy/program/command.py 2022-05-02 16:57:43 UTC (rev 293667)
@@ -146,6 +146,18 @@
return FilteredCommand.main(args, repository, command=cls.name, **kwargs)
@classmethod
+ def replace(cls, arg, repository):
+ parsed = Commit.parse(arg, do_assert=False)
+ if not parsed:
+ return None
+ replacement = None
+ if repository.is_svn:
+ replacement = repository.cache.to_revision(hash=parsed.hash, identifier=str(parsed) if parsed.identifier else None)
+ if repository.is_git:
+ replacement = repository.cache.to_hash(revision=parsed.revision, identifier=str(parsed) if parsed.identifier else None)
+ return replacement
+
+ @classmethod
def main(cls, args, repository, command=None, representation=None, **kwargs):
if not repository:
sys.stderr.write('No repository provided\n')
@@ -170,16 +182,16 @@
return 1
for index in range(len(args)):
- parsed = Commit.parse(args[index], do_assert=False)
- if parsed:
- replacement = None
- if repository.is_svn:
- replacement = repository.cache.to_revision(hash=parsed.hash, identifier=str(parsed) if parsed.identifier else None)
- if repository.is_git:
- replacement = repository.cache.to_hash(revision=parsed.revision, identifier=str(parsed) if parsed.identifier else None)
- if replacement:
- args[index] = replacement
+ replacement = cls.replace(args[index], repository)
+ if replacement:
+ args[index] = replacement
continue
+ split = args[index].split('...')
+ if len(split) > 1:
+ args[index] = '...'.join([
+ cls.replace(component, repository) or component for component in split
+ ])
+ continue
for candidate in [
os.path.abspath(os.path.join(os.getcwd(), args[index])),