##// END OF EJS Templates
subrepo: add support for 'hg archive'
Martin Geisler -
r12323:f00953d9 default
parent child Browse files
Show More
@@ -205,7 +205,7 b' archivers = {'
205 }
205 }
206
206
207 def archive(repo, dest, node, kind, decode=True, matchfn=None,
207 def archive(repo, dest, node, kind, decode=True, matchfn=None,
208 prefix=None, mtime=None):
208 prefix=None, mtime=None, subrepos=False):
209 '''create archive of repo as it was at node.
209 '''create archive of repo as it was at node.
210
210
211 dest can be name of directory, name of archive file, or file
211 dest can be name of directory, name of archive file, or file
@@ -263,4 +263,10 b' def archive(repo, dest, node, kind, deco'
263 for f in ctx:
263 for f in ctx:
264 ff = ctx.flags(f)
264 ff = ctx.flags(f)
265 write(f, 'x' in ff and 0755 or 0644, 'l' in ff, ctx[f].data)
265 write(f, 'x' in ff and 0755 or 0644, 'l' in ff, ctx[f].data)
266
267 if subrepos:
268 for subpath in ctx.substate:
269 sub = ctx.sub(subpath)
270 sub.archive(archiver, prefix)
271
266 archiver.done()
272 archiver.done()
@@ -199,7 +199,7 b' def archive(ui, repo, dest, **opts):'
199 prefix = cmdutil.make_filename(repo, prefix, node)
199 prefix = cmdutil.make_filename(repo, prefix, node)
200 matchfn = cmdutil.match(repo, [], opts)
200 matchfn = cmdutil.match(repo, [], opts)
201 archival.archive(repo, dest, node, kind, not opts.get('no_decode'),
201 archival.archive(repo, dest, node, kind, not opts.get('no_decode'),
202 matchfn, prefix)
202 matchfn, prefix, subrepos=opts.get('subrepos'))
203
203
204 def backout(ui, repo, node=None, rev=None, **opts):
204 def backout(ui, repo, node=None, rev=None, **opts):
205 '''reverse effect of earlier changeset
205 '''reverse effect of earlier changeset
@@ -3963,7 +3963,7 b' table = {'
3963 _('revision to distribute'), _('REV')),
3963 _('revision to distribute'), _('REV')),
3964 ('t', 'type', '',
3964 ('t', 'type', '',
3965 _('type of distribution to create'), _('TYPE')),
3965 _('type of distribution to create'), _('TYPE')),
3966 ] + walkopts,
3966 ] + subrepoopts + walkopts,
3967 _('[OPTION]... DEST')),
3967 _('[OPTION]... DEST')),
3968 "backout":
3968 "backout":
3969 (backout,
3969 (backout,
@@ -282,6 +282,15 b' class abstractsubrepo(object):'
282 """return file flags"""
282 """return file flags"""
283 return ''
283 return ''
284
284
285 def archive(self, archiver, prefix):
286 for name in self.files():
287 flags = self.fileflags(name)
288 mode = 'x' in flags and 0755 or 0644
289 symlink = 'l' in flags
290 archiver.addfile(os.path.join(prefix, self._path, name),
291 mode, symlink, self.filedata(name))
292
293
285 class hgsubrepo(abstractsubrepo):
294 class hgsubrepo(abstractsubrepo):
286 def __init__(self, ctx, path, state):
295 def __init__(self, ctx, path, state):
287 self._path = path
296 self._path = path
@@ -341,6 +350,15 b' class hgsubrepo(abstractsubrepo):'
341 self._repo.ui.warn(_("warning: %s in %s\n")
350 self._repo.ui.warn(_("warning: %s in %s\n")
342 % (inst, relpath(self)))
351 % (inst, relpath(self)))
343
352
353 def archive(self, archiver, prefix):
354 abstractsubrepo.archive(self, archiver, prefix)
355
356 rev = self._state[1]
357 ctx = self._repo[rev]
358 for subpath in ctx.substate:
359 s = subrepo(ctx, subpath)
360 s.archive(archiver, os.path.join(prefix, self._path))
361
344 def dirty(self):
362 def dirty(self):
345 r = self._state[1]
363 r = self._state[1]
346 if r == '':
364 if r == '':
@@ -227,6 +227,40 b' Status between revisions:'
227 z1
227 z1
228 +z2
228 +z2
229
229
230 Test archiving to a directory tree:
231
232 $ hg archive --subrepos ../archive
233 $ find ../archive
234 ../archive
235 ../archive/foo
236 ../archive/foo/bar
237 ../archive/foo/bar/z.txt
238 ../archive/foo/.hgsubstate
239 ../archive/foo/.hgsub
240 ../archive/foo/y.txt
241 ../archive/x.txt
242 ../archive/.hgsubstate
243 ../archive/.hgsub
244 ../archive/.hg_archival.txt
245
246 Test archiving to zip file:
247
248 $ hg archive --subrepos ../archive.zip
249 $ unzip -l ../archive.zip
250 Archive: ../archive.zip
251 Length Date Time Name
252 --------- ---------- ----- ----
253 147 1980-01-01 00:00 archive/.hg_archival.txt
254 10 1980-01-01 00:00 archive/.hgsub
255 45 1980-01-01 00:00 archive/.hgsubstate
256 3 1980-01-01 00:00 archive/x.txt
257 9 1980-01-01 00:00 archive/foo/y.txt
258 10 1980-01-01 00:00 archive/foo/.hgsub
259 45 1980-01-01 00:00 archive/foo/.hgsubstate
260 9 1980-01-01 00:00 archive/foo/bar/z.txt
261 --------- -------
262 278 8 files
263
230 Clone and test outgoing:
264 Clone and test outgoing:
231
265
232 $ cd ..
266 $ cd ..
General Comments 0
You need to be logged in to leave comments. Login now