Revision history for this message
Aaron Bentley (abentley) wrote : | # |
1 | === modified file 'README' |
2 | --- README 2009-03-11 02:13:43 +0000 |
3 | +++ README 2013-10-31 13:02:36 +0000 |
4 | @@ -1,3 +1,5 @@ |
5 | +TEST |
6 | + |
7 | BZR TOOLS |
8 | |
9 | This is is a set of plugins for Bazaar. |
10 | |
11 | === modified file 'bzrtools.py' |
12 | --- bzrtools.py 2012-01-20 02:05:50 +0000 |
13 | +++ bzrtools.py 2013-08-20 03:02:23 +0000 |
14 | @@ -1,4 +1,4 @@ |
15 | -# Copyright (C) 2005-2009, 2011-2012 Aaron Bentley <aaron@aaronbentley.com> |
16 | +# Copyright (C) 2005-2009, 2011-2013 Aaron Bentley <aaron@aaronbentley.com> |
17 | # Copyright (C) 2007 John Arbash Meinel |
18 | # |
19 | # This program is free software; you can redistribute it and/or modify |
20 | @@ -14,6 +14,7 @@ |
21 | # You should have received a copy of the GNU General Public License |
22 | # along with this program; if not, write to the Free Software |
23 | # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
24 | +from contextlib import contextmanager |
25 | import re |
26 | |
27 | from bzrlib import urlutils |
28 | @@ -26,6 +27,16 @@ |
29 | from bzrlib.transport import get_transport |
30 | |
31 | |
32 | +@contextmanager |
33 | +def read_locked(lockable): |
34 | + """Read-lock a tree, branch or repository in this context.""" |
35 | + lockable.lock_read() |
36 | + try: |
37 | + yield lockable |
38 | + finally: |
39 | + lockable.unlock() |
40 | + |
41 | + |
42 | def short_committer(committer): |
43 | new_committer = re.sub('<.*>', '', committer).strip(' ') |
44 | if len(new_committer) < 2: |
45 | |
46 | === modified file 'version.py' |
47 | --- version.py 2012-01-20 02:07:15 +0000 |
48 | +++ version.py 2013-08-20 02:19:06 +0000 |
49 | @@ -75,5 +75,5 @@ |
50 | return main_version + sub_string |
51 | |
52 | |
53 | -version_info = (2, 5, 0) |
54 | +version_info = (2, 6, 0) |
55 | __version__ = _format_version_tuple(version_info) |
56 | |
57 | === modified file 'zap.py' |
58 | --- zap.py 2011-04-12 04:51:37 +0000 |
59 | +++ zap.py 2013-08-20 03:00:56 +0000 |
60 | @@ -1,4 +1,5 @@ |
61 | # Copyright (C) 2006-2007, 2010-2011 Aaron Bentley <aaron@aaronbentley.com> |
62 | +# Copyright (C) 2013 Aaron Bentley <aaron@aaronbentley.com> |
63 | # Copyright (C) 2007 Charlie Shepherd <masterdriverz@gentoo.org> |
64 | # Copyright (C) 2011 Canonical Ltd. |
65 | # |
66 | @@ -29,6 +30,7 @@ |
67 | |
68 | from errors import (NotCheckout, UncommittedCheckout, ParentMissingRevisions, |
69 | NoParent) |
70 | +from bzrlib.plugins.bzrtools.bzrtools import read_locked |
71 | |
72 | |
73 | class AllowChanged(object): |
74 | @@ -83,6 +85,7 @@ |
75 | change_policy_registry.default_key = 'check' |
76 | |
77 | |
78 | + |
79 | def zap(path, remove_branch=False, policy=HaltOnChange): |
80 | try: |
81 | wt = bzrdir.BzrDir.open(path).open_workingtree(path, |
82 | @@ -99,12 +102,13 @@ |
83 | parent_loc = branch.get_parent() |
84 | if parent_loc is None: |
85 | raise NoParent() |
86 | - parent = Branch.open(parent_loc) |
87 | - last_revision = _mod_revision.ensure_null(parent.last_revision()) |
88 | - p_ancestry = parent.repository.get_ancestry(last_revision) |
89 | - if (last_revision != _mod_revision.NULL_REVISION and |
90 | - branch.last_revision() not in p_ancestry): |
91 | - raise ParentMissingRevisions(branch.get_parent()) |
92 | + with read_locked(Branch.open(parent_loc)) as parent: |
93 | + last_revision = _mod_revision.ensure_null(parent.last_revision()) |
94 | + if last_revision != _mod_revision.NULL_REVISION: |
95 | + graph = parent.repository.get_graph() |
96 | + heads = graph.heads([last_revision, branch.last_revision()]) |
97 | + if branch.last_revision() in heads: |
98 | + raise ParentMissingRevisions(branch.get_parent()) |
99 | rmtree(path) |
100 | if remove_branch: |
101 | t = branch.bzrdir.transport |
102 | @@ -118,7 +122,7 @@ |
103 | import os |
104 | from unittest import makeSuite |
105 | |
106 | - from bzrlib.tests import TestCaseInTempDir |
107 | + from bzrlib.tests import TestCaseWithTransport |
108 | |
109 | |
110 | class PipelinePluginFeature: |
111 | @@ -133,7 +137,7 @@ |
112 | return True |
113 | |
114 | |
115 | - class TestZap(TestCaseInTempDir): |
116 | + class TestZap(TestCaseWithTransport): |
117 | |
118 | def make_checkout(self): |
119 | wt = bzrdir.BzrDir.create_standalone_workingtree('source') |
120 | @@ -209,4 +213,14 @@ |
121 | checkout.branch.set_parent(branch.base) |
122 | zap('checkout', policy=StoreChanges, remove_branch=True) |
123 | |
124 | + def test_zap_branch_with_unique_revision(self): |
125 | + parent = self.make_branch_and_tree('parent') |
126 | + parent.commit('foo') |
127 | + new_branch = self.make_branch('new') |
128 | + new_branch.set_parent(parent.branch.base) |
129 | + checkout = new_branch.create_checkout('checkout', lightweight=True) |
130 | + checkout.commit('unique') |
131 | + self.assertRaises(ParentMissingRevisions, zap, 'checkout', |
132 | + remove_branch=True) |
133 | + |
134 | return makeSuite(TestZap) |
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Test. www.enigmail. net/
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.14 (GNU/Linux)
Comment: Using GnuPG with Thunderbird - http://
iEYEARECAAYFAlJ yZAsACgkQ0F+ nu1YWqI03HACdGa AWtKktGOyIfzJs9 1t3LMGf tibO39D+ O7hPUnjXD
EPcAnjkj8q2fI0j
=cyF7
-----END PGP SIGNATURE-----