33 demandload(globals(), "os sys re struct traceback errno bz2") |
33 demandload(globals(), "os sys re struct traceback errno bz2") |
34 from mercurial.i18n import gettext as _ |
34 from mercurial.i18n import gettext as _ |
35 from mercurial import ui, hg, revlog, commands, util |
35 from mercurial import ui, hg, revlog, commands, util |
36 |
36 |
37 versionstr = "0.45" |
37 versionstr = "0.45" |
38 |
|
39 repomap = {} |
|
40 |
38 |
41 commands.norepo += " qclone qversion" |
39 commands.norepo += " qclone qversion" |
42 |
40 |
43 class queue: |
41 class queue: |
44 def __init__(self, ui, path, patchdir=None): |
42 def __init__(self, ui, path, patchdir=None): |
1139 if qrepo: |
1137 if qrepo: |
1140 qrepo.add(added) |
1138 qrepo.add(added) |
1141 |
1139 |
1142 def delete(ui, repo, patch, **opts): |
1140 def delete(ui, repo, patch, **opts): |
1143 """remove a patch from the series file""" |
1141 """remove a patch from the series file""" |
1144 q = repomap[repo] |
1142 q = repo.mq |
1145 q.delete(repo, patch) |
1143 q.delete(repo, patch) |
1146 q.save_dirty() |
1144 q.save_dirty() |
1147 return 0 |
1145 return 0 |
1148 |
1146 |
1149 def applied(ui, repo, patch=None, **opts): |
1147 def applied(ui, repo, patch=None, **opts): |
1150 """print the patches already applied""" |
1148 """print the patches already applied""" |
1151 repomap[repo].qapplied(repo, patch) |
1149 repo.mq.qapplied(repo, patch) |
1152 return 0 |
1150 return 0 |
1153 |
1151 |
1154 def unapplied(ui, repo, patch=None, **opts): |
1152 def unapplied(ui, repo, patch=None, **opts): |
1155 """print the patches not yet applied""" |
1153 """print the patches not yet applied""" |
1156 repomap[repo].unapplied(repo, patch) |
1154 repo.mq.unapplied(repo, patch) |
1157 return 0 |
1155 return 0 |
1158 |
1156 |
1159 def qimport(ui, repo, *filename, **opts): |
1157 def qimport(ui, repo, *filename, **opts): |
1160 """import a patch""" |
1158 """import a patch""" |
1161 q = repomap[repo] |
1159 q = repo.mq |
1162 q.qimport(repo, filename, patch=opts['name'], |
1160 q.qimport(repo, filename, patch=opts['name'], |
1163 existing=opts['existing'], force=opts['force']) |
1161 existing=opts['existing'], force=opts['force']) |
1164 q.save_dirty() |
1162 q.save_dirty() |
1165 return 0 |
1163 return 0 |
1166 |
1164 |
1167 def init(ui, repo, **opts): |
1165 def init(ui, repo, **opts): |
1168 """init a new queue repository""" |
1166 """init a new queue repository""" |
1169 q = repomap[repo] |
1167 q = repo.mq |
1170 r = q.init(repo, create=opts['create_repo']) |
1168 r = q.init(repo, create=opts['create_repo']) |
1171 q.save_dirty() |
1169 q.save_dirty() |
1172 if r: |
1170 if r: |
1173 fp = r.wopener('.hgignore', 'w') |
1171 fp = r.wopener('.hgignore', 'w') |
1174 print >> fp, 'syntax: glob' |
1172 print >> fp, 'syntax: glob' |
1224 ui.note(_('updating destination repo\n')) |
1222 ui.note(_('updating destination repo\n')) |
1225 dr.update(dr.changelog.tip()) |
1223 dr.update(dr.changelog.tip()) |
1226 |
1224 |
1227 def commit(ui, repo, *pats, **opts): |
1225 def commit(ui, repo, *pats, **opts): |
1228 """commit changes in the queue repository""" |
1226 """commit changes in the queue repository""" |
1229 q = repomap[repo] |
1227 q = repo.mq |
1230 r = q.qrepo() |
1228 r = q.qrepo() |
1231 if not r: raise util.Abort('no queue repository') |
1229 if not r: raise util.Abort('no queue repository') |
1232 commands.commit(r.ui, r, *pats, **opts) |
1230 commands.commit(r.ui, r, *pats, **opts) |
1233 |
1231 |
1234 def series(ui, repo, **opts): |
1232 def series(ui, repo, **opts): |
1235 """print the entire series file""" |
1233 """print the entire series file""" |
1236 repomap[repo].qseries(repo, missing=opts['missing']) |
1234 repo.mq.qseries(repo, missing=opts['missing']) |
1237 return 0 |
1235 return 0 |
1238 |
1236 |
1239 def top(ui, repo, **opts): |
1237 def top(ui, repo, **opts): |
1240 """print the name of the current patch""" |
1238 """print the name of the current patch""" |
1241 repomap[repo].top(repo) |
1239 repo.mq.top(repo) |
1242 return 0 |
1240 return 0 |
1243 |
1241 |
1244 def next(ui, repo, **opts): |
1242 def next(ui, repo, **opts): |
1245 """print the name of the next patch""" |
1243 """print the name of the next patch""" |
1246 repomap[repo].next(repo) |
1244 repo.mq.next(repo) |
1247 return 0 |
1245 return 0 |
1248 |
1246 |
1249 def prev(ui, repo, **opts): |
1247 def prev(ui, repo, **opts): |
1250 """print the name of the previous patch""" |
1248 """print the name of the previous patch""" |
1251 repomap[repo].prev(repo) |
1249 repo.mq.prev(repo) |
1252 return 0 |
1250 return 0 |
1253 |
1251 |
1254 def new(ui, repo, patch, **opts): |
1252 def new(ui, repo, patch, **opts): |
1255 """create a new patch""" |
1253 """create a new patch""" |
1256 q = repomap[repo] |
1254 q = repo.mq |
1257 message=commands.logmessage(**opts) |
1255 message=commands.logmessage(**opts) |
1258 q.new(repo, patch, msg=message, force=opts['force']) |
1256 q.new(repo, patch, msg=message, force=opts['force']) |
1259 q.save_dirty() |
1257 q.save_dirty() |
1260 return 0 |
1258 return 0 |
1261 |
1259 |
1262 def refresh(ui, repo, **opts): |
1260 def refresh(ui, repo, **opts): |
1263 """update the current patch""" |
1261 """update the current patch""" |
1264 q = repomap[repo] |
1262 q = repo.mq |
1265 message=commands.logmessage(**opts) |
1263 message=commands.logmessage(**opts) |
1266 q.refresh(repo, msg=message, short=opts['short']) |
1264 q.refresh(repo, msg=message, short=opts['short']) |
1267 q.save_dirty() |
1265 q.save_dirty() |
1268 return 0 |
1266 return 0 |
1269 |
1267 |
1270 def diff(ui, repo, *files, **opts): |
1268 def diff(ui, repo, *files, **opts): |
1271 """diff of the current patch""" |
1269 """diff of the current patch""" |
1272 # deep in the dirstate code, the walkhelper method wants a list, not a tuple |
1270 # deep in the dirstate code, the walkhelper method wants a list, not a tuple |
1273 repomap[repo].diff(repo, list(files)) |
1271 repo.mq.diff(repo, list(files)) |
1274 return 0 |
1272 return 0 |
1275 |
1273 |
1276 def lastsavename(path): |
1274 def lastsavename(path): |
1277 (dir, base) = os.path.split(path) |
1275 (dir, base) = os.path.split(path) |
1278 names = os.listdir(dir) |
1276 names = os.listdir(dir) |
1325 if opts['name']: |
1323 if opts['name']: |
1326 q = queue(ui, repo.join(""), repo.join(opts['name'])) |
1324 q = queue(ui, repo.join(""), repo.join(opts['name'])) |
1327 ui.warn('using patch queue: %s\n' % q.path) |
1325 ui.warn('using patch queue: %s\n' % q.path) |
1328 localupdate = False |
1326 localupdate = False |
1329 else: |
1327 else: |
1330 q = repomap[repo] |
1328 q = repo.mq |
1331 q.pop(repo, patch, force=opts['force'], update=localupdate, all=opts['all']) |
1329 q.pop(repo, patch, force=opts['force'], update=localupdate, all=opts['all']) |
1332 q.save_dirty() |
1330 q.save_dirty() |
1333 return 0 |
1331 return 0 |
1334 |
1332 |
1335 def restore(ui, repo, rev, **opts): |
1333 def restore(ui, repo, rev, **opts): |
1336 """restore the queue state saved by a rev""" |
1334 """restore the queue state saved by a rev""" |
1337 rev = repo.lookup(rev) |
1335 rev = repo.lookup(rev) |
1338 q = repomap[repo] |
1336 q = repo.mq |
1339 q.restore(repo, rev, delete=opts['delete'], |
1337 q.restore(repo, rev, delete=opts['delete'], |
1340 qupdate=opts['update']) |
1338 qupdate=opts['update']) |
1341 q.save_dirty() |
1339 q.save_dirty() |
1342 return 0 |
1340 return 0 |
1343 |
1341 |
1344 def save(ui, repo, **opts): |
1342 def save(ui, repo, **opts): |
1345 """save current queue state""" |
1343 """save current queue state""" |
1346 q = repomap[repo] |
1344 q = repo.mq |
1347 message=commands.logmessage(**opts) |
1345 message=commands.logmessage(**opts) |
1348 ret = q.save(repo, msg=message) |
1346 ret = q.save(repo, msg=message) |
1349 if ret: |
1347 if ret: |
1350 return ret |
1348 return ret |
1351 q.save_dirty() |
1349 q.save_dirty() |