~rogpeppe/juju-core/azure

« back to all changes in this revision

Viewing changes to doc/bazaar-pipelines.txt

  • Committer: William Reade
  • Date: 2012-01-20 21:32:53 UTC
  • mto: This revision was merged to the branch mainline in revision 47.
  • Revision ID: fwereade@gmail.com-20120120213253-csks5e12opl8t1rq
hefty rearrangement, few actual changes

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
Bazaar Pipelines
2
 
================
3
 
 
4
 
Pipelines are implemented using a bazaar plugin.
5
 
 
6
 
  $ mkdir -p ~/.bazaar/plugins
7
 
  $ bzr branch lp:bzr-pipeline ~/.bazaar/plugins/pipeline
8
 
 
9
 
Basic info for pipelines can be found using `bzr help pipeline`.
10
 
 
11
 
Pipelines require lightweight checkouts, but that is how `cobzr` and how the
12
 
recommendations are specified in the `bazaar-usage.txt` document.
13
 
 
14
 
 
15
 
Why use pipelines
16
 
=================
17
 
 
18
 
Pipelines could be thought of as a doubly linked list of dependent branches.
19
 
 
20
 
Often when working you need to break up the implementation, either because the
21
 
work can be more easily reviewed as a collection of small independent changes,
22
 
or the work can be landed incrementally.
23
 
 
24
 
Another reason is to avoid mixing new work with other refactoring that occurs
25
 
during the process of writing the new work.  Often when adding new features,
26
 
other parts of code need to change.  The branch is easier to review if the
27
 
prerequisite changes happen seperately.
28
 
 
29
 
Sometimes you don't know you want to refactor things until half of it is done
30
 
already.  In this situation you can create a new pipe before the current one,
31
 
and move the changes into it.
32
 
 
33
 
  $ bzr add-pipe --before some-refactoring-work
34
 
  $ bzr merge -i :next
35
 
 
36
 
This enters you into an interactive merge of the changes from the next branch
37
 
in the pipeline.
38
 
 
39
 
 
40
 
Merging trunk
41
 
=============
42
 
 
43
 
When merging trunk into a pipeline, you should move to the first branch in the
44
 
pipeline.
45
 
 
46
 
  $ bzr switch :first
47
 
  $ bzr merge <trunk>
48
 
  # resolve any conflicts that may be there
49
 
  $ bzr commit -m "Merge trunk"
50
 
  $ bzr pump
51
 
 
52
 
The pump command is effectively merging each pipe into the next pipe and
53
 
commits without changing the current active pipe.  The pump command starts
54
 
with the active pipe.  If there are conflicts from any particular merge, the
55
 
pumping stops, and the active branch is set to be the branch that had the
56
 
conflicts ready for you to fix the conflicts.
57
 
 
58
 
 
59
 
Useful aliases
60
 
==============
61
 
 
62
 
  $ bzr alias pipes="show-pipeline"
63
 
 
64
 
Show the branches in the pipeline.  All branches are considered a pipeline
65
 
with one branch, so you can run this on any branch (actually a lightweight
66
 
checkout). The current pipe is shown with an `*` at the start of the line.
67
 
 
68
 
  $ bzr alias next="switch-pipe :next"
69
 
  $ bzr alias prev="switch-pipe :prev"
70
 
 
71
 
These two aliases allow you to move around the pipeline using:
72
 
 
73
 
  $ bzr next   # move to the next branch in the pipeline
74
 
  $ bzr prev   # move to the previous branch in the pipeline
75
 
 
76
 
 
77
 
  $ bzr alias pdiff="diff -r branch::prev"
78
 
 
79
 
Show me the differences that this branch has introduced compared to the
80
 
previous branch in the pipeline.
81
 
 
82
 
  $ bzr alias unpumped="missing --mine :next"
83
 
 
84
 
Show the revisions that are in the current branch that are not yet in the next
85
 
branch in the pipeline.
86