235 repo.dirstate.setbranch(util.fromlocal(label)) |
235 repo.dirstate.setbranch(util.fromlocal(label)) |
236 ui.status(_('marked working directory as branch %s\n') % label) |
236 ui.status(_('marked working directory as branch %s\n') % label) |
237 else: |
237 else: |
238 ui.write("%s\n" % util.tolocal(repo.dirstate.branch())) |
238 ui.write("%s\n" % util.tolocal(repo.dirstate.branch())) |
239 |
239 |
240 def branches(ui, repo): |
240 def branches(ui, repo, active=False): |
241 """list repository named branches |
241 """list repository named branches |
242 |
242 |
243 List the repository's named branches. |
243 List the repository's named branches, indicating which ones are |
|
244 inactive. If active is specified, only show active branches. |
|
245 |
|
246 A branch is considered active if it contains unmerged heads. |
244 """ |
247 """ |
245 b = repo.branchtags() |
248 b = repo.branchtags() |
246 l = [(-repo.changelog.rev(n), n, t) for t, n in b.items()] |
249 heads = dict.fromkeys(repo.heads(), 1) |
|
250 l = [((n in heads), repo.changelog.rev(n), n, t) for t, n in b.items()] |
247 l.sort() |
251 l.sort() |
248 for r, n, t in l: |
252 l.reverse() |
249 hexfunc = ui.debugflag and hex or short |
253 for ishead, r, n, t in l: |
250 if ui.quiet: |
254 if active and not ishead: |
251 ui.write("%s\n" % t) |
255 # If we're only displaying active branches, abort the loop on |
|
256 # encountering the first inactive head |
|
257 break |
252 else: |
258 else: |
253 spaces = " " * (30 - util.locallen(t)) |
259 hexfunc = ui.debugflag and hex or short |
254 ui.write("%s%s %s:%s\n" % (t, spaces, -r, hexfunc(n))) |
260 if ui.quiet: |
|
261 ui.write("%s\n" % t) |
|
262 else: |
|
263 spaces = " " * (30 - util.locallen(t)) |
|
264 # The code only gets here if inactive branches are being |
|
265 # displayed or the branch is active. |
|
266 isinactive = ((not ishead) and " (inactive)") or '' |
|
267 ui.write("%s%s %s:%s%s\n" % (t, spaces, r, hexfunc(n), isinactive)) |
255 |
268 |
256 def bundle(ui, repo, fname, dest=None, **opts): |
269 def bundle(ui, repo, fname, dest=None, **opts): |
257 """create a changegroup file |
270 """create a changegroup file |
258 |
271 |
259 Generate a compressed changegroup file collecting changesets not |
272 Generate a compressed changegroup file collecting changesets not |
2744 _('hg backout [OPTION]... [-r] REV')), |
2757 _('hg backout [OPTION]... [-r] REV')), |
2745 "branch": (branch, |
2758 "branch": (branch, |
2746 [('f', 'force', None, |
2759 [('f', 'force', None, |
2747 _('set branch name even if it shadows an existing branch'))], |
2760 _('set branch name even if it shadows an existing branch'))], |
2748 _('hg branch [NAME]')), |
2761 _('hg branch [NAME]')), |
2749 "branches": (branches, [], _('hg branches')), |
2762 "branches": (branches, |
|
2763 [('a', 'active', False, |
|
2764 _("show only branches that have unmerged heads"))], |
|
2765 _('hg branches [-a]')), |
2750 "bundle": |
2766 "bundle": |
2751 (bundle, |
2767 (bundle, |
2752 [('f', 'force', None, |
2768 [('f', 'force', None, |
2753 _('run even when remote repository is unrelated')), |
2769 _('run even when remote repository is unrelated')), |
2754 ('r', 'rev', [], |
2770 ('r', 'rev', [], |