##// END OF EJS Templates
localrepo: remove 'closed' argument to heads(...) function...
John Mulligan -
r8796:2bcef677 default
parent child Browse files
Show More
@@ -446,8 +446,12 b' def branches(ui, repo, active=False):'
446 """
446 """
447 hexfunc = ui.debugflag and hex or short
447 hexfunc = ui.debugflag and hex or short
448 activebranches = [encoding.tolocal(repo[n].branch())
448 activebranches = [encoding.tolocal(repo[n].branch())
449 for n in repo.heads(closed=False)]
449 for n in repo.heads()]
450 branches = sorted([(tag in activebranches, repo.changelog.rev(node), tag)
450 def testactive(tag, node):
451 realhead = tag in activebranches
452 open = node in repo.branchheads(tag, closed=False)
453 return realhead and open
454 branches = sorted([(testactive(tag, node), repo.changelog.rev(node), tag)
451 for tag, node in repo.branchtags().items()],
455 for tag, node in repo.branchtags().items()],
452 reverse=True)
456 reverse=True)
453
457
@@ -1302,17 +1306,22 b' def heads(ui, repo, *branchrevs, **opts)'
1302
1306
1303 With no arguments, show all repository head changesets.
1307 With no arguments, show all repository head changesets.
1304
1308
1305 If branch names or revisions are given this will show the heads of
1306 the specified branches or the branches those revisions are tagged
1307 with.
1308
1309 Repository "heads" are changesets that don't have child
1309 Repository "heads" are changesets that don't have child
1310 changesets. They are where development generally takes place and
1310 changesets. They are where development generally takes place and
1311 are the usual targets for update and merge operations.
1311 are the usual targets for update and merge operations.
1312
1312
1313 Branch heads are changesets that have a given branch tag, but have
1313 If one or more REV is given, the "branch heads" will be shown for
1314 no child changesets with that tag. They are usually where
1314 the named branch associated with that revision. The name of the
1315 development on a given branch takes place.
1315 branch is called the revision's branch tag.
1316
1317 Branch heads are revisions on a given named branch that do not have
1318 any children on the same branch. A branch head could be a true head
1319 or it could be the last changeset on a branch before a new branch
1320 was created. If none of the branch heads are true heads, the branch
1321 is considered inactive.
1322
1323 If STARTREV is specified only those heads (or branch heads) that
1324 are descendants of STARTREV will be displayed.
1316 """
1325 """
1317 if opts.get('rev'):
1326 if opts.get('rev'):
1318 start = repo.lookup(opts['rev'])
1327 start = repo.lookup(opts['rev'])
@@ -1322,10 +1331,10 b' def heads(ui, repo, *branchrevs, **opts)'
1322 hideinactive, _heads = opts.get('active'), None
1331 hideinactive, _heads = opts.get('active'), None
1323 if not branchrevs:
1332 if not branchrevs:
1324 # Assume we're looking repo-wide heads if no revs were specified.
1333 # Assume we're looking repo-wide heads if no revs were specified.
1325 heads = repo.heads(start, closed=closed)
1334 heads = repo.heads(start)
1326 else:
1335 else:
1327 if hideinactive:
1336 if hideinactive:
1328 _heads = repo.heads(start, closed=closed)
1337 _heads = repo.heads(start)
1329 heads = []
1338 heads = []
1330 visitedset = set()
1339 visitedset = set()
1331 for branchrev in branchrevs:
1340 for branchrev in branchrevs:
@@ -1335,7 +1344,9 b' def heads(ui, repo, *branchrevs, **opts)'
1335 visitedset.add(branch)
1344 visitedset.add(branch)
1336 bheads = repo.branchheads(branch, start, closed=closed)
1345 bheads = repo.branchheads(branch, start, closed=closed)
1337 if not bheads:
1346 if not bheads:
1338 if branch != branchrev:
1347 if not opts.get('rev'):
1348 ui.warn(_("no open branch heads on branch %s\n") % branch)
1349 elif branch != branchrev:
1339 ui.warn(_("no changes on branch %s containing %s are "
1350 ui.warn(_("no changes on branch %s containing %s are "
1340 "reachable from %s\n")
1351 "reachable from %s\n")
1341 % (branch, branchrev, opts.get('rev')))
1352 % (branch, branchrev, opts.get('rev')))
@@ -3251,7 +3262,7 b' table = {'
3251 ('c', 'closed', False,
3262 ('c', 'closed', False,
3252 _('show normal and closed heads')),
3263 _('show normal and closed heads')),
3253 ] + templateopts,
3264 ] + templateopts,
3254 _('[-r REV] [REV]...')),
3265 _('[-r STARTREV] [REV]...')),
3255 "help": (help_, [], _('[TOPIC]')),
3266 "help": (help_, [], _('[TOPIC]')),
3256 "identify|id":
3267 "identify|id":
3257 (identify,
3268 (identify,
@@ -361,7 +361,7 b' def tags(web, req, tmpl):'
361 def branches(web, req, tmpl):
361 def branches(web, req, tmpl):
362 b = web.repo.branchtags()
362 b = web.repo.branchtags()
363 tips = (web.repo[n] for t, n in web.repo.branchtags().iteritems())
363 tips = (web.repo[n] for t, n in web.repo.branchtags().iteritems())
364 open = set(web.repo[n].branch() for n in web.repo.heads(closed=False))
364 heads = web.repo.heads()
365 parity = paritygen(web.stripecount)
365 parity = paritygen(web.stripecount)
366 sortkey = lambda ctx: ('close' not in ctx.extra(), ctx.rev())
366 sortkey = lambda ctx: ('close' not in ctx.extra(), ctx.rev())
367
367
@@ -371,7 +371,12 b' def branches(web, req, tmpl):'
371 if limit > 0 and count >= limit:
371 if limit > 0 and count >= limit:
372 return
372 return
373 count += 1
373 count += 1
374 status = ctx.branch() in open and 'open' or 'closed'
374 if ctx.node() not in heads:
375 status = 'inactive'
376 elif not web.repo.branchheads(ctx.branch()):
377 status = 'closed'
378 else:
379 status = 'open'
375 yield {'parity': parity.next(),
380 yield {'parity': parity.next(),
376 'branch': ctx.branch(),
381 'branch': ctx.branch(),
377 'status': status,
382 'status': status,
@@ -1134,15 +1134,10 b' class localrepository(repo.repository):'
1134 finally:
1134 finally:
1135 wlock.release()
1135 wlock.release()
1136
1136
1137 def heads(self, start=None, closed=False):
1137 def heads(self, start=None):
1138 heads = self.changelog.heads(start)
1138 heads = self.changelog.heads(start)
1139 def display(head):
1140 if closed:
1141 return True
1142 extras = self.changelog.read(head)[5]
1143 return ('close' not in extras)
1144 # sort the output in rev descending order
1139 # sort the output in rev descending order
1145 heads = [(-self.changelog.rev(h), h) for h in heads if display(h)]
1140 heads = [(-self.changelog.rev(h), h) for h in heads]
1146 return [n for (r, n) in sorted(heads)]
1141 return [n for (r, n) in sorted(heads)]
1147
1142
1148 def branchheads(self, branch=None, start=None, closed=False):
1143 def branchheads(self, branch=None, start=None, closed=False):
@@ -71,9 +71,19 b" hg commit -d '9 0' --close-branch -m 'cl"
71 echo '--- b branch should be inactive'
71 echo '--- b branch should be inactive'
72 hg branches
72 hg branches
73 hg branches -a
73 hg branches -a
74 hg heads b
75 hg heads --closed b
74 echo 'xxx4' >> b
76 echo 'xxx4' >> b
75 hg commit -d '9 0' -m 'reopen branch with a change'
77 hg commit -d '9 0' -m 'reopen branch with a change'
76 echo '--- branch b is back in action'
78 echo '--- branch b is back in action'
77 hg branches -a
79 hg branches -a
78 hg heads -c
80 echo '---- test heads listings'
79 hg heads
81 hg heads
82 echo '% branch default'
83 hg heads default
84 echo '% branch a'
85 hg heads a
86 hg heads --active a
87 echo '% branch b'
88 hg heads b
89 hg heads --closed b
@@ -113,9 +113,25 b' c 6:589736a'
113 a 5:d8cbc61dbaa6 (inactive)
113 a 5:d8cbc61dbaa6 (inactive)
114 default 0:19709c5a4e75 (inactive)
114 default 0:19709c5a4e75 (inactive)
115 a branch name much longer than the default justification used by branches 7:10ff5895aa57
115 a branch name much longer than the default justification used by branches 7:10ff5895aa57
116 no open branch heads on branch b
117 changeset: 12:2da6583810df
118 branch: b
119 tag: tip
120 parent: 8:eebb944467c9
121 user: test
122 date: Thu Jan 01 00:00:09 1970 +0000
123 summary: close this part branch too
124
125 changeset: 11:c84627f3c15d
126 branch: b
127 user: test
128 date: Thu Jan 01 00:00:09 1970 +0000
129 summary: prune bad branch
130
116 --- branch b is back in action
131 --- branch b is back in action
117 b 13:6ac12926b8c3
132 b 13:6ac12926b8c3
118 a branch name much longer than the default justification used by branches 7:10ff5895aa57
133 a branch name much longer than the default justification used by branches 7:10ff5895aa57
134 ---- test heads listings
119 changeset: 13:6ac12926b8c3
135 changeset: 13:6ac12926b8c3
120 branch: b
136 branch: b
121 tag: tip
137 tag: tip
@@ -135,6 +151,21 b' user: test'
135 date: Thu Jan 01 00:00:06 1970 +0000
151 date: Thu Jan 01 00:00:06 1970 +0000
136 summary: Adding d branch
152 summary: Adding d branch
137
153
154 % branch default
155 changeset: 0:19709c5a4e75
156 user: test
157 date: Thu Jan 01 00:00:00 1970 +0000
158 summary: Adding root node
159
160 % branch a
161 changeset: 5:d8cbc61dbaa6
162 branch: a
163 parent: 2:881fe2b92ad0
164 user: test
165 date: Thu Jan 01 00:00:04 1970 +0000
166 summary: Adding b branch head 2
167
168 % branch b
138 changeset: 13:6ac12926b8c3
169 changeset: 13:6ac12926b8c3
139 branch: b
170 branch: b
140 tag: tip
171 tag: tip
@@ -142,9 +173,16 b' user: test'
142 date: Thu Jan 01 00:00:09 1970 +0000
173 date: Thu Jan 01 00:00:09 1970 +0000
143 summary: reopen branch with a change
174 summary: reopen branch with a change
144
175
145 changeset: 7:10ff5895aa57
176 changeset: 13:6ac12926b8c3
146 branch: a branch name much longer than the default justification used by branches
177 branch: b
178 tag: tip
147 user: test
179 user: test
148 date: Thu Jan 01 00:00:06 1970 +0000
180 date: Thu Jan 01 00:00:09 1970 +0000
149 summary: Adding d branch
181 summary: reopen branch with a change
150
182
183 changeset: 11:c84627f3c15d
184 branch: b
185 user: test
186 date: Thu Jan 01 00:00:09 1970 +0000
187 summary: prune bad branch
188
@@ -532,7 +532,7 b' branches |'
532 <tr class="parity1">
532 <tr class="parity1">
533 <td class="age"><i>many years ago</i></td>
533 <td class="age"><i>many years ago</i></td>
534 <td><a class="list" href="/shortlog/a4f92ed23982?style=gitweb"><b>a4f92ed23982</b></a></td>
534 <td><a class="list" href="/shortlog/a4f92ed23982?style=gitweb"><b>a4f92ed23982</b></a></td>
535 <td class="closed">default</td>
535 <td class="inactive">default</td>
536 <td class="link">
536 <td class="link">
537 <a href="/changeset/a4f92ed23982?style=gitweb">changeset</a> |
537 <a href="/changeset/a4f92ed23982?style=gitweb">changeset</a> |
538 <a href="/log/a4f92ed23982?style=gitweb">changelog</a> |
538 <a href="/log/a4f92ed23982?style=gitweb">changelog</a> |
General Comments 0
You need to be logged in to leave comments. Login now