@@ -40,18 +40,18 @@ def _filtercommits(repo, nodes):
40
40
raise error .Abort (e )
41
41
42
42
43
- def _filteruploaded (repo , blobs , trees ):
43
+ def _filteruploaded (repo , files , trees ):
44
44
"""Returns list of missing blobs and trees"""
45
45
try :
46
46
with repo .ui .timesection ("http.edenapi.upload_lookup" ):
47
47
stream = repo .edenapi .lookup_filenodes_and_trees (
48
48
getreponame (repo ),
49
- [blob [ 1 ] for blob in blobs ],
49
+ [fctx . filenode () for fctx in files ],
50
50
[tree [0 ] for tree in trees ],
51
51
)
52
52
53
53
results = list (stream )
54
- blobslen = len (blobs )
54
+ blobslen = len (files )
55
55
56
56
foundindicesblobs = {
57
57
item [INDEX_KEY ]
@@ -64,9 +64,9 @@ def _filteruploaded(repo, blobs, trees):
64
64
if item [TOKEN_KEY ] and "HgTreeId" in item [TOKEN_KEY ]["data" ]["id" ]
65
65
}
66
66
67
- missingblobs = [
68
- blob
69
- for index , blob in enumerate (blobs )
67
+ missingfiles = [
68
+ fctx
69
+ for index , fctx in enumerate (files )
70
70
if index not in foundindicesblobs
71
71
]
72
72
missingtrees = [
@@ -75,15 +75,19 @@ def _filteruploaded(repo, blobs, trees):
75
75
if index not in foundindicestrees
76
76
]
77
77
78
- return missingblobs , missingtrees
78
+ return missingfiles , missingtrees
79
79
except (error .RustError , error .HttpError ) as e :
80
80
raise error .Abort (e )
81
81
82
82
83
- def _uploadfilenodes (repo , keys ):
83
+ def _uploadfilenodes (repo , fctxs ):
84
84
"""Upload file content and filenodes"""
85
- if not keys :
85
+ if not fctxs :
86
86
return
87
+ keys = []
88
+ for fctx in fctxs :
89
+ p1 , p2 = fctx .filelog ().parents (fctx .filenode ())
90
+ keys .append ((fctx .path (), fctx .filenode (), p1 , p2 ))
87
91
dpack , _hpack = repo .fileslog .getmutablelocalpacks ()
88
92
try :
89
93
with repo .ui .timesection ("http.edenapi.upload_files" ):
@@ -104,10 +108,17 @@ def _uploadfilenodes(repo, keys):
104
108
raise error .Abort (e )
105
109
106
110
107
- def _uploadtrees (repo , trees ):
111
+ def _uploadtrees (repo , treesbase ):
108
112
"""Upload trees"""
109
- if not trees :
113
+ if not treesbase :
110
114
return
115
+ trees = []
116
+ for treenode , subdir , treetext in treesbase :
117
+ p1 , p2 , _link , _copy = repo .manifestlog .historystore .getnodeinfo (
118
+ subdir , treenode
119
+ )
120
+ trees .append ((treenode , p1 , p2 , treetext ))
121
+
111
122
try :
112
123
with repo .ui .timesection ("http.edenapi.upload_trees" ):
113
124
stream , _stats = repo .edenapi .uploadtrees (getreponame (repo ), trees )
@@ -155,7 +166,7 @@ def _uploadchangesets(repo, changesets, mutations):
155
166
raise error .Abort (e )
156
167
157
168
158
- def _getblobs (repo , nodes ):
169
+ def _getfiles (repo , nodes ):
159
170
"""Get changed files"""
160
171
toupload = set ()
161
172
for node in nodes .iterrev ():
@@ -164,8 +175,7 @@ def _getblobs(repo, nodes):
164
175
if f not in ctx :
165
176
continue
166
177
fctx = ctx [f ]
167
- p1 , p2 = fctx .filelog ().parents (fctx .filenode ())
168
- toupload .add ((fctx .path (), fctx .filenode (), p1 , p2 ))
178
+ toupload .add (fctx )
169
179
return toupload
170
180
171
181
@@ -182,10 +192,7 @@ def _gettrees(repo, nodes):
182
192
repo .manifestlog .datastore , "" , mfnode , basemfnodes , treedepth
183
193
)
184
194
for subdir , treenode , treetext , _x , _x , _x in difftrees :
185
- p1 , p2 , _link , _copy = repo .manifestlog .historystore .getnodeinfo (
186
- subdir , treenode
187
- )
188
- yield treenode , p1 , p2 , treetext
195
+ yield treenode , subdir , treetext
189
196
190
197
191
198
def _torevs (repo , uploadednodes , failednodes ):
@@ -272,13 +279,13 @@ def uploadhgchangesets(repo, revs, force=False, skipknowncheck=False):
272
279
uploadcommitqueue = repo .changelog .dag .sort (uploadcommitqueue )
273
280
274
281
# Build a queue of missing filenodes to upload
275
- blobs = list (_getblobs (repo , uploadcommitqueue ))
282
+ files = list (_getfiles (repo , uploadcommitqueue ))
276
283
277
284
# Build a queue of missing trees to upload
278
285
trees = list (_gettrees (repo , uploadcommitqueue ))
279
286
280
287
uploadblobqueue , uploadtreesqueue = (
281
- (blobs , trees ) if force else _filteruploaded (repo , blobs , trees )
288
+ (files , trees ) if force else _filteruploaded (repo , files , trees )
282
289
)
283
290
284
291
repo .ui .status (
0 commit comments