/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to doc/purpose.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
What is the purpose of version control?
 
2
***************************************
 
3
 
 
4
There are several overlapping purposes:
 
5
 
 
6
* Allowing concurrent development by several people.  Primarily,
 
7
  helping resolve changes when they are integrated, but also making
 
8
  each person aware of what the others have been doing, allowing them
 
9
  to talk about changes, etc.
 
10
 
 
11
* To allow different lines of development, with sensible
 
12
  reintegration.  e.g. stable/development, or branches for
 
13
  experimental features.
 
14
 
 
15
* To record a history of development, so that you can find out why a
 
16
  feature went in or who added it, or which releases might be affected
 
17
  by a bug.
 
18
 
 
19
* In particular, as a *record of decisions* about the project made by
 
20
  the developers.
 
21
 
 
22
* Help in writing a gloss on that history; not simply a record of
 
23
  events but an explanation of what happened and why.  Such a record
 
24
  may need to be written at several levels: a very detailed
 
25
  explanation of changes to a function; a note that a bug was fixed
 
26
  and why; and then a brief NEWS file for the whole release.  
 
27
 
 
28
  While past events can never change, the intepretation placed upon
 
29
  them may change, even after the event.  For example, even after a
 
30
  release has gone out, one might want to go back and note that a bug
 
31
  was actually fixed.
 
32
 
 
33
  The system is helping the developers tell a story about the
 
34
  development of the project.
 
35
 
 
36
* As an aid to thinking about the project.  (Much as a personal
 
37
  journal is not merely a record or even analysis of events, but also
 
38
  a chance to reflect and to think of the future.)
 
39
 
 
40
  People can review diffs, and then write a description of what
 
41
  changed, and in doing so perhaps realize something else they should
 
42
  do, or realize they made a mistake.  Making branches helps work out
 
43
  the order of feature integration and the stability of different
 
44
  lines of development.
 
45
 
 
46
* As an 'undo' protection mechanism.  This is one reason why version
 
47
  control can be useful on projects that have only a single developer
 
48
  and never branch.
 
49
 
 
50
* Incidentally, as a backup mechanism.  Version control systems,
 
51
  particularly distributed systems, tend to cause code to exist on
 
52
  several machines, which gives some protection against loss of any
 
53
  single copy.  It's still a good idea to use a separate backup system
 
54
  as well.
 
55
 
 
56
* As a file-sharing mechanism: even with just a single developer and
 
57
  line of development it can be useful to keep files synchronized
 
58
  between several machines, which may not always be connected.
 
59
 
 
60
 
 
61
----
 
62
 
 
63
Steve Berczuk says__:
 
64
 
 
65
__ http://www.bell-labs.com/cgi-user/OrgPatterns/OrgPatterns?ConfigurationManagementPatterns
 
66
 
 
67
    A successful configuration management process allows:
 
68
 
 
69
    * Developers to work together on a project, sharing common code.
 
70
 
 
71
    * Developers to share development effort on a module.
 
72
 
 
73
    * Developers to have access to the current stable (tested) version of a system.
 
74
 
 
75
    * The ability to back up to a previous stable version (one of a number of NamedStableBases), of a system
 
76
 
 
77
    * The ability of a developer to checkpoint changes to a module and
 
78
      to back off to a previous version of that module