mirror of
https://github.com/facebook/sapling.git
synced 2024-10-07 07:17:55 +03:00
archive: add branch and tag informations to the .hg_archival.txt file
Up to this changeset, only the repo (first node) and current node hash were included. This adds also the named branch and tags. So the additional lines to .hg_archival.txt are branch: the named branch tag: the global tags of this revision, one per line in case of multiple tags latesttag: if the revision is untagged, the latest tag (most recent in ancestors), again one per line if this ancestor has multiple tags. latestagdistance: the longest distance (changesets) to this latest ancestor.
This commit is contained in:
parent
e3586100e3
commit
15a6625324
@ -7,6 +7,7 @@
|
||||
|
||||
from i18n import _
|
||||
from node import hex
|
||||
import cmdutil
|
||||
import util
|
||||
import cStringIO, os, stat, tarfile, time, zipfile
|
||||
import zlib, gzip
|
||||
@ -217,9 +218,25 @@ def archive(repo, dest, node, kind, decode=True, matchfn=None,
|
||||
archiver = archivers[kind](dest, prefix, mtime or ctx.date()[0])
|
||||
|
||||
if repo.ui.configbool("ui", "archivemeta", True):
|
||||
write('.hg_archival.txt', 0644, False,
|
||||
lambda: 'repo: %s\nnode: %s\n' % (
|
||||
hex(repo.changelog.node(0)), hex(node)))
|
||||
def metadata():
|
||||
base = 'repo: %s\nnode: %s\nbranch: %s\n' % (
|
||||
hex(repo.changelog.node(0)), hex(node), ctx.branch())
|
||||
|
||||
tags = ''.join('tag: %s\n' % t for t in ctx.tags()
|
||||
if repo.tagtype(t) == 'global')
|
||||
if not tags:
|
||||
repo.ui.pushbuffer()
|
||||
opts = {'template': '{latesttag}\n{latesttagdistance}',
|
||||
'style': '', 'patch': None, 'git': None}
|
||||
cmdutil.show_changeset(repo.ui, repo, opts).show(ctx)
|
||||
ltags, dist = repo.ui.popbuffer().split('\n')
|
||||
tags = ''.join('latesttag: %s\n' % t for t in ltags.split(':'))
|
||||
tags += 'latesttagdistance: %s\n' % dist
|
||||
|
||||
return base + tags
|
||||
|
||||
write('.hg_archival.txt', 0644, False, metadata)
|
||||
|
||||
for f in ctx:
|
||||
ff = ctx.flags(f)
|
||||
write(f, 'x' in ff and 0755 or 0644, 'l' in ff, ctx[f].data)
|
||||
|
@ -108,6 +108,14 @@ if [ -f rev-0.tar ]; then
|
||||
echo 'rev-0.tar created'
|
||||
fi
|
||||
|
||||
echo '% test .hg_archival.txt'
|
||||
hg archive ../test-tags
|
||||
cat ../test-tags/.hg_archival.txt
|
||||
hg tag -r 2 mytag
|
||||
hg tag -r 2 anothertag
|
||||
hg archive -r 2 ../test-lasttag
|
||||
cat ../test-lasttag/.hg_archival.txt
|
||||
|
||||
hg archive -t bogus test.bogus
|
||||
|
||||
echo % server errors
|
||||
|
@ -57,6 +57,17 @@ test-TIP/bar
|
||||
test-TIP/baz/bletch
|
||||
test-TIP/foo
|
||||
rev-0.tar created
|
||||
% test .hg_archival.txt
|
||||
repo: daa7f7c60e0a224faa4ff77ca41b2760562af264
|
||||
node: 2c0277f05ed49d1c8328fb9ba92fba7a5ebcb33e
|
||||
branch: default
|
||||
latesttag: null
|
||||
latesttagdistance: 3
|
||||
repo: daa7f7c60e0a224faa4ff77ca41b2760562af264
|
||||
node: 2c0277f05ed49d1c8328fb9ba92fba7a5ebcb33e
|
||||
branch: default
|
||||
tag: anothertag
|
||||
tag: mytag
|
||||
abort: unknown archive type 'bogus'
|
||||
% server errors
|
||||
% empty repo
|
||||
|
Loading…
Reference in New Issue
Block a user