bzr branch
http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar
|
0.205.33
by Jelmer Vernooij
Import simplifications for upgrade. |
1 |
# Copyright (C) 2006-2009 by Jelmer Vernooij
|
|
0.436.177
by Jelmer Vernooij
Remove trailing whitespace. |
2 |
#
|
|
0.205.12
by Jelmer Vernooij
Import upgrade code for upgrading mappings. |
3 |
# This program is free software; you can redistribute it and/or modify
|
4 |
# it under the terms of the GNU General Public License as published by
|
|
5 |
# the Free Software Foundation; either version 3 of the License, or
|
|
6 |
# (at your option) any later version.
|
|
7 |
#
|
|
8 |
# This program is distributed in the hope that it will be useful,
|
|
9 |
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
10 |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
11 |
# GNU General Public License for more details.
|
|
12 |
#
|
|
13 |
# You should have received a copy of the GNU General Public License
|
|
14 |
# along with this program; if not, write to the Free Software
|
|
15 |
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
|
0.436.140
by Jelmer Vernooij
Remove checks for rebase. |
16 |
|
17 |
||
|
0.205.12
by Jelmer Vernooij
Import upgrade code for upgrading mappings. |
18 |
"""Upgrading revisions made with older versions of the mapping."""
|
19 |
||
|
7406.3.2
by Jelmer Vernooij
Update for breezy. |
20 |
from ... import ( |
|
0.436.173
by Jelmer Vernooij
Add rebase-foreign command. |
21 |
osutils, |
|
0.205.44
by Jelmer Vernooij
Fix formatting. |
22 |
trace, |
23 |
ui, |
|
24 |
)
|
|
|
7406.3.2
by Jelmer Vernooij
Update for breezy. |
25 |
from ...errors import ( |
|
0.205.33
by Jelmer Vernooij
Import simplifications for upgrade. |
26 |
BzrError, |
|
0.436.196
by Jelmer Vernooij
Eliminate unnecessary function. |
27 |
)
|
|
7406.3.2
by Jelmer Vernooij
Update for breezy. |
28 |
from .rebase import ( |
|
0.436.140
by Jelmer Vernooij
Remove checks for rebase. |
29 |
generate_transpose_plan, |
|
0.436.204
by Jelmer Vernooij
Split up large method. |
30 |
CommitBuilderRevisionRewriter, |
|
0.436.140
by Jelmer Vernooij
Remove checks for rebase. |
31 |
rebase, |
32 |
rebase_todo, |
|
33 |
)
|
|
|
0.205.12
by Jelmer Vernooij
Import upgrade code for upgrading mappings. |
34 |
|
35 |
||
36 |
class UpgradeChangesContent(BzrError): |
|
37 |
"""Inconsistency was found upgrading the mapping of a revision.""" |
|
38 |
_fmt = """Upgrade will change contents in revision %(revid)s. Use --allow-changes to override.""" |
|
39 |
||
40 |
def __init__(self, revid): |
|
41 |
self.revid = revid |
|
42 |
||
43 |
||
|
0.436.173
by Jelmer Vernooij
Add rebase-foreign command. |
44 |
def create_deterministic_revid(revid, new_parents): |
45 |
"""Create a new deterministic revision id with specified new parents. |
|
|
0.436.177
by Jelmer Vernooij
Remove trailing whitespace. |
46 |
|
|
0.436.173
by Jelmer Vernooij
Add rebase-foreign command. |
47 |
Prevents suffix to be appended needlessly.
|
48 |
||
49 |
:param revid: Original revision id.
|
|
50 |
:return: New revision id
|
|
51 |
"""
|
|
52 |
if "-rebase-" in revid: |
|
53 |
revid = revid[0:revid.rfind("-rebase-")] |
|
54 |
return revid + "-rebase-" + osutils.sha_string(":".join(new_parents))[:8] |
|
55 |
||
56 |
||
57 |
def upgrade_tags(tags, repository, generate_rebase_map, determine_new_revid, |
|
|
0.205.41
by Jelmer Vernooij
Fix typo. |
58 |
allow_changes=False, verbose=False, branch_renames=None, |
|
0.205.40
by Jelmer Vernooij
Don't upgrade tags to revisions in branch ancestry. |
59 |
branch_ancestry=None): |
|
0.205.16
by Jelmer Vernooij
Import fixes from bzr-svn. |
60 |
"""Upgrade a tags dictionary.""" |
|
0.205.33
by Jelmer Vernooij
Import simplifications for upgrade. |
61 |
renames = {} |
62 |
if branch_renames is not None: |
|
63 |
renames.update(branch_renames) |
|
|
0.205.16
by Jelmer Vernooij
Import fixes from bzr-svn. |
64 |
pb = ui.ui_factory.nested_progress_bar() |
65 |
try: |
|
66 |
tags_dict = tags.get_tag_dict() |
|
|
0.436.144
by Jelmer Vernooij
Use iteritems |
67 |
for i, (name, revid) in enumerate(tags_dict.iteritems()): |
|
0.205.16
by Jelmer Vernooij
Import fixes from bzr-svn. |
68 |
pb.update("upgrading tags", i, len(tags_dict)) |
|
7406.3.5
by Jelmer Vernooij
Fix formatting. |
69 |
if revid not in renames: |
|
0.446.1
by Colin Watson
Skip tags referring to a ghost revision. |
70 |
try: |
71 |
repository.lock_read() |
|
72 |
revid_exists = repository.has_revision(revid) |
|
73 |
finally: |
|
74 |
repository.unlock() |
|
75 |
if revid_exists: |
|
|
7406.3.5
by Jelmer Vernooij
Fix formatting. |
76 |
renames.update(upgrade_repository( |
77 |
repository, |
|
78 |
generate_rebase_map, determine_new_revid, |
|
79 |
revision_id=revid, allow_changes=allow_changes, |
|
80 |
verbose=verbose)) |
|
81 |
if (revid in renames and |
|
82 |
(branch_ancestry is None or revid not in branch_ancestry)): |
|
|
0.205.16
by Jelmer Vernooij
Import fixes from bzr-svn. |
83 |
tags.set_tag(name, renames[revid]) |
84 |
finally: |
|
85 |
pb.finished() |
|
|
0.205.12
by Jelmer Vernooij
Import upgrade code for upgrading mappings. |
86 |
|
87 |
||
|
0.436.173
by Jelmer Vernooij
Add rebase-foreign command. |
88 |
def upgrade_branch(branch, generate_rebase_map, determine_new_revid, |
|
0.227.1
by Jelmer Vernooij
Import foreign-mapping-upgrade. |
89 |
allow_changes=False, verbose=False): |
|
0.205.12
by Jelmer Vernooij
Import upgrade code for upgrading mappings. |
90 |
"""Upgrade a branch to the current mapping version. |
|
0.436.177
by Jelmer Vernooij
Remove trailing whitespace. |
91 |
|
|
0.205.12
by Jelmer Vernooij
Import upgrade code for upgrading mappings. |
92 |
:param branch: Branch to upgrade.
|
93 |
:param foreign_repository: Repository to fetch new revisions from
|
|
94 |
:param allow_changes: Allow changes in mappings.
|
|
95 |
:param verbose: Whether to print verbose list of rewrites
|
|
96 |
"""
|
|
97 |
revid = branch.last_revision() |
|
|
7406.3.5
by Jelmer Vernooij
Fix formatting. |
98 |
renames = upgrade_repository( |
99 |
branch.repository, generate_rebase_map, |
|
100 |
determine_new_revid, revision_id=revid, |
|
101 |
allow_changes=allow_changes, verbose=verbose) |
|
|
0.205.40
by Jelmer Vernooij
Don't upgrade tags to revisions in branch ancestry. |
102 |
if revid in renames: |
103 |
branch.generate_revision_history(renames[revid]) |
|
|
7406.3.5
by Jelmer Vernooij
Fix formatting. |
104 |
ancestry = branch.repository.get_ancestry( |
105 |
branch.last_revision(), topo_sorted=False) |
|
106 |
upgrade_tags( |
|
107 |
branch.tags, branch.repository, generate_rebase_map, |
|
108 |
determine_new_revid, allow_changes=allow_changes, verbose=verbose, |
|
109 |
branch_renames=renames, branch_ancestry=ancestry) |
|
|
0.205.12
by Jelmer Vernooij
Import upgrade code for upgrading mappings. |
110 |
return renames |
111 |
||
112 |
||
113 |
def check_revision_changed(oldrev, newrev): |
|
|
0.436.177
by Jelmer Vernooij
Remove trailing whitespace. |
114 |
"""Check if two revisions are different. This is exactly the same |
|
0.205.12
by Jelmer Vernooij
Import upgrade code for upgrading mappings. |
115 |
as Revision.equals() except that it does not check the revision_id."""
|
116 |
if (newrev.inventory_sha1 != oldrev.inventory_sha1 or |
|
|
7406.3.5
by Jelmer Vernooij
Fix formatting. |
117 |
newrev.timestamp != oldrev.timestamp or |
118 |
newrev.message != oldrev.message or |
|
119 |
newrev.timezone != oldrev.timezone or |
|
120 |
newrev.committer != oldrev.committer or |
|
121 |
newrev.properties != oldrev.properties): |
|
|
0.205.12
by Jelmer Vernooij
Import upgrade code for upgrading mappings. |
122 |
raise UpgradeChangesContent(oldrev.revision_id) |
123 |
||
124 |
||
|
0.436.173
by Jelmer Vernooij
Add rebase-foreign command. |
125 |
def create_upgrade_plan(repository, generate_rebase_map, determine_new_revid, |
|
0.436.172
by Jelmer Vernooij
Split up code for generating rebase map. |
126 |
revision_id=None, allow_changes=False): |
127 |
"""Generate a rebase plan for upgrading revisions. |
|
128 |
||
129 |
:param repository: Repository to do upgrade in
|
|
|
0.436.178
by Jelmer Vernooij
Finish rename to 'bzr-rewrite'. |
130 |
:param foreign_repository: Subversion repository to fetch new revisions
|
131 |
from.
|
|
|
0.436.172
by Jelmer Vernooij
Split up code for generating rebase map. |
132 |
:param new_mapping: New mapping to use.
|
|
0.436.177
by Jelmer Vernooij
Remove trailing whitespace. |
133 |
:param revision_id: Revision to upgrade (None for all revisions in
|
|
0.436.172
by Jelmer Vernooij
Split up code for generating rebase map. |
134 |
repository.)
|
135 |
:param allow_changes: Whether an upgrade is allowed to change the contents
|
|
136 |
of revisions.
|
|
137 |
:return: Tuple with a rebase plan and map of renamed revisions.
|
|
138 |
"""
|
|
139 |
||
140 |
graph = repository.get_graph() |
|
|
0.436.173
by Jelmer Vernooij
Add rebase-foreign command. |
141 |
upgrade_map = generate_rebase_map(revision_id) |
|
0.436.177
by Jelmer Vernooij
Remove trailing whitespace. |
142 |
|
|
0.205.12
by Jelmer Vernooij
Import upgrade code for upgrading mappings. |
143 |
if not allow_changes: |
|
0.205.22
by Jelmer Vernooij
Merge improvements from bzr-svn. |
144 |
for oldrevid, newrevid in upgrade_map.iteritems(): |
|
0.205.12
by Jelmer Vernooij
Import upgrade code for upgrading mappings. |
145 |
oldrev = repository.get_revision(oldrevid) |
146 |
newrev = repository.get_revision(newrevid) |
|
147 |
check_revision_changed(oldrev, newrev) |
|
148 |
||
149 |
if revision_id is None: |
|
|
0.436.177
by Jelmer Vernooij
Remove trailing whitespace. |
150 |
heads = repository.all_revision_ids() |
|
0.205.12
by Jelmer Vernooij
Import upgrade code for upgrading mappings. |
151 |
else: |
152 |
heads = [revision_id] |
|
153 |
||
|
7406.3.5
by Jelmer Vernooij
Fix formatting. |
154 |
plan = generate_transpose_plan( |
155 |
graph.iter_ancestry(heads), upgrade_map, graph, determine_new_revid) |
|
|
7406.3.3
by Jelmer Vernooij
Fix python3 compatibility. |
156 |
def remove_parents(entry): |
157 |
(oldrevid, (newrevid, parents)) = entry |
|
|
0.205.12
by Jelmer Vernooij
Import upgrade code for upgrading mappings. |
158 |
return (oldrevid, newrevid) |
|
0.205.22
by Jelmer Vernooij
Merge improvements from bzr-svn. |
159 |
upgrade_map.update(dict(map(remove_parents, plan.iteritems()))) |
|
0.205.12
by Jelmer Vernooij
Import upgrade code for upgrading mappings. |
160 |
|
161 |
return (plan, upgrade_map) |
|
162 |
||
|
0.436.177
by Jelmer Vernooij
Remove trailing whitespace. |
163 |
|
164 |
def upgrade_repository(repository, generate_rebase_map, |
|
165 |
determine_new_revid, revision_id=None, |
|
|
0.436.173
by Jelmer Vernooij
Add rebase-foreign command. |
166 |
allow_changes=False, verbose=False): |
|
0.205.12
by Jelmer Vernooij
Import upgrade code for upgrading mappings. |
167 |
"""Upgrade the revisions in repository until the specified stop revision. |
168 |
||
169 |
:param repository: Repository in which to upgrade.
|
|
170 |
:param foreign_repository: Repository to fetch new revisions from.
|
|
171 |
:param new_mapping: New mapping.
|
|
|
0.436.177
by Jelmer Vernooij
Remove trailing whitespace. |
172 |
:param revision_id: Revision id up until which to upgrade, or None for
|
|
0.205.12
by Jelmer Vernooij
Import upgrade code for upgrading mappings. |
173 |
all revisions.
|
174 |
:param allow_changes: Allow changes to mappings.
|
|
175 |
:param verbose: Whether to print list of rewrites
|
|
176 |
:return: Dictionary of mapped revisions
|
|
177 |
"""
|
|
178 |
# Find revisions that need to be upgraded, create
|
|
179 |
# dictionary with revision ids in key, new parents in value
|
|
|
7406.3.5
by Jelmer Vernooij
Fix formatting. |
180 |
with repository.lock_write(): |
181 |
(plan, revid_renames) = create_upgrade_plan( |
|
182 |
repository, generate_rebase_map, determine_new_revid, |
|
|
0.436.173
by Jelmer Vernooij
Add rebase-foreign command. |
183 |
revision_id=revision_id, allow_changes=allow_changes) |
|
0.205.12
by Jelmer Vernooij
Import upgrade code for upgrading mappings. |
184 |
if verbose: |
185 |
for revid in rebase_todo(repository, plan): |
|
|
0.436.167
by Jelmer Vernooij
Use trace.note rather than trace.info. |
186 |
trace.note("%s -> %s" % (revid, plan[revid][0])) |
|
0.436.204
by Jelmer Vernooij
Split up large method. |
187 |
rebase(repository, plan, CommitBuilderRevisionRewriter(repository)) |
|
0.205.12
by Jelmer Vernooij
Import upgrade code for upgrading mappings. |
188 |
return revid_renames |