Merge lp:~jelmer/brz/archive-tree-timestamp into lp:brz

Proposed by Jelmer Vernooij
Status: Merged
Approved by: Jelmer Vernooij
Approved revision: no longer in the source branch.
Merge reported by: The Breezy Bot
Merged at revision: not available
Proposed branch: lp:~jelmer/brz/archive-tree-timestamp
Merge into: lp:brz
Diff against target: 73 lines (+21/-3)
4 files modified
breezy/archive/tar.py (+1/-2)
breezy/export.py (+6/-0)
breezy/tests/blackbox/test_export.py (+1/-1)
breezy/tests/test_export.py (+13/-0)
To merge this branch: bzr merge lp:~jelmer/brz/archive-tree-timestamp
Reviewer Review Type Date Requested Status
Martin Packman Approve
Review via email: mp+361709@code.launchpad.net

Commit message

Use tree timestamp when exporting.

Description of the change

Use tree timestamp when exporting.

This helps generate consistent hashes.

To post a comment you must log in.
Revision history for this message
Martin Packman (gz) wrote :

Fair enough.

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'breezy/archive/tar.py'
2--- breezy/archive/tar.py 2018-11-16 18:33:17 +0000
3+++ breezy/archive/tar.py 2019-01-13 18:36:53 +0000
4@@ -137,8 +137,7 @@
5 buf = BytesIO()
6 zipstream = gzip.GzipFile(basename, 'w', fileobj=buf,
7 mtime=root_mtime)
8- for chunk in tarball_generator(
9- tree, root, subdir, force_mtime):
10+ for chunk in tarball_generator(tree, root, subdir, force_mtime):
11 zipstream.write(chunk)
12 # Yield the data that was written so far, rinse, repeat.
13 yield buf.getvalue()
14
15=== modified file 'breezy/export.py'
16--- breezy/export.py 2018-11-16 18:33:17 +0000
17+++ breezy/export.py 2019-01-13 18:36:53 +0000
18@@ -65,6 +65,12 @@
19
20 if not per_file_timestamps:
21 force_mtime = time.time()
22+ if getattr(tree, '_repository', None):
23+ try:
24+ force_mtime = tree._repository.get_revision(
25+ tree.get_revision_id()).timestamp
26+ except errors.NoSuchRevision:
27+ pass
28 else:
29 force_mtime = None
30
31
32=== modified file 'breezy/tests/blackbox/test_export.py'
33--- breezy/tests/blackbox/test_export.py 2018-11-11 04:08:32 +0000
34+++ breezy/tests/blackbox/test_export.py 2019-01-13 18:36:53 +0000
35@@ -455,6 +455,6 @@
36 # being too low. If rpc_count increases, more network roundtrips have
37 # become necessary for this use case. Please do not adjust this number
38 # upwards without agreement from bzr's network support maintainers.
39- self.assertLength(7, self.hpss_calls)
40+ self.assertLength(8, self.hpss_calls)
41 self.assertLength(1, self.hpss_connections)
42 self.assertThat(self.hpss_calls, ContainsNoVfsCalls)
43
44=== modified file 'breezy/tests/test_export.py'
45--- breezy/tests/test_export.py 2018-11-11 04:08:32 +0000
46+++ breezy/tests/test_export.py 2019-01-13 18:36:53 +0000
47@@ -16,6 +16,7 @@
48
49 """Tests for breezy.export."""
50
51+import gzip
52 import os
53 import tarfile
54 import time
55@@ -215,6 +216,18 @@
56 tf = tarfile.open('target.tar.gz')
57 self.assertEqual(["target/a"], tf.getnames())
58
59+ def test_tgz_consistent_mtime(self):
60+ wt = self.make_branch_and_tree('.')
61+ self.build_tree(['a'])
62+ wt.add(["a"])
63+ timestamp = 1547400500
64+ revid = wt.commit("1", timestamp=timestamp)
65+ revtree = wt.branch.repository.revision_tree(revid)
66+ export.export(revtree, 'target.tar.gz', format="tgz")
67+ with gzip.GzipFile('target.tar.gz', 'r') as f:
68+ f.read()
69+ self.assertEqual(int(f.mtime), timestamp)
70+
71 def test_tgz_ignores_dest_path(self):
72 # The target path should not be a part of the target file.
73 # (bug #102234)

Subscribers

People subscribed via source and target branches