Mercurial > hg
comparison hgext/strip.py @ 27030:cf9ed6d32ccb
strip: changing bookmark argument to be a list
Currently strip works with a single bookmark,
the changes in this patch modifies the strip
extension to accept a list of bookmarks
author | Shubhanshu Agrawal <agrawal.shubhanshu@gmail.com> |
---|---|
date | Thu, 19 Nov 2015 12:50:10 +0530 |
parents | 8279c5d116a0 |
children | b9d0b45df7b2 |
comparison
equal
deleted
inserted
replaced
27029:8279c5d116a0 | 27030:cf9ed6d32ccb |
---|---|
85 ('', 'no-backup', None, _('no backups')), | 85 ('', 'no-backup', None, _('no backups')), |
86 ('', 'nobackup', None, _('no backups (DEPRECATED)')), | 86 ('', 'nobackup', None, _('no backups (DEPRECATED)')), |
87 ('n', '', None, _('ignored (DEPRECATED)')), | 87 ('n', '', None, _('ignored (DEPRECATED)')), |
88 ('k', 'keep', None, _("do not modify working directory during " | 88 ('k', 'keep', None, _("do not modify working directory during " |
89 "strip")), | 89 "strip")), |
90 ('B', 'bookmark', '', _("remove revs only reachable from given" | 90 ('B', 'bookmark', [], _("remove revs only reachable from given" |
91 " bookmark"))], | 91 " bookmark"))], |
92 _('hg strip [-k] [-f] [-n] [-B bookmark] [-r] REV...')) | 92 _('hg strip [-k] [-f] [-n] [-B bookmark] [-r] REV...')) |
93 def stripcmd(ui, repo, *revs, **opts): | 93 def stripcmd(ui, repo, *revs, **opts): |
94 """strip changesets and all their descendants from the repository | 94 """strip changesets and all their descendants from the repository |
95 | 95 |
127 revs = list(revs) + opts.get('rev') | 127 revs = list(revs) + opts.get('rev') |
128 revs = set(scmutil.revrange(repo, revs)) | 128 revs = set(scmutil.revrange(repo, revs)) |
129 | 129 |
130 wlock = repo.wlock() | 130 wlock = repo.wlock() |
131 try: | 131 try: |
132 bookmarks = None | 132 bookmarks = set(opts.get('bookmark')) |
133 if opts.get('bookmark'): | |
134 bookmarks = set([opts.get('bookmark')]) | |
135 if bookmarks: | 133 if bookmarks: |
136 repomarks = repo._bookmarks | 134 repomarks = repo._bookmarks |
137 if not bookmarks.issubset(repomarks): | 135 if not bookmarks.issubset(repomarks): |
138 raise error.Abort(_("bookmark '%s' not found") % | 136 raise error.Abort(_("bookmark '%s' not found") % |
139 ','.join(sorted(bookmarks - set(repomarks.keys())))) | 137 ','.join(sorted(bookmarks - set(repomarks.keys())))) |
144 nodetobookmarks = {} | 142 nodetobookmarks = {} |
145 for mark, node in repomarks.iteritems(): | 143 for mark, node in repomarks.iteritems(): |
146 nodetobookmarks.setdefault(node, []).append(mark) | 144 nodetobookmarks.setdefault(node, []).append(mark) |
147 for marks in nodetobookmarks.values(): | 145 for marks in nodetobookmarks.values(): |
148 if bookmarks.issuperset(marks): | 146 if bookmarks.issuperset(marks): |
149 rsrevs = repair.stripbmrevset(repo, marks[0]) | 147 rsrevs = repair.stripbmrevset(repo, marks[0]) |
150 revs.update(set(rsrevs)) | 148 revs.update(set(rsrevs)) |
151 if not revs: | 149 if not revs: |
152 for bookmark in bookmarks: | 150 for bookmark in bookmarks: |
153 del repomarks[bookmark] | 151 del repomarks[bookmark] |
154 repomarks.write() | 152 repomarks.write() |
155 for bookmark in sorted(bookmarks): | 153 for bookmark in sorted(bookmarks): |