Skip to content

Commit c8bbfd9

Browse files
quark-zjufacebook-github-bot
authored andcommitted
commitcloud: skip unnecessary rev convertion in upload
Summary: I spot some unnecessary `rev` <-> `node` translations. Just use `node` directly. Reviewed By: zzl0 Differential Revision: D74679478 fbshipit-source-id: eabbbc1b621435de38104afc84e72c73a356c9e7
1 parent d47045e commit c8bbfd9

File tree

3 files changed

+15
-30
lines changed

3 files changed

+15
-30
lines changed

eden/scm/sapling/edenapi_upload.py

Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -187,13 +187,6 @@ def _gettrees(repo, nodes):
187187
yield treenode, p1, p2, treetext
188188

189189

190-
def _torevs(repo, uploadednodes, failednodes):
191-
"""Convert nodes back to revs"""
192-
return set([repo[node].rev() for node in uploadednodes]), set(
193-
[repo[node].rev() for node in failednodes]
194-
)
195-
196-
197190
def filetypefromfile(f):
198191
if f.isexec():
199192
return "Executable"
@@ -214,8 +207,8 @@ def parentsfromctx(ctx):
214207
return None
215208

216209

217-
def uploadhgchangesets(repo, revs, force=False, skipknowncheck=False):
218-
"""Upload list of revs via EdenApi Uploads protocol
210+
def uploadhgchangesets(repo, nodes, force=False, skipknowncheck=False):
211+
"""Upload list of nodes via EdenApi Uploads protocol
219212
220213
EdenApi Uploads API consists of the following:
221214
@@ -243,11 +236,9 @@ def uploadhgchangesets(repo, revs, force=False, skipknowncheck=False):
243236
If ``skipknowncheck`` is True (the default is False) the lookup check isn't performed to filter out already uploaded commits.
244237
Assumed it is known already that they are missing on the server.
245238
246-
Returns newly uploaded revs and failed revs.
239+
Returns newly uploaded nodes and failed nodes.
247240
"""
248241

249-
nodes = [repo[r].node() for r in revs]
250-
251242
# Build a queue of commits to upload
252243
uploadcommitqueue = (
253244
nodes if (force or skipknowncheck) else _filtercommits(repo, nodes)
@@ -350,4 +341,4 @@ def uploadhgchangesets(repo, revs, force=False, skipknowncheck=False):
350341
for mut in mutations
351342
]
352343

353-
return _torevs(repo, *_uploadchangesets(repo, changesets, mutations))
344+
return _uploadchangesets(repo, changesets, mutations)

eden/scm/sapling/ext/commitcloud/upload.py

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -78,28 +78,24 @@ def upload(repo, revs, force=False, localbackupstate=None):
7878
component="commitcloud",
7979
)
8080

81-
draftrevs = list(
82-
repo.changelog.torevset(repo.dageval(lambda: draft() & ancestors(missingheads)))
83-
)
81+
draftnodes = list(repo.dageval(lambda: draft() & ancestors(missingheads)))
8482

85-
# If the only draft revs are the missing heads then we can skip the
83+
# If the only draft nodes are the missing heads then we can skip the
8684
# known checks, as we know they are all missing.
87-
skipknowncheck = len(draftrevs) == len(missingheads)
88-
newuploaded, failed = edenapi_upload.uploadhgchangesets(
89-
repo, draftrevs, force, skipknowncheck
85+
skipknowncheck = len(draftnodes) == len(missingheads)
86+
newuploaded, failednodes = edenapi_upload.uploadhgchangesets(
87+
repo, draftnodes, force, skipknowncheck
9088
)
9189

92-
failednodes = {repo[r].node() for r in failed}
93-
94-
# Uploaded heads are all heads that have been filtered or uploaded and also heads of the 'newuploaded' revs.
90+
# Uploaded heads are all heads that have been filtered or uploaded and also heads of the 'newuploaded' nodes.
9591

9692
# Example (5e4faf031 must be included in uploadedheads):
9793
# o 4bb40f883 (failed)
9894
# │
9995
# @ 5e4faf031 (uploaded)
10096

10197
uploadedheads = list(
102-
repo.nodes("heads(%ld) + %ln - heads(%ln)", newuploaded, heads, failednodes)
98+
repo.nodes("heads(%ln) + %ln - heads(%ln)", newuploaded, heads, failednodes)
10399
)
104100

105101
if localbackupstate:

eden/scm/sapling/ext/snapshot/createremote.py

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,11 @@
2020
def _backupparents(repo, wctx) -> None:
2121
"""make sure this commit's ancestors are backed up in commitcloud"""
2222
parents = (wctx.p1().node(), wctx.p2().node())
23-
draftrevs = repo.changelog.torevset(
24-
# pyre-fixme[10]: Name `ancestors` is used but not defined.
25-
# pyre-fixme[10]: Name `draft` is used but not defined.
26-
repo.dageval(lambda: draft() & ancestors(parents))
27-
)
23+
# pyre-fixme[10]: Name `ancestors` is used but not defined.
24+
# pyre-fixme[10]: Name `draft` is used but not defined.
25+
draftnodes = repo.dageval(lambda: draft() & ancestors(parents))
2826

29-
(success, failed) = uploadhgchangesets(repo, draftrevs)
27+
(success, failed) = uploadhgchangesets(repo, draftnodes)
3028
if failed:
3129
raise error.Abort(
3230
_("failed to upload ancestors to commit cloud: {}").format(

0 commit comments

Comments
 (0)