/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar
4501.3.1 by Ian Clatworthy
first draft of a 2.0 Upgrade Guide
1
Data migration
2
##############
3
4
Preparing for data migration
5
----------------------------
6
7
Before starting a migration, there are a few important things to do
8
first:
9
10
1. Take a complete backup.
11
12
2. Take some time to purge obsolete branches.
13
14
A complete backup gives you a safety net in case anything goes wrong.
15
16
Purging obsolete branches reduces the amount of data that needs to
17
be migrated. See `Finding obsolete branches`_ later for some tips
18
on doing this.
19
20
21
Introducing the upgrade-related commands
22
----------------------------------------
23
24
There are 3 important commands to be aware of when migrating data.
25
26
* **check** - check a repository, branch or tree for data integrity errors
27
28
* **reconcile** - fix data integrity errors
29
30
* **upgrade** - migrate data to a different format.
31
32
**reconcile** is rarely needed but it's good practice to run **check**
4501.3.3 by Ian Clatworthy
various tweaks & standalone branch upgrade process
33
before and after runing **upgrade**.
4501.3.1 by Ian Clatworthy
first draft of a 2.0 Upgrade Guide
34
4501.3.2 by Ian Clatworthy
shared repository & lp project branch migration steps
35
For detailed help on these commands, see the `Bazaar User Reference`_.
36
37
.. _Bazaar User Reference: ../user-reference/bzr_man.html
38
39
40
Communicating with your community
41
---------------------------------
42
43
To enable a smooth transistion to the new format, you should:
44
45
1. Make one person responsible for migrating the trunk.
4501.3.3 by Ian Clatworthy
various tweaks & standalone branch upgrade process
46
4501.3.2 by Ian Clatworthy
shared repository & lp project branch migration steps
47
2. Test the migration of trunk works successfully.
4501.3.3 by Ian Clatworthy
various tweaks & standalone branch upgrade process
48
49
3. Schedule a time for the trunk migration and notify your community
50
   in advance.
51
52
This advance warning should be long enough for users to have time
4501.3.2 by Ian Clatworthy
shared repository & lp project branch migration steps
53
to upgrade Bazaar and any required plugins before the migration date.
54
55
For larger projects, allow some time for the migration itself.
56
You should have a good idea of how long the migration will take
57
after doing the test migration. It may make sense to do the migration
58
on a weekend or a Friday, giving yourself some breathing space if
59
things go wrong.
60
61
After the trunk is migrated, you'll need to notify your community
62
accordingly, giving them instructions as to how to migrate their
63
local branches. Sample instructions are provided later in this
64
document.
4501.3.1 by Ian Clatworthy
first draft of a 2.0 Upgrade Guide
65
66
67
Migrating a standalone branch
68
-----------------------------
69
4501.3.3 by Ian Clatworthy
various tweaks & standalone branch upgrade process
70
The steps are:
71
72
1. Run **bzr check**.
73
74
2. If there are errors, try using **bzr reconcile** to fix them.
75
   If that fails, file a bug so we can help you resolve the issue
76
   and get your trunk clean. If it works, take a backup copy of
77
   your now clean trunk.
78
79
2. Run **bzr upgrade --format** where *format* is 2a or later.
80
81
3. Run **bzr check** to confirm the final result is good.
4501.3.1 by Ian Clatworthy
first draft of a 2.0 Upgrade Guide
82
83
84
Migrating branches in a shared repository
85
-----------------------------------------
86
4501.3.2 by Ian Clatworthy
shared repository & lp project branch migration steps
87
Upgrade things in the following order:
88
89
1. Upgrade the shared repository.
90
2. Upgrade the branches.
91
3. Upgrade any lightweight checkouts.
92
4501.3.3 by Ian Clatworthy
various tweaks & standalone branch upgrade process
93
As in the standalone branch case, be sure to run **check** before
94
and after the upgrade to check for any existing or introduced issues.
95
4501.3.2 by Ian Clatworthy
shared repository & lp project branch migration steps
96
97
Migrating branches on Launchpad
98
-------------------------------
99
100
To allow isolation between public and private branches, Launchpad
101
uses stacked branches rather than shared repositories as the core
102
technology for efficient branch storage. The process for migrating
103
to a new format for projects using Launchpad code hosting is therefore
104
different to migrating a personal or in-house project.
105
106
Here are the steps to follow:
107
108
1. The nominated person grabs a copy of trunk and does the migration.
109
110
2. On Launchpad, unset the current trunk from being the development focus.
111
   (This *must* be done or the following step won't work as expected.)
112
113
3. Push the migrated trunk to Launchpad.
114
115
4. Set it as the development focus.
116
117
5. Ask users subscribed to the old trunk to subscribe to the new one.
118
119
In summary, these steps mean that the old trunk is still available and
120
existing branches stacked on it will continue to be so. However, the
121
development focus has switched to the migrated trunk and any new branches
122
pushed to Launchpad for your project will now stack on it.
123
124
You are now ready to tell your community that the new trunk is available
125
and to give them instructions on migrating any local branches they have.
126
127
128
Migrating local branches after a central trunk has migrated
129
-----------------------------------------------------------
130
131
To migrate a standalone branch:
132
133
1. Grab the latest branch from the central location into a
134
   new directory.
135
136
2. Pull or merge any changes you've made in your existing branch
137
   into the new branch.
138
139
To migrate branches in a shared repository:
140
141
1. Create a fresh shared repository in the new format (2a or later).
142
143
2. Grab the latest branch from the central location into a
144
   new directory inside the shared repository.
145
146
3. Decide which of your local branches you want to migrate. (If you
147
   haven't already, now's a good time for `Finding obsolete branches`_
148
   and purging them, after backing up first of course.)
149
150
4. To migrate each local branch of interest, there are 2 options:
151
4501.3.3 by Ian Clatworthy
various tweaks & standalone branch upgrade process
152
 * **init** an empty branch in the new repository and **pull** the
153
   revisions from the branch in the old repository across.
4501.3.2 by Ian Clatworthy
shared repository & lp project branch migration steps
154
4501.3.3 by Ian Clatworthy
various tweaks & standalone branch upgrade process
155
 * In the new repository, **branch** from trunk to the new branch
156
   name then **merge** your changes from the matching branch in the
157
   old repository.
4501.3.2 by Ian Clatworthy
shared repository & lp project branch migration steps
158
159
The first method will give you a branch which is identical (in terms
160
of revision history) to the old branch, but it's parent branch will
4501.3.3 by Ian Clatworthy
various tweaks & standalone branch upgrade process
161
be set to the old branch, not your new trunk. If you use this method,
162
you'll probably want to edit your branch.conf file to update the
163
parent branch setting.
4501.3.2 by Ian Clatworthy
shared repository & lp project branch migration steps
164
4501.3.3 by Ian Clatworthy
various tweaks & standalone branch upgrade process
165
In contrast, the second approach sets up the parent branch correctly.
166
However, it isn't ideal if you're not ready to include all the latest
167
revisions from trunk into that branch yet.