diff options
| author | Chong Yidong | 2008-10-15 23:40:16 +0000 |
|---|---|---|
| committer | Chong Yidong | 2008-10-15 23:40:16 +0000 |
| commit | e3e89c088e3a41e3bb10f817ae3e53e49c50a6c6 (patch) | |
| tree | 15d395ec3ba79ab4d56fb741a74ad1c1a0efd3f5 | |
| parent | c3aaf1d70f7d4baafb8c4f6d67d1de3283625c9a (diff) | |
| download | emacs-e3e89c088e3a41e3bb10f817ae3e53e49c50a6c6.tar.gz emacs-e3e89c088e3a41e3bb10f817ae3e53e49c50a6c6.zip | |
(File Names): Reorganize description.
(Visiting): Add xref to Mode Line. Copyedits.
(Save Commands): Mention prefix behavior of C-x C-s.
(Numbered Backups): Node deleted.
(Backup Names): Contents of Numbered Backups moved here. State default
of version-control variable.
(Reverting): Copyedits.
(Version Control): Add additional version control systems.
| -rw-r--r-- | doc/emacs/files.texi | 277 |
1 files changed, 143 insertions, 134 deletions
diff --git a/doc/emacs/files.texi b/doc/emacs/files.texi index b21947619cf..02a6c04411b 100644 --- a/doc/emacs/files.texi +++ b/doc/emacs/files.texi | |||
| @@ -1163,18 +1163,19 @@ implies the effect of @code{find-file-existing-other-name}. | |||
| 1163 | @section Version Control | 1163 | @section Version Control |
| 1164 | @cindex version control | 1164 | @cindex version control |
| 1165 | 1165 | ||
| 1166 | @dfn{Version control systems} are packages that can record multiple | 1166 | A @dfn{version control system} is a package that can record multiple |
| 1167 | versions of a source file, usually storing the unchanged parts of the | 1167 | versions of a source file, storing information such as the creation |
| 1168 | file just once. Version control systems also record history information | 1168 | time of each version, who created it, and a description of what was |
| 1169 | such as the creation time of each version, who created it, and a | 1169 | changed in that version. |
| 1170 | description of what was changed in that version. | ||
| 1171 | 1170 | ||
| 1172 | The Emacs version control interface is called VC. Its commands work | 1171 | The Emacs version control interface is called VC. Its commands work |
| 1173 | with different version control systems---currently, it supports CVS, | 1172 | with different version control systems; currently, it supports GNU |
| 1174 | GNU Arch, RCS, Subversion, SCCS, Mercurial, Monotone, Bazaar, and Git. | 1173 | Arch, Bazaar, CVS, Git, Mercurial, Monotone, RCS, SCCS, and |
| 1175 | Of these, the GNU project distributes CVS, GNU Arch, RCS, and Bazaar. | 1174 | Subversion. Of these, the GNU project distributes CVS, GNU Arch, RCS, |
| 1175 | and Bazaar. | ||
| 1176 | 1176 | ||
| 1177 | VC is enabled by default in Emacs. To disable it, set the | 1177 | VC is enabled automatically whenever you visit a file that is |
| 1178 | governed by a version control system. To disable VC entirely, set the | ||
| 1178 | customizable variable @code{vc-handled-backends} to @code{nil} | 1179 | customizable variable @code{vc-handled-backends} to @code{nil} |
| 1179 | @iftex | 1180 | @iftex |
| 1180 | (@pxref{Customizing VC,,,emacs-xtra, Specialized Emacs Features}). | 1181 | (@pxref{Customizing VC,,,emacs-xtra, Specialized Emacs Features}). |
| @@ -1232,125 +1233,137 @@ you want to use. | |||
| 1232 | reversibility, the ability to back up to a saved, known-good state when | 1233 | reversibility, the ability to back up to a saved, known-good state when |
| 1233 | you discover that some modification you did was a mistake or a bad idea. | 1234 | you discover that some modification you did was a mistake or a bad idea. |
| 1234 | 1235 | ||
| 1235 | Version-control systems also support concurrency, the ability to | 1236 | Version control systems also support concurrency: the ability to |
| 1236 | have many people modifying the same collection of code or documents | 1237 | have many people modifying the same collection of code or documents |
| 1237 | knowing that conflicting modifications can be detected and resolved. | 1238 | knowing that conflicting modifications can be detected and resolved. |
| 1238 | 1239 | ||
| 1239 | Version-control systems give you the capability to attach a history | 1240 | Version control systems give you the capability to attach a history |
| 1240 | to your data, explanatory comments about the intention behind each | 1241 | to your data, such as explanatory comments about the intention behind |
| 1241 | change to it. Even for a programmer working solo change histories | 1242 | each change to it. Even for a programmer working solo, change |
| 1242 | are an important aid to memory; for a multi-person project they | 1243 | histories are an important aid to memory; for a multi-person project, |
| 1243 | become a vitally important form of communication among developers. | 1244 | they are a vitally important form of communication among developers. |
| 1244 | 1245 | ||
| 1245 | @node Version Control Systems | 1246 | @node Version Control Systems |
| 1246 | @subsubsection Supported Version Control Systems | 1247 | @subsubsection Supported Version Control Systems |
| 1247 | 1248 | ||
| 1248 | @cindex back end (version control) | 1249 | @cindex back end (version control) |
| 1249 | VC currently works with many different version control systems or | 1250 | VC currently works with many different version control systems or |
| 1250 | ``back ends'': SCCS, RCS, CVS, Subversion, GNU Arch, | 1251 | ``back ends'': |
| 1251 | git, and Mercurial. | ||
| 1252 | @comment Omitting bzr because support is very scratchy and incomplete. | 1252 | @comment Omitting bzr because support is very scratchy and incomplete. |
| 1253 | 1253 | ||
| 1254 | |||
| 1255 | @itemize @bullet | ||
| 1256 | |||
| 1254 | @cindex SCCS | 1257 | @cindex SCCS |
| 1255 | SCCS was the first version-control system ever built, and was long ago | 1258 | @item |
| 1259 | SCCS was the first version control system ever built, and was long ago | ||
| 1256 | superseded by later and more advanced ones; Emacs supports it only for | 1260 | superseded by later and more advanced ones; Emacs supports it only for |
| 1257 | backward compatibility and historical reasons. VC compensates for | 1261 | backward compatibility and historical reasons. VC compensates for |
| 1258 | certain features missing in SCCS (tag names for releases, for example) by | 1262 | certain features missing in SCCS (e.g., tag names for releases) by |
| 1259 | implementing them itself. Some other VC features, such as multiple | 1263 | implementing them itself. Other VC features, such as multiple |
| 1260 | branches, are not available with SCCS. Since SCCS is non-free you | 1264 | branches, are simply unavailable. Since SCCS is non-free, we |
| 1261 | should not use it; use its free replacement CSSC instead. But you | 1265 | recommend avoiding it. |
| 1262 | should use CSSC only if for some reason you cannot use a more | 1266 | |
| 1263 | recent and better-designed version-control system. | 1267 | @cindex CSSC |
| 1268 | @item | ||
| 1269 | CSSC is a free replacement for SCCS. You should use CSSC only if, for | ||
| 1270 | some reason, you cannot use a more recent and better-designed | ||
| 1271 | version-control system. | ||
| 1264 | 1272 | ||
| 1265 | @cindex RCS | 1273 | @cindex RCS |
| 1266 | RCS is the free version control system around which VC was initially | 1274 | @item |
| 1267 | built. Almost everything you can do with RCS can be done through VC. You | 1275 | RCS is the free version control system around which VC was initially |
| 1268 | cannot use RCS over the network, though, and it only works at the level | 1276 | built. Almost everything you can do with RCS can be done through VC. |
| 1269 | of individual files, rather than projects. You should use it if you | 1277 | However, you cannot use RCS over the network, and it only works at the |
| 1270 | want a simple, yet reliable tool for handling individual files. | 1278 | level of individual files rather than projects. |
| 1271 | 1279 | ||
| 1272 | @cindex CVS | 1280 | @cindex CVS |
| 1273 | CVS is the free version control system that was until recently (as of | 1281 | @item |
| 1274 | 2007) used for the majority of free software projects, though it is now | 1282 | CVS is the free version control system that was, until recently (circa |
| 1275 | being superseded by other systems. It allows concurrent | 1283 | 2008), used for the majority of free software projects. Nowadays, it |
| 1276 | multi-user development either locally or over the network. Some of its | 1284 | is slowly being superseded by other systems. CVS allows concurrent |
| 1277 | shortcomings, corrected by newer systems such as Subversion or GNU Arch, | 1285 | multi-user development either locally or over the network. It lacks |
| 1278 | are that it lacks atomic commits or support for renaming files. VC | 1286 | support for atomic commits or file moving/renaming. VC supports all |
| 1279 | supports all basic editing operations under CVS, but for some less | 1287 | basic editing operations under CVS. For some less common tasks, you |
| 1280 | common tasks you still need to call CVS from the command line. Note | 1288 | still need to call CVS from the command line. Note also that before |
| 1281 | also that before using CVS you must set up a repository, which is a | 1289 | using CVS you must set up a repository, which is a subject too complex |
| 1282 | subject too complex to treat here. | 1290 | to treat here. |
| 1283 | 1291 | ||
| 1284 | @cindex SVN | 1292 | @cindex SVN |
| 1285 | @cindex Subversion | 1293 | @cindex Subversion |
| 1286 | Subversion is a free version control system designed to be similar | 1294 | @item |
| 1287 | to CVS but without CVS's problems, and is now (2007) rapidly | 1295 | Subversion (SVN) is a free version control system designed to be |
| 1288 | superseding CVS. Subversion supports atomic commits of filesets, and | 1296 | similar to CVS but without its problems. It supports atomic commits |
| 1289 | versions directories, symbolic links, meta-data, renames, copies, and | 1297 | of filesets, and versioning of directories, symbolic links, meta-data, |
| 1290 | deletes. It can be used via http or via its own protocol. | 1298 | renames, copies, and deletes. |
| 1291 | 1299 | ||
| 1292 | @cindex GNU Arch | 1300 | @cindex GNU Arch |
| 1293 | @cindex Arch | 1301 | @cindex Arch |
| 1294 | GNU Arch is a new version control system that is designed for | 1302 | @item |
| 1295 | distributed work. It differs in many ways from old well-known | 1303 | GNU Arch is a version control system designed for distributed work. |
| 1296 | systems, such as CVS and RCS. It supports different transports for | 1304 | It differs in many ways from older systems like CVS and RCS. It |
| 1297 | interoperating between users, offline operations, and it has good | 1305 | provides different methods for interoperating between users, support |
| 1298 | branching and merging features. It also supports atomic commits of | 1306 | for offline operations, and good branching and merging features. It |
| 1299 | filesets, and keeps a history of file renaming and moving. VC | 1307 | also supports atomic commits of filesets and file moving/renaming. VC |
| 1300 | does not support all operations provided by GNU Arch, so you must | 1308 | does not support all operations provided by GNU Arch, so you must |
| 1301 | sometimes invoke it from the command line, or use a specialized | 1309 | sometimes invoke it from the command line. |
| 1302 | module. | ||
| 1303 | 1310 | ||
| 1304 | @cindex git | 1311 | @cindex git |
| 1305 | git is a version-control system invented by Linus Torvalds to | 1312 | @item |
| 1306 | support Linux kernel development. Like GNU Arch, it supports atomic | 1313 | Git is a version control system invented by Linus Torvalds to support |
| 1307 | commits of filesets, and keeps a history of file renaming and | 1314 | Linux kernel development. It supports atomic commits of filesets and |
| 1308 | moving. One significant feature of git is that it largely abolishes | 1315 | file moving/renaming. One significant feature of git is that it |
| 1309 | the notion of a single centralized repository; instead, each working | 1316 | largely abolishes the notion of a single centralized repository; |
| 1310 | copy of a git project is its own repository and coordination is done | 1317 | instead, each working copy of a git project is its own repository and |
| 1311 | through repository-sync operations. VC fully supports git, except | 1318 | coordination is done through repository-sync operations. VC supports |
| 1312 | that it doesn't do news merges and repository sync operations must | 1319 | most git operations, with the exception of news merges and repository |
| 1313 | be done from the command line. | 1320 | syncing; these must be done from the command line. |
| 1314 | 1321 | ||
| 1315 | @cindex hg | 1322 | @cindex hg |
| 1316 | @cindex Mercurial | 1323 | @cindex Mercurial |
| 1317 | Mercurial is a distributed version-control systems broadly | 1324 | @item |
| 1318 | resembling GNU Arch and git, with atomic fileset commits and | 1325 | Mercurial (hg) is a distributed version control system broadly |
| 1319 | rename/move histories. Like git it is fully decentralized. | 1326 | resembling GNU Arch and git, with atomic fileset commits and file |
| 1320 | VC fully supports Mercurial, except for repository sync operations | 1327 | moving/renaming. Like git, it is fully decentralized. VC supports |
| 1321 | which still need to be done from the command line. | 1328 | most Mercurial commands, with the exception of repository sync |
| 1329 | operations; this needs to be done from the command line. | ||
| 1330 | |||
| 1331 | @cindex bzr | ||
| 1332 | @cindex Bazaar | ||
| 1333 | @item | ||
| 1334 | Bazaar (bzr) is a version control system that supports both | ||
| 1335 | repository-based and distributed versioning, with atomic fileset | ||
| 1336 | commits and file moving/renaming. VC supports most basic editing | ||
| 1337 | operations under Bazaar. | ||
| 1338 | @end itemize | ||
| 1322 | 1339 | ||
| 1323 | @node VCS Concepts | 1340 | @node VCS Concepts |
| 1324 | @subsubsection Concepts of Version Control | 1341 | @subsubsection Concepts of Version Control |
| 1325 | 1342 | ||
| 1326 | @cindex repository | 1343 | @cindex repository |
| 1327 | @cindex registered file | 1344 | @cindex registered file |
| 1328 | When a file is under version control, we also say that it is | 1345 | When a file is under version control, we say that it is |
| 1329 | @dfn{registered} in the version control system. The system has a | 1346 | @dfn{registered} in the version control system. The system has a |
| 1330 | @dfn{repository} which stores both the file's present state plus its | 1347 | @dfn{repository} which stores both the file's present state and its |
| 1331 | change history---enough to reconstruct the current version or any | 1348 | change history---enough to reconstruct the current version or any |
| 1332 | earlier version. The repository will also contain a @dfn{log entry} for | 1349 | earlier version. The repository also contains other information, such |
| 1333 | each change to the file, describing in words what was modified in that | 1350 | as @dfn{log entries} that describe the changes made to each file. |
| 1334 | revision. | ||
| 1335 | 1351 | ||
| 1336 | @cindex work file | 1352 | @cindex work file |
| 1337 | @cindex checking out files | 1353 | @cindex checking out files |
| 1338 | A file checked out of a version-control repository is sometimes | 1354 | A file @dfn{checked out} of a repository is called the @dfn{work |
| 1339 | called the @dfn{work file}. You edit the work file and make changes | 1355 | file}. You edit the work file and make changes in it, as you would |
| 1340 | in it, as you would with an ordinary file. After you are done with a | 1356 | with an ordinary file. After you are done with a set of changes, you |
| 1341 | set of changes, you @dfn{check in} or @dfn{commit} the file, which | 1357 | @dfn{check in} or @dfn{commit} the file; this records the changes in |
| 1342 | records the changes in the repository, along with a log entry for | 1358 | the repository, along with a log entry for those changes. |
| 1343 | them. | ||
| 1344 | 1359 | ||
| 1345 | @cindex revision | 1360 | @cindex revision |
| 1346 | @cindex revision ID | 1361 | @cindex revision ID |
| 1347 | A copy of a file stored in a repository is called a @dfn{revision}. | 1362 | A copy of a file stored in a repository is called a @dfn{revision}. |
| 1348 | The history of a file is a sequence of revisions. Each revisions is | 1363 | The history of a file is a sequence of revisions. Each revisions is |
| 1349 | named by a @dfn{revision ID}. In older VCSes (such as SCCS and RCS), | 1364 | named by a @dfn{revision ID}. The format of the revision ID depends |
| 1350 | the simplest kind of revision ID consisted of a @dfn{dot-pair}; | 1365 | on the version control system; in the simplest case, it is just an |
| 1351 | integers (the @dfn{major} and @dfn{minor} revisions) separated by a | 1366 | integer. |
| 1352 | dot. Newer VCSes tend to use @dfn{monotonic} revision IDs that are | ||
| 1353 | simple integers counting from 1. | ||
| 1354 | 1367 | ||
| 1355 | To go beyond these basic concepts, you will need to understand three | 1368 | To go beyond these basic concepts, you will need to understand three |
| 1356 | ways in which version-control systems can differ from each other. They | 1369 | ways in which version-control systems can differ from each other. They |
| @@ -1361,24 +1374,24 @@ to understand as you use it. | |||
| 1361 | 1374 | ||
| 1362 | @cindex locking versus merging | 1375 | @cindex locking versus merging |
| 1363 | A version control system typically has some mechanism to coordinate | 1376 | A version control system typically has some mechanism to coordinate |
| 1364 | between users who want to change the same file. One method is | 1377 | between users who want to change the same file. There are two ways to |
| 1365 | @dfn{locking} (analogous to the locking that Emacs uses to detect | 1378 | do this: locking and merging. |
| 1366 | simultaneous editing of a file, but distinct from it). In a locking | 1379 | |
| 1367 | system, such as SCCS, you must @dfn{lock} a file before you start to | 1380 | In a version control system that uses locking, work files are |
| 1368 | edit it. The other method is @dfn{merging}; the system tries to | 1381 | normally read-only. To edit a file, you ask the version control |
| 1369 | merge your changes with other people's changes when you check them in. | 1382 | system to make it writable for you by @dfn{locking} it; only one user |
| 1370 | 1383 | can lock a given file at any given time. This procedure is analogous | |
| 1371 | With version control locking, work files are normally read-only so | 1384 | to, but different from, the locking that Emacs uses to detect |
| 1372 | that you cannot change them. You ask the version control system to make | 1385 | simultaneous editing of ordinary files (@pxref{Interlocking}). When |
| 1373 | a work file writable for you by locking it; only one user can do | 1386 | you check in your changes, that unlocks the file, and the work file |
| 1374 | this at any given time. When you check in your changes, that unlocks | 1387 | becomes read-only again. Other users may then lock the file for |
| 1375 | the file, making the work file read-only again. This allows other users | 1388 | making their own changes. |
| 1376 | to lock the file to make further changes. | 1389 | |
| 1377 | 1390 | In a version control system that uses merging, each user may check | |
| 1378 | By contrast, a merging system lets each user check out and modify a | 1391 | out and modify a work file at any time. The system allows you to |
| 1379 | work file at any time. When you check in a file, the system will | 1392 | @dfn{merge} your work file, which may contain changes that have not |
| 1380 | attempt to merge your changes with any others checked into the | 1393 | been checked in, with the latest changes that others have checked into |
| 1381 | repository since you checked out the file. | 1394 | the repository. |
| 1382 | 1395 | ||
| 1383 | Both locking and merging systems can have problems when multiple users | 1396 | Both locking and merging systems can have problems when multiple users |
| 1384 | try to modify the same file at the same time. Locking systems have | 1397 | try to modify the same file at the same time. Locking systems have |
| @@ -1392,46 +1405,42 @@ have to be resolved by human judgment and communication. | |||
| 1392 | told to operate in a merging style. CVS and Subversion are | 1405 | told to operate in a merging style. CVS and Subversion are |
| 1393 | merge-based by default but can be told to operate in a locking mode. | 1406 | merge-based by default but can be told to operate in a locking mode. |
| 1394 | Most later version-control systems, such as GNU Arch, git, and | 1407 | Most later version-control systems, such as GNU Arch, git, and |
| 1395 | Mercurial, have been based exclusively on merging rather than locking. | 1408 | Mercurial, are based exclusively on merging rather than locking. This |
| 1396 | This is because experience has shown that the merging-based approach | 1409 | is because experience has shown that merging is generally superior to |
| 1397 | is generally superior to the locking one, both in convenience to | 1410 | locking, both in convenience to developers and in minimizing the |
| 1398 | developers and in minimizing the number and severity of conflicts that | 1411 | number and severity of conflicts that actually occur. Sometimes, |
| 1399 | actually occur. | 1412 | newer version control systems may have locks retrofitted onto them for |
| 1400 | 1413 | reasons having nothing to do with technology@footnote{Usually the | |
| 1401 | While it is rather unlikely that anyone will ever again build a | 1414 | control-freak instincts of managers.}. |
| 1402 | fundamentally locking-based rather than merging-based version-control | 1415 | |
| 1403 | system in the future, merging-based version-systems sometimes have locks | 1416 | VC mode supports both locking and merging version control and tries |
| 1404 | retrofitted onto them for reasons having nothing to do with technology. | 1417 | to hide the differences between them as much as possible. |
| 1405 | @footnote{Usually the control-freak instincts of managers.} For this | ||
| 1406 | reason, and to support older systems still in use, VC mode supports | ||
| 1407 | both locking and merging version control and tries to hide the differences | ||
| 1408 | between them as much as possible. | ||
| 1409 | 1418 | ||
| 1410 | @cindex files versus changesets. | 1419 | @cindex files versus changesets. |
| 1411 | On SCCS, RCS, CVS, and other early version-control systems, checkins | 1420 | On SCCS, RCS, CVS, and other early version-control systems, checkins |
| 1412 | and other operations are @dfn{file-based}; each file has its own | 1421 | and other operations are @dfn{file-based}; each file has its own |
| 1413 | @dfn{master file} with its own comment and revision history separate | 1422 | @dfn{master file} with its own comment and revision history separate |
| 1414 | from that of all other files in the system. Later systems, beginning | 1423 | from that of all other files in the system. Later systems, beginning |
| 1415 | with Subversion, are @dfn{changeset-based}; a checkin under these | 1424 | with Subversion, are @dfn{changeset-based}: a checkin may include |
| 1416 | may include changes to several files and that change set is treated as | 1425 | changes to several files, and the entire set of changes is treated as |
| 1417 | a unit by the system. Any comment associated with the change belongs | 1426 | a unit by the system. Any comment associated with the change does not |
| 1418 | to no single file, but is attached to the changeset itself. | 1427 | belong to a single file, but to the changeset itself. |
| 1419 | 1428 | ||
| 1420 | Changeset-based version control is in general both more flexible and | 1429 | Changeset-based version control is generally more flexible and |
| 1421 | more powerful than file-based version control; usually, when a change to | 1430 | powerful than file-based version control; usually, when a change to |
| 1422 | multiple files has to be backed out, it's good to be able to easily | 1431 | multiple files has to be backed out, it's good to be able to easily |
| 1423 | identify and remove all of it. But it took some years for designers to | 1432 | identify and remove all of it. But it took some years for designers |
| 1424 | figure that out, and while file-based systems are passing out of use | 1433 | to figure that out, and while file-based systems are passing out of |
| 1425 | there are lots of legacy repositories still to be dealt with at time of | 1434 | use there are lots of legacy repositories still to be dealt with at |
| 1426 | writing in 2007. | 1435 | time of writing (2008). |
| 1427 | 1436 | ||
| 1428 | In fact, older versions of VC mode supported only file-based systems, | 1437 | Older versions of VC supported only file-based systems, leading to |
| 1429 | leading to some unhappy results when it was used to drive | 1438 | some unhappy results when it was used to drive changeset-based |
| 1430 | changeset-based ones---the Subversion support, for example, used to break | 1439 | ones---the Subversion support, for example, used to break up |
| 1431 | up changesets into multiple per-file commits. This has been fixed, but | 1440 | changesets into multiple per-file commits. This has been fixed, but |
| 1432 | it has left a legacy in VC-mode's terminology. The terms ``checkin'' | 1441 | it has left a legacy in VC's terminology. The terms ``checkin'' and |
| 1433 | and ``checkout'' are associated with file-based and locking-based | 1442 | ``checkout'' are associated with file-based and locking-based systems |
| 1434 | systems and a bit archaic; nowadays those operations are usually called | 1443 | and a bit archaic; nowadays those operations are usually called |
| 1435 | ``commit'' and ``update''. | 1444 | ``commit'' and ``update''. |
| 1436 | 1445 | ||
| 1437 | @cindex centralized vs. decentralized | 1446 | @cindex centralized vs. decentralized |
| @@ -1443,8 +1452,8 @@ single point of failure---if the repository server is down all work | |||
| 1443 | stops. The other is that you need to be connected live to the server to | 1452 | stops. The other is that you need to be connected live to the server to |
| 1444 | do checkins and checkouts; if you're offline, you can't work. | 1453 | do checkins and checkouts; if you're offline, you can't work. |
| 1445 | 1454 | ||
| 1446 | Newer version-control systems like GNU Arch, git, Mercurial, and Bzr | 1455 | Newer version-control systems like GNU Arch, git, Mercurial, and |
| 1447 | are @dfn{decentralized}. A project may have several different | 1456 | Bazaar are @dfn{decentralized}. A project may have several different |
| 1448 | repositories, and these systems support a sort of super-merge between | 1457 | repositories, and these systems support a sort of super-merge between |
| 1449 | repositories that tries to reconcile their change histories. At the | 1458 | repositories that tries to reconcile their change histories. At the |
| 1450 | limit, each developer has his/her own repository, and repository | 1459 | limit, each developer has his/her own repository, and repository |