Mercurial > evolve
comparison hgext3rd/topic/stack.py @ 4650:7c05b1625921
stack: get stack data directly from stack and remove stackdata()
stackdata function began its life in 137f8b04901e as a proto-stack: it computed
stack revs on its own and only had one property to return, "changesetcount".
Later it started to prepare and return more properties, but since b933a8068c17
it was computing revs using a getstack function. And then finally in
17749d9d3968 it started to rely on stack class entirely.
It was a good function, but now, when all the logic it provided was factored
into stack class, I'd say it's finally time for it to be put to rest.
author | Anton Shestakov <av6@dwimlabs.net> |
---|---|
date | Sun, 05 May 2019 17:39:46 +0800 |
parents | 6b7ad4b50d00 |
children | 55c347b4874f |
comparison
equal
deleted
inserted
replaced
4649:6b7ad4b50d00 | 4650:7c05b1625921 |
---|---|
240 | 240 |
241 label = 'topic' | 241 label = 'topic' |
242 if topic == repo.currenttopic: | 242 if topic == repo.currenttopic: |
243 label = 'topic.active' | 243 label = 'topic.active' |
244 | 244 |
245 data = stackdata(repo, branch=branch, topic=topic) | 245 st = stack(repo, branch, topic) |
246 empty = False | 246 empty = False |
247 if data['changesetcount'] == 0: | 247 if st.changesetcount == 0: |
248 empty = True | 248 empty = True |
249 if topic is not None: | 249 if topic is not None: |
250 fm.plain(_('### topic: %s') | 250 fm.plain(_('### topic: %s') |
251 % ui.label(topic, label), | 251 % ui.label(topic, label), |
252 label='topic.stack.summary.topic') | 252 label='topic.stack.summary.topic') |
253 | 253 |
254 if 1 < data['headcount']: | 254 if 1 < len(st.heads): |
255 fm.plain(' (') | 255 fm.plain(' (') |
256 fm.plain('%d heads' % data['headcount'], | 256 fm.plain('%d heads' % len(st.heads), |
257 label='topic.stack.summary.headcount.multiple') | 257 label='topic.stack.summary.headcount.multiple') |
258 fm.plain(')') | 258 fm.plain(')') |
259 fm.plain('\n') | 259 fm.plain('\n') |
260 fm.plain(_('### target: %s (branch)') | 260 fm.plain(_('### target: %s (branch)') |
261 % '+'.join(data['branches']), # XXX handle multi branches | 261 % '+'.join(st.branches), # XXX handle multi branches |
262 label='topic.stack.summary.branches') | 262 label='topic.stack.summary.branches') |
263 if topic is None: | 263 if topic is None: |
264 if 1 < data['headcount']: | 264 if 1 < len(st.heads): |
265 fm.plain(' (') | 265 fm.plain(' (') |
266 fm.plain('%d heads' % data['headcount'], | 266 fm.plain('%d heads' % len(st.heads), |
267 label='topic.stack.summary.headcount.multiple') | 267 label='topic.stack.summary.headcount.multiple') |
268 fm.plain(')') | 268 fm.plain(')') |
269 else: | 269 else: |
270 if data['behindcount'] == -1: | 270 if st.behindcount == -1: |
271 fm.plain(', ') | 271 fm.plain(', ') |
272 fm.plain('ambiguous rebase destination - %s' % data['behinderror'], | 272 fm.plain('ambiguous rebase destination - %s' % st.behinderror, |
273 label='topic.stack.summary.behinderror') | 273 label='topic.stack.summary.behinderror') |
274 elif data['behindcount']: | 274 elif st.behindcount: |
275 fm.plain(', ') | 275 fm.plain(', ') |
276 fm.plain('%d behind' % data['behindcount'], label='topic.stack.summary.behindcount') | 276 fm.plain('%d behind' % st.behindcount, label='topic.stack.summary.behindcount') |
277 fm.plain('\n') | 277 fm.plain('\n') |
278 | 278 |
279 if empty: | 279 if empty: |
280 fm.plain(_("(stack is empty)\n")) | 280 fm.plain(_("(stack is empty)\n")) |
281 | 281 |
374 fm.condwrite(states != ['clean'] and idx is not None, 'topic.stack.state', | 374 fm.condwrite(states != ['clean'] and idx is not None, 'topic.stack.state', |
375 ' (%s)', fm.formatlist(states, 'topic.stack.state'), | 375 ' (%s)', fm.formatlist(states, 'topic.stack.state'), |
376 label='topic.stack.state ' + labelsgen('topic.stack.state.%s', states)) | 376 label='topic.stack.state ' + labelsgen('topic.stack.state.%s', states)) |
377 fm.plain('\n') | 377 fm.plain('\n') |
378 fm.end() | 378 fm.end() |
379 | |
380 def stackdata(repo, branch=None, topic=None): | |
381 """get various data about a stack | |
382 | |
383 :changesetcount: number of non-obsolete changesets in the stack | |
384 :unstablecount: number of unstable changesets | |
385 :headcount: number of heads on the topic | |
386 :behindcount: number of changeset on rebase destination | |
387 """ | |
388 data = {} | |
389 current = stack(repo, branch, topic) | |
390 data['changesetcount'] = current.changesetcount | |
391 data['unstablecount'] = current.unstablecount | |
392 data['headcount'] = len(current.heads) | |
393 data['behindcount'] = current.behindcount | |
394 data['behinderror'] = current.behinderror | |
395 data['branches'] = current.branches | |
396 return data |