Diff
Modified: trunk/Tools/ChangeLog (270348 => 270349)
--- trunk/Tools/ChangeLog 2020-12-02 16:39:03 UTC (rev 270348)
+++ trunk/Tools/ChangeLog 2020-12-02 17:05:39 UTC (rev 270349)
@@ -1,3 +1,21 @@
+2020-12-02 Jonathan Bedard <[email protected]>
+
+ [webkitscmpy] Handle adding, modifying and deleting files on branches
+ https://bugs.webkit.org/show_bug.cgi?id=219432
+ <rdar://problem/71894089>
+
+ Rubber-stamped by Aakash Jain.
+
+ Scripts/libraries/webkitcorepy/webkitcorepy/__init__.py: Bump version.
+ * Scripts/libraries/webkitscmpy/webkitscmpy/local/svn.py:
+ (Svn._branch_for): Support branch detection when files are added or deleted.
+ * Scripts/libraries/webkitscmpy/webkitscmpy/mocks/local/svn.py:
+ (Svn.__init__):
+ * Scripts/libraries/webkitscmpy/webkitscmpy/mocks/remote/svn.py:
+ (Svn.request):
+ * Scripts/libraries/webkitscmpy/webkitscmpy/remote/svn.py:
+ (Svn._branch_for): Support branch detection when files are deleted.
+
2020-12-02 Carlos Alberto Lopez Perez <[email protected]>
Switch EWS workers for JSC-ARMv7-32bits build and test queues to a new machine.
Modified: trunk/Tools/Scripts/libraries/webkitscmpy/webkitscmpy/__init__.py (270348 => 270349)
--- trunk/Tools/Scripts/libraries/webkitscmpy/webkitscmpy/__init__.py 2020-12-02 16:39:03 UTC (rev 270348)
+++ trunk/Tools/Scripts/libraries/webkitscmpy/webkitscmpy/__init__.py 2020-12-02 17:05:39 UTC (rev 270349)
@@ -46,7 +46,7 @@
"Please install webkitcorepy with `pip install webkitcorepy --extra-index-url <package index URL>`"
)
-version = Version(0, 4, 1)
+version = Version(0, 4, 2)
AutoInstall.register(Package('dateutil', Version(2, 8, 1), pypi_name='python-dateutil'))
AutoInstall.register(Package('fasteners', Version(0, 15, 0)))
Modified: trunk/Tools/Scripts/libraries/webkitscmpy/webkitscmpy/local/svn.py (270348 => 270349)
--- trunk/Tools/Scripts/libraries/webkitscmpy/webkitscmpy/local/svn.py 2020-12-02 16:39:03 UTC (rev 270348)
+++ trunk/Tools/Scripts/libraries/webkitscmpy/webkitscmpy/local/svn.py 2020-12-02 17:05:39 UTC (rev 270349)
@@ -241,15 +241,15 @@
if partial is None and line == 'Changed paths:':
partial = ''
elif partial == '':
- partial = line.lstrip()
+ partial = line.lstrip()[2:]
elif partial:
line = line.lstrip()
- while line.startswith('M ') and not line.startswith(partial):
+ while line.startswith(('A ', 'D ', 'M ')) and not line[2:].startswith(partial):
partial = partial[:-1]
if len(partial) <= 3:
raise self.Exception('Malformed set of edited files')
- partial = partial[2:].split(' ')[0]
+ partial = partial.split(' ')[0]
candidate = partial.split('/')[2 if partial.startswith('/branches') else 1]
# Tags are a unique case for SVN, because they're treated as branches in native SVN
Modified: trunk/Tools/Scripts/libraries/webkitscmpy/webkitscmpy/mocks/local/svn.py (270348 => 270349)
--- trunk/Tools/Scripts/libraries/webkitscmpy/webkitscmpy/mocks/local/svn.py 2020-12-02 16:39:03 UTC (rev 270348)
+++ trunk/Tools/Scripts/libraries/webkitscmpy/webkitscmpy/mocks/local/svn.py 2020-12-02 17:05:39 UTC (rev 270349)
@@ -179,7 +179,9 @@
'{line}\n'
'Changed paths:\n'
' M /{branch}/ChangeLog\n'
- ' M /{branch}/file.cpp\n'.format(
+ ' M /{branch}/file.cpp\n'
+ ' D /{branch}/deleted.cpp\n'
+ ' A /{branch}/added.cpp\n'.format(
line=self.log_line(self.find(revision=args[6])),
branch=self.find(revision=args[6]).branch if self.find(revision=args[6]).branch.split('/')[0] in ['trunk', 'tags'] else 'branches/{}'.format(self.find(revision=args[6]).branch)
),
Modified: trunk/Tools/Scripts/libraries/webkitscmpy/webkitscmpy/mocks/remote/svn.py (270348 => 270349)
--- trunk/Tools/Scripts/libraries/webkitscmpy/webkitscmpy/mocks/remote/svn.py 2020-12-02 16:39:03 UTC (rev 270348)
+++ trunk/Tools/Scripts/libraries/webkitscmpy/webkitscmpy/mocks/remote/svn.py 2020-12-02 17:05:39 UTC (rev 270349)
@@ -371,7 +371,9 @@
commit.author.email,
),
'<S:modified-path node-kind="file" text-mods="true" prop-mods="false">/{branch}/Changelog</S:modified-path>\n'
- '<S:modified-path node-kind="file" text-mods="true" prop-mods="false">/{branch}/file.cpp</S:modified-path>\n'.format(
+ '<S:modified-path node-kind="file" text-mods="true" prop-mods="false">/{branch}/file.cpp</S:modified-path>\n'
+ '<S:added-path node-kind="file" text-mods="true" prop-mods="false">/{branch}/deleted.cpp</S:added-path>\n'
+ '<S:deleted-path node-kind="file" text-mods="true" prop-mods="false">/{branch}/added.cpp</S:deleted-path>\n'.format(
branch=commit.branch if commit.branch.split('/')[0] in ['trunk', 'tags'] else 'branches/{}'.format(commit.branch),
) if 'S:discover-changed-paths' in data['S:log-report'] else '',
) for commit in commits
Modified: trunk/Tools/Scripts/libraries/webkitscmpy/webkitscmpy/remote/svn.py (270348 => 270349)
--- trunk/Tools/Scripts/libraries/webkitscmpy/webkitscmpy/remote/svn.py 2020-12-02 16:39:03 UTC (rev 270348)
+++ trunk/Tools/Scripts/libraries/webkitscmpy/webkitscmpy/remote/svn.py 2020-12-02 17:05:39 UTC (rev 270349)
@@ -290,7 +290,7 @@
partial = None
items = xmltodict.parse(response.text)['S:log-report']['S:log-item']
- for group in (items.get('S:modified-path', []), items.get('S:added-path', [])):
+ for group in (items.get('S:modified-path', []), items.get('S:added-path', []), items.get('S:deleted-path', [])):
for item in group if isinstance(group, list) else [group]:
if not partial:
partial = item['#text']