236 return 0 |
236 return 0 |
237 |
237 |
238 class changeset_printer(object): |
238 class changeset_printer(object): |
239 '''show changeset information when templating not requested.''' |
239 '''show changeset information when templating not requested.''' |
240 |
240 |
241 def __init__(self, ui, repo, patch, buffered): |
241 def __init__(self, ui, repo, patch, brinfo, buffered): |
242 self.ui = ui |
242 self.ui = ui |
243 self.repo = repo |
243 self.repo = repo |
244 self.buffered = buffered |
244 self.buffered = buffered |
245 self.patch = patch |
245 self.patch = patch |
|
246 self.brinfo = brinfo |
246 if buffered: |
247 if buffered: |
247 self.ui = uibuffer(ui) |
248 self.ui = uibuffer(ui) |
248 |
249 |
249 def flush(self, rev): |
250 def flush(self, rev): |
250 return self.ui.flush(rev) |
251 return self.ui.flush(rev) |
251 |
252 |
252 def show(self, rev=0, changenode=None, brinfo=None, copies=None): |
253 def show(self, rev=0, changenode=None, copies=None): |
253 '''show a single changeset or file revision''' |
254 '''show a single changeset or file revision''' |
254 if self.buffered: |
255 if self.buffered: |
255 self.ui.mark(rev) |
256 self.ui.mark(rev) |
256 log = self.repo.changelog |
257 log = self.repo.changelog |
257 if changenode is None: |
258 if changenode is None: |
286 for tag in self.repo.nodetags(changenode): |
287 for tag in self.repo.nodetags(changenode): |
287 self.ui.write(_("tag: %s\n") % tag) |
288 self.ui.write(_("tag: %s\n") % tag) |
288 for parent in parents: |
289 for parent in parents: |
289 self.ui.write(_("parent: %d:%s\n") % parent) |
290 self.ui.write(_("parent: %d:%s\n") % parent) |
290 |
291 |
291 if brinfo and changenode in brinfo: |
292 if self.brinfo: |
292 br = brinfo[changenode] |
293 br = self.repo.branchlookup([changenode]) |
293 self.ui.write(_("branch: %s\n") % " ".join(br)) |
294 if br: |
|
295 self.ui.write(_("branch: %s\n") % " ".join(br[changenode])) |
294 |
296 |
295 if self.ui.debugflag: |
297 if self.ui.debugflag: |
296 self.ui.write(_("manifest: %d:%s\n") % |
298 self.ui.write(_("manifest: %d:%s\n") % |
297 (self.repo.manifest.rev(changes[0]), hex(changes[0]))) |
299 (self.repo.manifest.rev(changes[0]), hex(changes[0]))) |
298 self.ui.write(_("user: %s\n") % changes[1]) |
300 self.ui.write(_("user: %s\n") % changes[1]) |
337 self.ui.write("\n") |
339 self.ui.write("\n") |
338 |
340 |
339 class changeset_templater(changeset_printer): |
341 class changeset_templater(changeset_printer): |
340 '''format changeset information.''' |
342 '''format changeset information.''' |
341 |
343 |
342 def __init__(self, ui, repo, patch, mapfile, buffered): |
344 def __init__(self, ui, repo, patch, brinfo, mapfile, buffered): |
343 changeset_printer.__init__(self, ui, repo, patch, buffered) |
345 changeset_printer.__init__(self, ui, repo, patch, brinfo, buffered) |
344 self.t = templater.templater(mapfile, templater.common_filters, |
346 self.t = templater.templater(mapfile, templater.common_filters, |
345 cache={'parent': '{rev}:{node|short} ', |
347 cache={'parent': '{rev}:{node|short} ', |
346 'manifest': '{rev}:{node|short}', |
348 'manifest': '{rev}:{node|short}', |
347 'filecopy': '{name} ({source})'}) |
349 'filecopy': '{name} ({source})'}) |
348 |
350 |
349 def use_template(self, t): |
351 def use_template(self, t): |
350 '''set template string to use''' |
352 '''set template string to use''' |
351 self.t.cache['changeset'] = t |
353 self.t.cache['changeset'] = t |
352 |
354 |
353 def show(self, rev=0, changenode=None, brinfo=None, copies=[], **props): |
355 def show(self, rev=0, changenode=None, copies=[], **props): |
354 '''show a single changeset or file revision''' |
356 '''show a single changeset or file revision''' |
355 if self.buffered: |
357 if self.buffered: |
356 self.ui.mark(rev) |
358 self.ui.mark(rev) |
357 log = self.repo.changelog |
359 log = self.repo.changelog |
358 if changenode is None: |
360 if changenode is None: |
426 def showbranches(**args): |
428 def showbranches(**args): |
427 branch = changes[5].get("branch") |
429 branch = changes[5].get("branch") |
428 if branch: |
430 if branch: |
429 return showlist('branch', [branch], plural='branches', **args) |
431 return showlist('branch', [branch], plural='branches', **args) |
430 # add old style branches if requested |
432 # add old style branches if requested |
431 if brinfo and changenode in brinfo: |
433 if self.brinfo: |
432 return showlist('branch', brinfo[changenode], |
434 br = self.repo.branchlookup([changenode]) |
433 plural='branches', **args) |
435 if changenode in br: |
|
436 return showlist('branch', br[changenode], |
|
437 plural='branches', **args) |
434 |
438 |
435 def showparents(**args): |
439 def showparents(**args): |
436 parents = [[('rev', log.rev(p)), ('node', hex(p))] |
440 parents = [[('rev', log.rev(p)), ('node', hex(p))] |
437 for p in log.parents(changenode) |
441 for p in log.parents(changenode) |
438 if self.ui.debugflag or p != nullid] |
442 if self.ui.debugflag or p != nullid] |
553 If all of these values are either the unset or the empty string, |
557 If all of these values are either the unset or the empty string, |
554 regular display via changeset_printer() is done. |
558 regular display via changeset_printer() is done. |
555 """ |
559 """ |
556 # options |
560 # options |
557 patch = opts.get('patch') |
561 patch = opts.get('patch') |
|
562 br = None |
|
563 if opts.get('branches'): |
|
564 ui.warn(_("the --branches option is deprecated, " |
|
565 "please use 'hg branches' instead\n")) |
|
566 br = True |
558 tmpl = opts.get('template') |
567 tmpl = opts.get('template') |
559 mapfile = None |
568 mapfile = None |
560 if tmpl: |
569 if tmpl: |
561 tmpl = templater.parsestring(tmpl, quoted=False) |
570 tmpl = templater.parsestring(tmpl, quoted=False) |
562 else: |
571 else: |
574 if not os.path.split(mapfile)[0]: |
583 if not os.path.split(mapfile)[0]: |
575 mapname = (templater.templatepath('map-cmdline.' + mapfile) |
584 mapname = (templater.templatepath('map-cmdline.' + mapfile) |
576 or templater.templatepath(mapfile)) |
585 or templater.templatepath(mapfile)) |
577 if mapname: mapfile = mapname |
586 if mapname: mapfile = mapname |
578 try: |
587 try: |
579 t = changeset_templater(ui, repo, patch, mapfile, buffered) |
588 t = changeset_templater(ui, repo, patch, br, mapfile, buffered) |
580 except SyntaxError, inst: |
589 except SyntaxError, inst: |
581 raise util.Abort(inst.args[0]) |
590 raise util.Abort(inst.args[0]) |
582 if tmpl: t.use_template(tmpl) |
591 if tmpl: t.use_template(tmpl) |
583 return t |
592 return t |
584 return changeset_printer(ui, repo, patch, buffered) |
593 return changeset_printer(ui, repo, patch, br, buffered) |
585 |
594 |