~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to doc/intro.txt

  • Committer: Martin Pool
  • Date: 2005-06-28 03:02:31 UTC
  • Revision ID: mbp@sourcefrog.net-20050628030231-d311e4ebcd467ef4
Merge John's import-speedup branch:

                                                                                         
  777 John Arbash Meinel <john@arbash-meinel.com>       Sun 2005-06-26 22:20:32 -0500
      revision-id: john@arbash-meinel.com-20050627032031-e82a50db3863b18e
      bzr selftest was not using the correct bzr

  776 John Arbash Meinel <john@arbash-meinel.com>       Sun 2005-06-26 22:20:22 -0500
      revision-id: john@arbash-meinel.com-20050627032021-c9f21fde989ddaee
      Add was using an old mutter

  775 John Arbash Meinel <john@arbash-meinel.com>       Sun 2005-06-26 22:02:33 -0500
      revision-id: john@arbash-meinel.com-20050627030233-9165cfe98fc63298
      Cleaned up to be less different

  774 John Arbash Meinel <john@arbash-meinel.com>       Sun 2005-06-26 21:54:53 -0500
      revision-id: john@arbash-meinel.com-20050627025452-4260d0e744edef43
      Allow BZR_PLUGIN_PATH='' to negate plugin loading.

  773 John Arbash Meinel <john@arbash-meinel.com>       Sun 2005-06-26 21:49:34 -0500
      revision-id: john@arbash-meinel.com-20050627024933-b7158f67b7b9eae5
      Finished the previous cleanup (allowing load_plugins to be called twice)

  772 John Arbash Meinel <john@arbash-meinel.com>       Sun 2005-06-26 21:45:08 -0500
      revision-id: john@arbash-meinel.com-20050627024508-723b1df510d196fc
      Work on making the tests pass. versioning.py is calling run_cmd directly, but plugins have been loaded.

  771 John Arbash Meinel <john@arbash-meinel.com>       Sun 2005-06-26 21:32:29 -0500
      revision-id: john@arbash-meinel.com-20050627023228-79972744d7c53e15
      Got it down a little bit more by removing import of tree and inventory.

  770 John Arbash Meinel <john@arbash-meinel.com>       Sun 2005-06-26 21:26:05 -0500
      revision-id: john@arbash-meinel.com-20050627022604-350b9773ef622f95
      Reducing the number of import from bzrlib/__init__.py and bzrlib/branch.py

  769 John Arbash Meinel <john@arbash-meinel.com>       Sun 2005-06-26 20:32:25 -0500
      revision-id: john@arbash-meinel.com-20050627013225-32dd044f10d23948
      Updated revision.py and xml.py to include SubElement.

  768 John Arbash Meinel <john@arbash-meinel.com>       Sun 2005-06-26 20:03:56 -0500
      revision-id: john@arbash-meinel.com-20050627010356-ee66919e1c377faf
      Minor typo

  767 John Arbash Meinel <john@arbash-meinel.com>       Sun 2005-06-26 20:03:13 -0500
      revision-id: john@arbash-meinel.com-20050627010312-40d024007eb85051
      Caching the import

  766 John Arbash Meinel <john@arbash-meinel.com>       Sun 2005-06-26 19:51:47 -0500
      revision-id: john@arbash-meinel.com-20050627005147-5281c99e48ed1834
      Created wrapper functions for lazy import of ElementTree

  765 John Arbash Meinel <john@arbash-meinel.com>       Sun 2005-06-26 19:46:37 -0500
      revision-id: john@arbash-meinel.com-20050627004636-bf432902004a94c5
      Removed all of the test imports of cElementTree

  764 John Arbash Meinel <john@arbash-meinel.com>       Sun 2005-06-26 19:43:59 -0500
      revision-id: john@arbash-meinel.com-20050627004358-d137fbe9570dd71b
      Trying to make bzr startup faster.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
Introduction to Bazaar
 
2
======================
 
3
 
 
4
Bazaar's goal is *to make a distributed version control system that
 
5
open source developers will love to use*.  Using Bazaar should feel
 
6
good.
 
7
 
 
8
.. epigraph::
 
9
 
 
10
  Language designers want to design the perfect language. They want to
 
11
  be able to say, "My language is perfect. It can do everything." But
 
12
  it's just plain impossible to design a perfect language, because
 
13
  there are two ways to look at a language. One way is by looking at
 
14
  what can be done with that language. The other is by looking at how
 
15
  we feel using that language -- how we feel while programming.
 
16
 
 
17
  Because of the Turing completeness theory, everything one
 
18
  Turing-complete language can do can theoretically be done by another
 
19
  Turing-complete language, but at a different cost. You can do
 
20
  everything in assembler, but no one wants to program in assembler
 
21
  anymore. From the viewpoint of what you can do, therefore, languages
 
22
  do differ -- but the differences are limited. For example, Python
 
23
  and Ruby provide almost the same power to the programmer.
 
24
 
 
25
  Instead of emphasizing the what, I want to emphasize the how part: how
 
26
  we feel while programming.
 
27
 
 
28
  -- `Yukihiro Matsumoto`__
 
29
 
 
30
__ http://www.artima.com/intv/ruby.html
 
31
 
 
32
Bazaar tries to make simple things simple, and complex things
 
33
possible.  In particular:
 
34
 
 
35
 * Distributed operation is easy: you can work while disconnected; you
 
36
   can fork any other project; you can contribute changes back
 
37
   easily.  
 
38
 
 
39
 * The system is designed to scale to supporting very large trees with
 
40
   a lot of history.  No operations require downloading the entire
 
41
   history of the project.
 
42
 
 
43
 * Changes can be "cherry-picked" out of branches as needed.   Because
 
44
   of dependencies between 
 
45
 
 
46
 
 
47
 
 
48
History-sensitive merging
 
49
=========================
 
50
 
 
51
Baz keeps track of what changes have been merged into a branch.  You
 
52
can repeatedly merge from one branch into another and Baz will pull
 
53
across only the new changes since you last merged.
 
54
 
 
55
 
 
56
Speed
 
57
=====
 
58
 
 
59
For most users, the most important factor for performance is to avoid
 
60
unnecessary network round trips.  Baz tries hard to avoid ever
 
61
downloading the same data twice.  
 
62
 
 
63
Remote archives are automatically cached on your local machine by
 
64
default.  If you have ever accessed a remote revision you should be
 
65
able to get it again without going to the network.  The cache policy
 
66
may be tuned.
 
67
 
 
68
 
 
69
 
 
70
Code history
 
71
============
 
72
 
 
73
One important function of a revision control system is to maintain a
 
74
record of when, why, how and by whom changes were made. 
 
75
 
 
76
Baz requires that branches and archives be named.
 
77
 
 
78
Unlike most other systems, Baz keeps a record for each changeset of
 
79
which branches and archives it passed through on its way to its
 
80
eventual destination.  This allows people to go back later and see the
 
81
context in which the patch was written or merged.
 
82
 
 
83
 
 
84
 
 
85
Scalability
 
86
===========
 
87
 
 
88
We regularly test Baz on projects with tens of thousands of commits,
 
89
and tens of thousands of files.
 
90
 
 
91
 
 
92
 
 
93
Merging
 
94
=======
 
95
 
 
96
The basic method of integration is a three-way merge.  Baz selects an
 
97
appropriate basis version
 
98
 
 
99
 
 
100
 
 
101
File renaming
 
102
=============
 
103
 
 
104
Baz allows files and directories to be renamed in a project.  Unlike
 
105
Subversion, Baz will correctly merge changes spanning file renames.
 
106
This is done by automatically assigning a unique ID to each file,
 
107
which is persistent across renames.
 
108
 
 
109