hgbook
changeset 653:6b1577ef5135
Update Chinese translation
author | Dongsheng Song <dongsheng.song@gmail.com> |
---|---|
date | Fri Mar 20 17:17:55 2009 +0800 (2009-03-20) |
parents | 751ee9bf2e8d |
children | 1c13ed2130a7 |
files | po/zh.po |
line diff
1.1 --- a/po/zh.po Fri Mar 20 16:59:07 2009 +0800 1.2 +++ b/po/zh.po Fri Mar 20 17:17:55 2009 +0800 1.3 @@ -41,8 +41,8 @@ 1.4 msgid "" 1.5 msgstr "" 1.6 "Project-Id-Version: hgbook 1.2\n" 1.7 -"POT-Creation-Date: 2009-03-20 15:47+0800\n" 1.8 -"PO-Revision-Date: 2009-03-18 19:50+0800\n" 1.9 +"POT-Creation-Date: 2009-03-20 17:12+0800\n" 1.10 +"PO-Revision-Date: 2009-03-20 17:12+0800\n" 1.11 "Last-Translator: \n" 1.12 "Language-Team: Simplified Chinese <i18n-zh@googlegroups.com >\n" 1.13 "MIME-Version: 1.0\n" 1.14 @@ -477,11 +477,12 @@ 1.15 1.16 #. type: Content of: <book><appendix><sect1><sect2><title> 1.17 #: ../en/appB-mq-ref.xml:43 1.18 -#, fuzzy 1.19 msgid "" 1.20 "<command role=\"hg-ext-mq\">qdelete</command>&emdash;delete a patch from the " 1.21 -"<filename role=\"special\">series</filename> file}" 1.22 -msgstr "<command role=\"hg-ext-mq\">qseries</command>&emdash;显示补丁序列" 1.23 +"<filename role=\"special\">series</filename> file" 1.24 +msgstr "" 1.25 +"<command role=\"hg-ext-mq\">qdelete</command>&emdash;从文件 <filename role=" 1.26 +"\"special\">series</filename> 中删除补丁" 1.27 1.28 #. type: Content of: <book><appendix><sect1><sect2><para> 1.29 #: ../en/appB-mq-ref.xml:48 1.30 @@ -1519,6 +1520,1037 @@ 1.31 "license reference or copy." 1.32 msgstr "" 1.33 1.34 +#. type: Content of: <book><preface><title> 1.35 +#: ../en/ch00-preface.xml:5 1.36 +msgid "Preface" 1.37 +msgstr "序言" 1.38 + 1.39 +#. type: Content of: <book><preface><sect1><title> 1.40 +#: ../en/ch00-preface.xml:8 1.41 +msgid "Why revision control? Why Mercurial?" 1.42 +msgstr "为什么使用版本控制? 为什么使用 Mercurial?" 1.43 + 1.44 +#. type: Content of: <book><preface><sect1><para> 1.45 +#: ../en/ch00-preface.xml:10 1.46 +msgid "" 1.47 +"Revision control is the process of managing multiple versions of a piece of " 1.48 +"information. In its simplest form, this is something that many people do by " 1.49 +"hand: every time you modify a file, save it under a new name that contains a " 1.50 +"number, each one higher than the number of the preceding version." 1.51 +msgstr "" 1.52 + 1.53 +#. type: Content of: <book><preface><sect1><para> 1.54 +#: ../en/ch00-preface.xml:16 1.55 +msgid "" 1.56 +"Manually managing multiple versions of even a single file is an error-prone " 1.57 +"task, though, so software tools to help automate this process have long been " 1.58 +"available. The earliest automated revision control tools were intended to " 1.59 +"help a single user to manage revisions of a single file. Over the past few " 1.60 +"decades, the scope of revision control tools has expanded greatly; they now " 1.61 +"manage multiple files, and help multiple people to work together. The best " 1.62 +"modern revision control tools have no problem coping with thousands of people " 1.63 +"working together on projects that consist of hundreds of thousands of files." 1.64 +msgstr "" 1.65 + 1.66 +#. type: Content of: <book><preface><sect1><para> 1.67 +#: ../en/ch00-preface.xml:27 1.68 +msgid "" 1.69 +"The arrival of distributed revision control is relatively recent, and so far " 1.70 +"this new field has grown due to people's willingness to explore ill-charted " 1.71 +"territory." 1.72 +msgstr "" 1.73 + 1.74 +#. type: Content of: <book><preface><sect1><para> 1.75 +#: ../en/ch00-preface.xml:31 1.76 +msgid "" 1.77 +"I am writing a book about distributed revision control because I believe that " 1.78 +"it is an important subject that deserves a field guide. I chose to write " 1.79 +"about Mercurial because it is the easiest tool to learn the terrain with, and " 1.80 +"yet it scales to the demands of real, challenging environments where many " 1.81 +"other revision control tools buckle." 1.82 +msgstr "" 1.83 + 1.84 +#. type: Content of: <book><preface><sect1><sect2><title> 1.85 +#: ../en/ch00-preface.xml:39 1.86 +msgid "Why use revision control?" 1.87 +msgstr "为什么使用版本控制?" 1.88 + 1.89 +#. type: Content of: <book><preface><sect1><sect2><para> 1.90 +#: ../en/ch00-preface.xml:41 1.91 +msgid "" 1.92 +"There are a number of reasons why you or your team might want to use an " 1.93 +"automated revision control tool for a project." 1.94 +msgstr "" 1.95 + 1.96 +#. type: Content of: <book><preface><sect1><sect2><itemizedlist><listitem><para> 1.97 +#: ../en/ch00-preface.xml:46 1.98 +msgid "" 1.99 +"It will track the history and evolution of your project, so you don't have " 1.100 +"to. For every change, you'll have a log of <emphasis>who</emphasis> made it; " 1.101 +"<emphasis>why</emphasis> they made it; <emphasis>when</emphasis> they made " 1.102 +"it; and <emphasis>what</emphasis> the change was." 1.103 +msgstr "" 1.104 + 1.105 +#. type: Content of: <book><preface><sect1><sect2><itemizedlist><listitem><para> 1.106 +#: ../en/ch00-preface.xml:53 1.107 +msgid "" 1.108 +"When you're working with other people, revision control software makes it " 1.109 +"easier for you to collaborate. For example, when people more or less " 1.110 +"simultaneously make potentially incompatible changes, the software will help " 1.111 +"you to identify and resolve those conflicts." 1.112 +msgstr "" 1.113 + 1.114 +#. type: Content of: <book><preface><sect1><sect2><itemizedlist><listitem><para> 1.115 +#: ../en/ch00-preface.xml:59 1.116 +msgid "" 1.117 +"It can help you to recover from mistakes. If you make a change that later " 1.118 +"turns out to be in error, you can revert to an earlier version of one or more " 1.119 +"files. In fact, a <emphasis>really</emphasis> good revision control tool " 1.120 +"will even help you to efficiently figure out exactly when a problem was " 1.121 +"introduced (see section <xref linkend=\"sec.undo.bisect\"/> for details)." 1.122 +msgstr "" 1.123 + 1.124 +#. type: Content of: <book><preface><sect1><sect2><itemizedlist><listitem><para> 1.125 +#: ../en/ch00-preface.xml:66 1.126 +msgid "" 1.127 +"It will help you to work simultaneously on, and manage the drift between, " 1.128 +"multiple versions of your project." 1.129 +msgstr "" 1.130 + 1.131 +#. type: Content of: <book><preface><sect1><sect2><para> 1.132 +#: ../en/ch00-preface.xml:71 1.133 +msgid "" 1.134 +"Most of these reasons are equally valid---at least in theory---whether you're " 1.135 +"working on a project by yourself, or with a hundred other people." 1.136 +msgstr "" 1.137 + 1.138 +#. type: Content of: <book><preface><sect1><sect2><para> 1.139 +#: ../en/ch00-preface.xml:75 1.140 +msgid "" 1.141 +"A key question about the practicality of revision control at these two " 1.142 +"different scales (<quote>lone hacker</quote> and <quote>huge team</quote>) is " 1.143 +"how its <emphasis>benefits</emphasis> compare to its <emphasis>costs</" 1.144 +"emphasis>. A revision control tool that's difficult to understand or use is " 1.145 +"going to impose a high cost." 1.146 +msgstr "" 1.147 + 1.148 +#. type: Content of: <book><preface><sect1><sect2><para> 1.149 +#: ../en/ch00-preface.xml:83 1.150 +msgid "" 1.151 +"A five-hundred-person project is likely to collapse under its own weight " 1.152 +"almost immediately without a revision control tool and process. In this case, " 1.153 +"the cost of using revision control might hardly seem worth considering, since " 1.154 +"<emphasis>without</emphasis> it, failure is almost guaranteed." 1.155 +msgstr "" 1.156 + 1.157 +#. type: Content of: <book><preface><sect1><sect2><para> 1.158 +#: ../en/ch00-preface.xml:90 1.159 +msgid "" 1.160 +"On the other hand, a one-person <quote>quick hack</quote> might seem like a " 1.161 +"poor place to use a revision control tool, because surely the cost of using " 1.162 +"one must be close to the overall cost of the project. Right?" 1.163 +msgstr "" 1.164 + 1.165 +#. type: Content of: <book><preface><sect1><sect2><para> 1.166 +#: ../en/ch00-preface.xml:95 1.167 +msgid "" 1.168 +"Mercurial uniquely supports <emphasis>both</emphasis> of these scales of " 1.169 +"development. You can learn the basics in just a few minutes, and due to its " 1.170 +"low overhead, you can apply revision control to the smallest of projects with " 1.171 +"ease. Its simplicity means you won't have a lot of abstruse concepts or " 1.172 +"command sequences competing for mental space with whatever you're " 1.173 +"<emphasis>really</emphasis> trying to do. At the same time, Mercurial's high " 1.174 +"performance and peer-to-peer nature let you scale painlessly to handle large " 1.175 +"projects." 1.176 +msgstr "" 1.177 + 1.178 +#. type: Content of: <book><preface><sect1><sect2><para> 1.179 +#: ../en/ch00-preface.xml:105 1.180 +msgid "" 1.181 +"No revision control tool can rescue a poorly run project, but a good choice " 1.182 +"of tools can make a huge difference to the fluidity with which you can work " 1.183 +"on a project." 1.184 +msgstr "" 1.185 + 1.186 +#. type: Content of: <book><preface><sect1><sect2><title> 1.187 +#: ../en/ch00-preface.xml:112 1.188 +msgid "The many names of revision control" 1.189 +msgstr "版本控制的别名" 1.190 + 1.191 +#. type: Content of: <book><preface><sect1><sect2><para> 1.192 +#: ../en/ch00-preface.xml:114 1.193 +msgid "" 1.194 +"Revision control is a diverse field, so much so that it is referred to by " 1.195 +"many names and acronyms. Here are a few of the more common variations you'll " 1.196 +"encounter:" 1.197 +msgstr "" 1.198 + 1.199 +#. type: Content of: <book><preface><sect1><sect2><itemizedlist><listitem><para> 1.200 +#: ../en/ch00-preface.xml:118 1.201 +msgid "Revision control (RCS)" 1.202 +msgstr "版本控制(RCS)" 1.203 + 1.204 +#. type: Content of: <book><preface><sect1><sect2><itemizedlist><listitem><para> 1.205 +#: ../en/ch00-preface.xml:119 1.206 +msgid "Software configuration management (SCM), or configuration management" 1.207 +msgstr "软件配置管理(SCM),或配置管理" 1.208 + 1.209 +#. type: Content of: <book><preface><sect1><sect2><itemizedlist><listitem><para> 1.210 +#: ../en/ch00-preface.xml:121 1.211 +msgid "Source code management" 1.212 +msgstr "源代码管理" 1.213 + 1.214 +#. type: Content of: <book><preface><sect1><sect2><itemizedlist><listitem><para> 1.215 +#: ../en/ch00-preface.xml:122 1.216 +msgid "Source code control, or source control" 1.217 +msgstr "源代码控制,或源控制" 1.218 + 1.219 +#. type: Content of: <book><preface><sect1><sect2><itemizedlist><listitem><para> 1.220 +#: ../en/ch00-preface.xml:124 1.221 +msgid "Version control (VCS)" 1.222 +msgstr "版本控制(VCS)" 1.223 + 1.224 +#. type: Content of: <book><preface><sect1><sect2><para> 1.225 +#: ../en/ch00-preface.xml:126 1.226 +msgid "" 1.227 +"Some people claim that these terms actually have different meanings, but in " 1.228 +"practice they overlap so much that there's no agreed or even useful way to " 1.229 +"tease them apart." 1.230 +msgstr "" 1.231 + 1.232 +#. type: Content of: <book><preface><sect1><title> 1.233 +#: ../en/ch00-preface.xml:134 1.234 +msgid "This book is a work in progress" 1.235 +msgstr "本书正在编写中" 1.236 + 1.237 +#. type: Content of: <book><preface><sect1><para> 1.238 +#: ../en/ch00-preface.xml:136 1.239 +msgid "" 1.240 +"I am releasing this book while I am still writing it, in the hope that it " 1.241 +"will prove useful to others. I am writing under an open license in the hope " 1.242 +"that you, my readers, will contribute feedback and perhaps content of your " 1.243 +"own." 1.244 +msgstr "" 1.245 + 1.246 +#. type: Content of: <book><preface><sect1><title> 1.247 +#: ../en/ch00-preface.xml:143 1.248 +msgid "About the examples in this book" 1.249 +msgstr "本书的例子" 1.250 + 1.251 +#. type: Content of: <book><preface><sect1><para> 1.252 +#: ../en/ch00-preface.xml:145 1.253 +msgid "" 1.254 +"This book takes an unusual approach to code samples. Every example is " 1.255 +"<quote>live</quote>---each one is actually the result of a shell script that " 1.256 +"executes the Mercurial commands you see. Every time an image of the book is " 1.257 +"built from its sources, all the example scripts are automatically run, and " 1.258 +"their current results compared against their expected results." 1.259 +msgstr "" 1.260 + 1.261 +#. type: Content of: <book><preface><sect1><para> 1.262 +#: ../en/ch00-preface.xml:152 1.263 +msgid "" 1.264 +"The advantage of this approach is that the examples are always accurate; they " 1.265 +"describe <emphasis>exactly</emphasis> the behaviour of the version of " 1.266 +"Mercurial that's mentioned at the front of the book. If I update the version " 1.267 +"of Mercurial that I'm documenting, and the output of some command changes, " 1.268 +"the build fails." 1.269 +msgstr "" 1.270 + 1.271 +#. type: Content of: <book><preface><sect1><para> 1.272 +#: ../en/ch00-preface.xml:159 1.273 +msgid "" 1.274 +"There is a small disadvantage to this approach, which is that the dates and " 1.275 +"times you'll see in examples tend to be <quote>squashed</quote> together in a " 1.276 +"way that they wouldn't be if the same commands were being typed by a human. " 1.277 +"Where a human can issue no more than one command every few seconds, with any " 1.278 +"resulting timestamps correspondingly spread out, my automated example scripts " 1.279 +"run many commands in one second." 1.280 +msgstr "" 1.281 + 1.282 +#. type: Content of: <book><preface><sect1><para> 1.283 +#: ../en/ch00-preface.xml:167 1.284 +msgid "" 1.285 +"As an instance of this, several consecutive commits in an example can show up " 1.286 +"as having occurred during the same second. You can see this occur in the " 1.287 +"<literal role=\"hg-ext\">bisect</literal> example in section <xref linkend=" 1.288 +"\"sec.undo.bisect\"/>, for instance." 1.289 +msgstr "" 1.290 + 1.291 +#. type: Content of: <book><preface><sect1><para> 1.292 +#: ../en/ch00-preface.xml:173 1.293 +msgid "" 1.294 +"So when you're reading examples, don't place too much weight on the dates or " 1.295 +"times you see in the output of commands. But <emphasis>do</emphasis> be " 1.296 +"confident that the behaviour you're seeing is consistent and reproducible." 1.297 +msgstr "" 1.298 + 1.299 +#. type: Content of: <book><preface><sect1><title> 1.300 +#: ../en/ch00-preface.xml:181 1.301 +msgid "Trends in the field" 1.302 +msgstr "版本控制的发展趋势" 1.303 + 1.304 +#. type: Content of: <book><preface><sect1><para> 1.305 +#: ../en/ch00-preface.xml:183 1.306 +msgid "" 1.307 +"There has been an unmistakable trend in the development and use of revision " 1.308 +"control tools over the past four decades, as people have become familiar with " 1.309 +"the capabilities of their tools and constrained by their limitations." 1.310 +msgstr "" 1.311 + 1.312 +#. type: Content of: <book><preface><sect1><para> 1.313 +#: ../en/ch00-preface.xml:188 1.314 +msgid "" 1.315 +"The first generation began by managing single files on individual computers. " 1.316 +"Although these tools represented a huge advance over ad-hoc manual revision " 1.317 +"control, their locking model and reliance on a single computer limited them " 1.318 +"to small, tightly-knit teams." 1.319 +msgstr "" 1.320 + 1.321 +#. type: Content of: <book><preface><sect1><para> 1.322 +#: ../en/ch00-preface.xml:194 1.323 +msgid "" 1.324 +"The second generation loosened these constraints by moving to network-" 1.325 +"centered architectures, and managing entire projects at a time. As projects " 1.326 +"grew larger, they ran into new problems. With clients needing to talk to " 1.327 +"servers very frequently, server scaling became an issue for large projects. " 1.328 +"An unreliable network connection could prevent remote users from being able " 1.329 +"to talk to the server at all. As open source projects started making read-" 1.330 +"only access available anonymously to anyone, people without commit privileges " 1.331 +"found that they could not use the tools to interact with a project in a " 1.332 +"natural way, as they could not record their changes." 1.333 +msgstr "" 1.334 + 1.335 +#. type: Content of: <book><preface><sect1><para> 1.336 +#: ../en/ch00-preface.xml:206 1.337 +msgid "" 1.338 +"The current generation of revision control tools is peer-to-peer in nature. " 1.339 +"All of these systems have dropped the dependency on a single central server, " 1.340 +"and allow people to distribute their revision control data to where it's " 1.341 +"actually needed. Collaboration over the Internet has moved from constrained " 1.342 +"by technology to a matter of choice and consensus. Modern tools can operate " 1.343 +"offline indefinitely and autonomously, with a network connection only needed " 1.344 +"when syncing changes with another repository." 1.345 +msgstr "" 1.346 + 1.347 +#. type: Content of: <book><preface><sect1><title> 1.348 +#: ../en/ch00-preface.xml:218 1.349 +msgid "A few of the advantages of distributed revision control" 1.350 +msgstr "分布版本控制的优点" 1.351 + 1.352 +#. type: Content of: <book><preface><sect1><para> 1.353 +#: ../en/ch00-preface.xml:221 1.354 +msgid "" 1.355 +"Even though distributed revision control tools have for several years been as " 1.356 +"robust and usable as their previous-generation counterparts, people using " 1.357 +"older tools have not yet necessarily woken up to their advantages. There are " 1.358 +"a number of ways in which distributed tools shine relative to centralised " 1.359 +"ones." 1.360 +msgstr "" 1.361 + 1.362 +#. type: Content of: <book><preface><sect1><para> 1.363 +#: ../en/ch00-preface.xml:228 1.364 +msgid "" 1.365 +"For an individual developer, distributed tools are almost always much faster " 1.366 +"than centralised tools. This is for a simple reason: a centralised tool " 1.367 +"needs to talk over the network for many common operations, because most " 1.368 +"metadata is stored in a single copy on the central server. A distributed " 1.369 +"tool stores all of its metadata locally. All else being equal, talking over " 1.370 +"the network adds overhead to a centralised tool. Don't underestimate the " 1.371 +"value of a snappy, responsive tool: you're going to spend a lot of time " 1.372 +"interacting with your revision control software." 1.373 +msgstr "" 1.374 + 1.375 +#. type: Content of: <book><preface><sect1><para> 1.376 +#: ../en/ch00-preface.xml:239 1.377 +msgid "" 1.378 +"Distributed tools are indifferent to the vagaries of your server " 1.379 +"infrastructure, again because they replicate metadata to so many locations. " 1.380 +"If you use a centralised system and your server catches fire, you'd better " 1.381 +"hope that your backup media are reliable, and that your last backup was " 1.382 +"recent and actually worked. With a distributed tool, you have many backups " 1.383 +"available on every contributor's computer." 1.384 +msgstr "" 1.385 + 1.386 +#. type: Content of: <book><preface><sect1><para> 1.387 +#: ../en/ch00-preface.xml:247 1.388 +msgid "" 1.389 +"The reliability of your network will affect distributed tools far less than " 1.390 +"it will centralised tools. You can't even use a centralised tool without a " 1.391 +"network connection, except for a few highly constrained commands. With a " 1.392 +"distributed tool, if your network connection goes down while you're working, " 1.393 +"you may not even notice. The only thing you won't be able to do is talk to " 1.394 +"repositories on other computers, something that is relatively rare compared " 1.395 +"with local operations. If you have a far-flung team of collaborators, this " 1.396 +"may be significant." 1.397 +msgstr "" 1.398 + 1.399 +#. type: Content of: <book><preface><sect1><sect2><title> 1.400 +#: ../en/ch00-preface.xml:258 1.401 +msgid "Advantages for open source projects" 1.402 +msgstr "开源项目的优点" 1.403 + 1.404 +#. type: Content of: <book><preface><sect1><sect2><para> 1.405 +#: ../en/ch00-preface.xml:260 1.406 +msgid "" 1.407 +"If you take a shine to an open source project and decide that you would like " 1.408 +"to start hacking on it, and that project uses a distributed revision control " 1.409 +"tool, you are at once a peer with the people who consider themselves the " 1.410 +"<quote>core</quote> of that project. If they publish their repositories, you " 1.411 +"can immediately copy their project history, start making changes, and record " 1.412 +"your work, using the same tools in the same ways as insiders. By contrast, " 1.413 +"with a centralised tool, you must use the software in a <quote>read only</" 1.414 +"quote> mode unless someone grants you permission to commit changes to their " 1.415 +"central server. Until then, you won't be able to record changes, and your " 1.416 +"local modifications will be at risk of corruption any time you try to update " 1.417 +"your client's view of the repository." 1.418 +msgstr "" 1.419 + 1.420 +#. type: Content of: <book><preface><sect1><sect2><sect3><title> 1.421 +#: ../en/ch00-preface.xml:276 1.422 +msgid "The forking non-problem" 1.423 +msgstr "" 1.424 + 1.425 +#. type: Content of: <book><preface><sect1><sect2><sect3><para> 1.426 +#: ../en/ch00-preface.xml:278 1.427 +msgid "" 1.428 +"It has been suggested that distributed revision control tools pose some sort " 1.429 +"of risk to open source projects because they make it easy to <quote>fork</" 1.430 +"quote> the development of a project. A fork happens when there are " 1.431 +"differences in opinion or attitude between groups of developers that cause " 1.432 +"them to decide that they can't work together any longer. Each side takes a " 1.433 +"more or less complete copy of the project's source code, and goes off in its " 1.434 +"own direction." 1.435 +msgstr "" 1.436 + 1.437 +#. type: Content of: <book><preface><sect1><sect2><sect3><para> 1.438 +#: ../en/ch00-preface.xml:288 1.439 +msgid "" 1.440 +"Sometimes the camps in a fork decide to reconcile their differences. With a " 1.441 +"centralised revision control system, the <emphasis>technical</emphasis> " 1.442 +"process of reconciliation is painful, and has to be performed largely by " 1.443 +"hand. You have to decide whose revision history is going to <quote>win</" 1.444 +"quote>, and graft the other team's changes into the tree somehow. This " 1.445 +"usually loses some or all of one side's revision history." 1.446 +msgstr "" 1.447 + 1.448 +#. type: Content of: <book><preface><sect1><sect2><sect3><para> 1.449 +#: ../en/ch00-preface.xml:297 1.450 +msgid "" 1.451 +"What distributed tools do with respect to forking is they make forking the " 1.452 +"<emphasis>only</emphasis> way to develop a project. Every single change that " 1.453 +"you make is potentially a fork point. The great strength of this approach is " 1.454 +"that a distributed revision control tool has to be really good at " 1.455 +"<emphasis>merging</emphasis> forks, because forks are absolutely fundamental: " 1.456 +"they happen all the time." 1.457 +msgstr "" 1.458 + 1.459 +#. type: Content of: <book><preface><sect1><sect2><sect3><para> 1.460 +#: ../en/ch00-preface.xml:306 1.461 +msgid "" 1.462 +"If every piece of work that everybody does, all the time, is framed in terms " 1.463 +"of forking and merging, then what the open source world refers to as a " 1.464 +"<quote>fork</quote> becomes <emphasis>purely</emphasis> a social issue. If " 1.465 +"anything, distributed tools <emphasis>lower</emphasis> the likelihood of a " 1.466 +"fork:" 1.467 +msgstr "" 1.468 + 1.469 +#. type: Content of: <book><preface><sect1><sect2><sect3><itemizedlist><listitem><para> 1.470 +#: ../en/ch00-preface.xml:313 1.471 +msgid "" 1.472 +"They eliminate the social distinction that centralised tools impose: that " 1.473 +"between insiders (people with commit access) and outsiders (people without)." 1.474 +msgstr "" 1.475 + 1.476 +#. type: Content of: <book><preface><sect1><sect2><sect3><itemizedlist><listitem><para> 1.477 +#: ../en/ch00-preface.xml:317 1.478 +msgid "" 1.479 +"They make it easier to reconcile after a social fork, because all that's " 1.480 +"involved from the perspective of the revision control software is just " 1.481 +"another merge." 1.482 +msgstr "" 1.483 + 1.484 +#. type: Content of: <book><preface><sect1><sect2><sect3><para> 1.485 +#: ../en/ch00-preface.xml:322 1.486 +msgid "" 1.487 +"Some people resist distributed tools because they want to retain tight " 1.488 +"control over their projects, and they believe that centralised tools give " 1.489 +"them this control. However, if you're of this belief, and you publish your " 1.490 +"CVS or Subversion repositories publicly, there are plenty of tools available " 1.491 +"that can pull out your entire project's history (albeit slowly) and recreate " 1.492 +"it somewhere that you don't control. So while your control in this case is " 1.493 +"illusory, you are forgoing the ability to fluidly collaborate with whatever " 1.494 +"people feel compelled to mirror and fork your history." 1.495 +msgstr "" 1.496 + 1.497 +#. type: Content of: <book><preface><sect1><sect2><title> 1.498 +#: ../en/ch00-preface.xml:337 1.499 +msgid "Advantages for commercial projects" 1.500 +msgstr "商业项目的优点" 1.501 + 1.502 +#. type: Content of: <book><preface><sect1><sect2><para> 1.503 +#: ../en/ch00-preface.xml:339 1.504 +msgid "" 1.505 +"Many commercial projects are undertaken by teams that are scattered across " 1.506 +"the globe. Contributors who are far from a central server will see slower " 1.507 +"command execution and perhaps less reliability. Commercial revision control " 1.508 +"systems attempt to ameliorate these problems with remote-site replication add-" 1.509 +"ons that are typically expensive to buy and cantankerous to administer. A " 1.510 +"distributed system doesn't suffer from these problems in the first place. " 1.511 +"Better yet, you can easily set up multiple authoritative servers, say one per " 1.512 +"site, so that there's no redundant communication between repositories over " 1.513 +"expensive long-haul network links." 1.514 +msgstr "" 1.515 + 1.516 +#. type: Content of: <book><preface><sect1><sect2><para> 1.517 +#: ../en/ch00-preface.xml:351 1.518 +msgid "" 1.519 +"Centralised revision control systems tend to have relatively low " 1.520 +"scalability. It's not unusual for an expensive centralised system to fall " 1.521 +"over under the combined load of just a few dozen concurrent users. Once " 1.522 +"again, the typical response tends to be an expensive and clunky replication " 1.523 +"facility. Since the load on a central server---if you have one at all---is " 1.524 +"many times lower with a distributed tool (because all of the data is " 1.525 +"replicated everywhere), a single cheap server can handle the needs of a much " 1.526 +"larger team, and replication to balance load becomes a simple matter of " 1.527 +"scripting." 1.528 +msgstr "" 1.529 + 1.530 +#. type: Content of: <book><preface><sect1><sect2><para> 1.531 +#: ../en/ch00-preface.xml:363 1.532 +msgid "" 1.533 +"If you have an employee in the field, troubleshooting a problem at a " 1.534 +"customer's site, they'll benefit from distributed revision control. The tool " 1.535 +"will let them generate custom builds, try different fixes in isolation from " 1.536 +"each other, and search efficiently through history for the sources of bugs " 1.537 +"and regressions in the customer's environment, all without needing to connect " 1.538 +"to your company's network." 1.539 +msgstr "" 1.540 + 1.541 +#. type: Content of: <book><preface><sect1><title> 1.542 +#: ../en/ch00-preface.xml:374 1.543 +msgid "Why choose Mercurial?" 1.544 +msgstr "为什么选择 Mercurial?" 1.545 + 1.546 +#. type: Content of: <book><preface><sect1><para> 1.547 +#: ../en/ch00-preface.xml:376 1.548 +msgid "" 1.549 +"Mercurial has a unique set of properties that make it a particularly good " 1.550 +"choice as a revision control system." 1.551 +msgstr "" 1.552 + 1.553 +#. type: Content of: <book><preface><sect1><itemizedlist><listitem><para> 1.554 +#: ../en/ch00-preface.xml:379 1.555 +msgid "It is easy to learn and use." 1.556 +msgstr "" 1.557 + 1.558 +#. type: Content of: <book><preface><sect1><itemizedlist><listitem><para> 1.559 +#: ../en/ch00-preface.xml:380 1.560 +msgid "It is lightweight." 1.561 +msgstr "" 1.562 + 1.563 +#. type: Content of: <book><preface><sect1><itemizedlist><listitem><para> 1.564 +#: ../en/ch00-preface.xml:381 1.565 +msgid "It scales excellently." 1.566 +msgstr "" 1.567 + 1.568 +#. type: Content of: <book><preface><sect1><itemizedlist><listitem><para> 1.569 +#: ../en/ch00-preface.xml:382 1.570 +msgid "It is easy to customise." 1.571 +msgstr "" 1.572 + 1.573 +#. type: Content of: <book><preface><sect1><para> 1.574 +#: ../en/ch00-preface.xml:385 1.575 +msgid "" 1.576 +"If you are at all familiar with revision control systems, you should be able " 1.577 +"to get up and running with Mercurial in less than five minutes. Even if not, " 1.578 +"it will take no more than a few minutes longer. Mercurial's command and " 1.579 +"feature sets are generally uniform and consistent, so you can keep track of a " 1.580 +"few general rules instead of a host of exceptions." 1.581 +msgstr "" 1.582 + 1.583 +#. type: Content of: <book><preface><sect1><para> 1.584 +#: ../en/ch00-preface.xml:392 1.585 +msgid "" 1.586 +"On a small project, you can start working with Mercurial in moments. Creating " 1.587 +"new changes and branches; transferring changes around (whether locally or " 1.588 +"over a network); and history and status operations are all fast. Mercurial " 1.589 +"attempts to stay nimble and largely out of your way by combining low " 1.590 +"cognitive overhead with blazingly fast operations." 1.591 +msgstr "" 1.592 + 1.593 +#. type: Content of: <book><preface><sect1><para> 1.594 +#: ../en/ch00-preface.xml:399 1.595 +msgid "" 1.596 +"The usefulness of Mercurial is not limited to small projects: it is used by " 1.597 +"projects with hundreds to thousands of contributors, each containing tens of " 1.598 +"thousands of files and hundreds of megabytes of source code." 1.599 +msgstr "" 1.600 + 1.601 +#. type: Content of: <book><preface><sect1><para> 1.602 +#: ../en/ch00-preface.xml:404 1.603 +msgid "" 1.604 +"If the core functionality of Mercurial is not enough for you, it's easy to " 1.605 +"build on. Mercurial is well suited to scripting tasks, and its clean " 1.606 +"internals and implementation in Python make it easy to add features in the " 1.607 +"form of extensions. There are a number of popular and useful extensions " 1.608 +"already available, ranging from helping to identify bugs to improving " 1.609 +"performance." 1.610 +msgstr "" 1.611 + 1.612 +#. type: Content of: <book><preface><sect1><title> 1.613 +#: ../en/ch00-preface.xml:414 1.614 +msgid "Mercurial compared with other tools" 1.615 +msgstr "Mercurial 与其它工具的比较" 1.616 + 1.617 +#. type: Content of: <book><preface><sect1><para> 1.618 +#: ../en/ch00-preface.xml:416 1.619 +msgid "" 1.620 +"Before you read on, please understand that this section necessarily reflects " 1.621 +"my own experiences, interests, and (dare I say it) biases. I have used every " 1.622 +"one of the revision control tools listed below, in most cases for several " 1.623 +"years at a time." 1.624 +msgstr "" 1.625 + 1.626 +#. type: Content of: <book><preface><sect1><itemizedlist><listitem><para> 1.627 +#: ../en/ch00-preface.xml:424 ../en/ch00-preface.xml:635 1.628 +msgid "Subversion" 1.629 +msgstr "" 1.630 + 1.631 +#. type: Content of: <book><preface><sect1><sect2><para> 1.632 +#: ../en/ch00-preface.xml:426 1.633 +msgid "" 1.634 +"Subversion is a popular revision control tool, developed to replace CVS. It " 1.635 +"has a centralised client/server architecture." 1.636 +msgstr "" 1.637 + 1.638 +#. type: Content of: <book><preface><sect1><sect2><para> 1.639 +#: ../en/ch00-preface.xml:430 1.640 +msgid "" 1.641 +"Subversion and Mercurial have similarly named commands for performing the " 1.642 +"same operations, so if you're familiar with one, it is easy to learn to use " 1.643 +"the other. Both tools are portable to all popular operating systems." 1.644 +msgstr "" 1.645 + 1.646 +#. type: Content of: <book><preface><sect1><sect2><para> 1.647 +#: ../en/ch00-preface.xml:435 1.648 +msgid "" 1.649 +"Prior to version 1.5, Subversion had no useful support for merges. At the " 1.650 +"time of writing, its merge tracking capability is new, and known to be <ulink " 1.651 +"url=\"http://svnbook.red-bean.com/nightly/en/svn.branchmerge.advanced." 1.652 +"html#svn.branchmerge.advanced.finalword\">complicated and buggy</ulink>." 1.653 +msgstr "" 1.654 + 1.655 +#. type: Content of: <book><preface><sect1><sect2><para> 1.656 +#: ../en/ch00-preface.xml:441 1.657 +msgid "" 1.658 +"Mercurial has a substantial performance advantage over Subversion on every " 1.659 +"revision control operation I have benchmarked. I have measured its advantage " 1.660 +"as ranging from a factor of two to a factor of six when compared with " 1.661 +"Subversion 1.4.3's <emphasis>ra_local</emphasis> file store, which is the " 1.662 +"fastest access method available. In more realistic deployments involving a " 1.663 +"network-based store, Subversion will be at a substantially larger " 1.664 +"disadvantage. Because many Subversion commands must talk to the server and " 1.665 +"Subversion does not have useful replication facilities, server capacity and " 1.666 +"network bandwidth become bottlenecks for modestly large projects." 1.667 +msgstr "" 1.668 + 1.669 +#. type: Content of: <book><preface><sect1><sect2><para> 1.670 +#: ../en/ch00-preface.xml:454 1.671 +msgid "" 1.672 +"Additionally, Subversion incurs substantial storage overhead to avoid network " 1.673 +"transactions for a few common operations, such as finding modified files " 1.674 +"(<literal>status</literal>) and displaying modifications against the current " 1.675 +"revision (<literal>diff</literal>). As a result, a Subversion working copy " 1.676 +"is often the same size as, or larger than, a Mercurial repository and working " 1.677 +"directory, even though the Mercurial repository contains a complete history " 1.678 +"of the project." 1.679 +msgstr "" 1.680 + 1.681 +#. type: Content of: <book><preface><sect1><sect2><para> 1.682 +#: ../en/ch00-preface.xml:464 1.683 +msgid "" 1.684 +"Subversion is widely supported by third party tools. Mercurial currently " 1.685 +"lags considerably in this area. This gap is closing, however, and indeed " 1.686 +"some of Mercurial's GUI tools now outshine their Subversion equivalents. " 1.687 +"Like Mercurial, Subversion has an excellent user manual." 1.688 +msgstr "" 1.689 + 1.690 +#. type: Content of: <book><preface><sect1><sect2><para> 1.691 +#: ../en/ch00-preface.xml:470 1.692 +msgid "" 1.693 +"Because Subversion doesn't store revision history on the client, it is well " 1.694 +"suited to managing projects that deal with lots of large, opaque binary " 1.695 +"files. If you check in fifty revisions to an incompressible 10MB file, " 1.696 +"Subversion's client-side space usage stays constant The space used by any " 1.697 +"distributed SCM will grow rapidly in proportion to the number of revisions, " 1.698 +"because the differences between each revision are large." 1.699 +msgstr "" 1.700 + 1.701 +#. type: Content of: <book><preface><sect1><sect2><para> 1.702 +#: ../en/ch00-preface.xml:479 1.703 +msgid "" 1.704 +"In addition, it's often difficult or, more usually, impossible to merge " 1.705 +"different versions of a binary file. Subversion's ability to let a user lock " 1.706 +"a file, so that they temporarily have the exclusive right to commit changes " 1.707 +"to it, can be a significant advantage to a project where binary files are " 1.708 +"widely used." 1.709 +msgstr "" 1.710 + 1.711 +#. type: Content of: <book><preface><sect1><sect2><para> 1.712 +#: ../en/ch00-preface.xml:486 1.713 +msgid "" 1.714 +"Mercurial can import revision history from a Subversion repository. It can " 1.715 +"also export revision history to a Subversion repository. This makes it easy " 1.716 +"to <quote>test the waters</quote> and use Mercurial and Subversion in " 1.717 +"parallel before deciding to switch. History conversion is incremental, so " 1.718 +"you can perform an initial conversion, then small additional conversions " 1.719 +"afterwards to bring in new changes." 1.720 +msgstr "" 1.721 + 1.722 +#. type: Content of: <book><preface><sect1><itemizedlist><listitem><para> 1.723 +#: ../en/ch00-preface.xml:498 ../en/ch00-preface.xml:637 1.724 +msgid "Git" 1.725 +msgstr "" 1.726 + 1.727 +#. type: Content of: <book><preface><sect1><sect2><para> 1.728 +#: ../en/ch00-preface.xml:500 1.729 +msgid "" 1.730 +"Git is a distributed revision control tool that was developed for managing " 1.731 +"the Linux kernel source tree. Like Mercurial, its early design was somewhat " 1.732 +"influenced by Monotone." 1.733 +msgstr "" 1.734 + 1.735 +#. type: Content of: <book><preface><sect1><sect2><para> 1.736 +#: ../en/ch00-preface.xml:505 1.737 +msgid "" 1.738 +"Git has a very large command set, with version 1.5.0 providing 139 individual " 1.739 +"commands. It has something of a reputation for being difficult to learn. " 1.740 +"Compared to Git, Mercurial has a strong focus on simplicity." 1.741 +msgstr "" 1.742 + 1.743 +#. type: Content of: <book><preface><sect1><sect2><para> 1.744 +#: ../en/ch00-preface.xml:510 1.745 +msgid "" 1.746 +"In terms of performance, Git is extremely fast. In several cases, it is " 1.747 +"faster than Mercurial, at least on Linux, while Mercurial performs better on " 1.748 +"other operations. However, on Windows, the performance and general level of " 1.749 +"support that Git provides is, at the time of writing, far behind that of " 1.750 +"Mercurial." 1.751 +msgstr "" 1.752 + 1.753 +#. type: Content of: <book><preface><sect1><sect2><para> 1.754 +#: ../en/ch00-preface.xml:517 1.755 +msgid "" 1.756 +"While a Mercurial repository needs no maintenance, a Git repository requires " 1.757 +"frequent manual <quote>repacks</quote> of its metadata. Without these, " 1.758 +"performance degrades, while space usage grows rapidly. A server that " 1.759 +"contains many Git repositories that are not rigorously and frequently " 1.760 +"repacked will become heavily disk-bound during backups, and there have been " 1.761 +"instances of daily backups taking far longer than 24 hours as a result. A " 1.762 +"freshly packed Git repository is slightly smaller than a Mercurial " 1.763 +"repository, but an unpacked repository is several orders of magnitude larger." 1.764 +msgstr "" 1.765 + 1.766 +#. type: Content of: <book><preface><sect1><sect2><para> 1.767 +#: ../en/ch00-preface.xml:528 1.768 +msgid "" 1.769 +"The core of Git is written in C. Many Git commands are implemented as shell " 1.770 +"or Perl scripts, and the quality of these scripts varies widely. I have " 1.771 +"encountered several instances where scripts charged along blindly in the " 1.772 +"presence of errors that should have been fatal." 1.773 +msgstr "" 1.774 + 1.775 +#. type: Content of: <book><preface><sect1><sect2><para> 1.776 +#: ../en/ch00-preface.xml:534 1.777 +msgid "Mercurial can import revision history from a Git repository." 1.778 +msgstr "" 1.779 + 1.780 +#. type: Content of: <book><preface><sect1><itemizedlist><listitem><para> 1.781 +#: ../en/ch00-preface.xml:540 ../en/ch00-preface.xml:636 1.782 +msgid "CVS" 1.783 +msgstr "" 1.784 + 1.785 +#. type: Content of: <book><preface><sect1><sect2><para> 1.786 +#: ../en/ch00-preface.xml:542 1.787 +msgid "" 1.788 +"CVS is probably the most widely used revision control tool in the world. Due " 1.789 +"to its age and internal untidiness, it has been only lightly maintained for " 1.790 +"many years." 1.791 +msgstr "" 1.792 + 1.793 +#. type: Content of: <book><preface><sect1><sect2><para> 1.794 +#: ../en/ch00-preface.xml:546 1.795 +msgid "" 1.796 +"It has a centralised client/server architecture. It does not group related " 1.797 +"file changes into atomic commits, making it easy for people to <quote>break " 1.798 +"the build</quote>: one person can successfully commit part of a change and " 1.799 +"then be blocked by the need for a merge, causing other people to see only a " 1.800 +"portion of the work they intended to do. This also affects how you work with " 1.801 +"project history. If you want to see all of the modifications someone made as " 1.802 +"part of a task, you will need to manually inspect the descriptions and " 1.803 +"timestamps of the changes made to each file involved (if you even know what " 1.804 +"those files were)." 1.805 +msgstr "" 1.806 + 1.807 +#. type: Content of: <book><preface><sect1><sect2><para> 1.808 +#: ../en/ch00-preface.xml:558 1.809 +msgid "" 1.810 +"CVS has a muddled notion of tags and branches that I will not attempt to even " 1.811 +"describe. It does not support renaming of files or directories well, making " 1.812 +"it easy to corrupt a repository. It has almost no internal consistency " 1.813 +"checking capabilities, so it is usually not even possible to tell whether or " 1.814 +"how a repository is corrupt. I would not recommend CVS for any project, " 1.815 +"existing or new." 1.816 +msgstr "" 1.817 + 1.818 +#. type: Content of: <book><preface><sect1><sect2><para> 1.819 +#: ../en/ch00-preface.xml:566 1.820 +msgid "" 1.821 +"Mercurial can import CVS revision history. However, there are a few caveats " 1.822 +"that apply; these are true of every other revision control tool's CVS " 1.823 +"importer, too. Due to CVS's lack of atomic changes and unversioned " 1.824 +"filesystem hierarchy, it is not possible to reconstruct CVS history " 1.825 +"completely accurately; some guesswork is involved, and renames will usually " 1.826 +"not show up. Because a lot of advanced CVS administration has to be done by " 1.827 +"hand and is hence error-prone, it's common for CVS importers to run into " 1.828 +"multiple problems with corrupted repositories (completely bogus revision " 1.829 +"timestamps and files that have remained locked for over a decade are just two " 1.830 +"of the less interesting problems I can recall from personal experience)." 1.831 +msgstr "" 1.832 + 1.833 +#. type: Content of: <book><preface><sect1><sect2><para> 1.834 +#: ../en/ch00-preface.xml:580 1.835 +msgid "Mercurial can import revision history from a CVS repository." 1.836 +msgstr "" 1.837 + 1.838 +#. type: Content of: <book><preface><sect1><sect2><title> 1.839 +#: ../en/ch00-preface.xml:586 1.840 +msgid "Commercial tools" 1.841 +msgstr "商业工具" 1.842 + 1.843 +#. type: Content of: <book><preface><sect1><sect2><para> 1.844 +#: ../en/ch00-preface.xml:588 1.845 +msgid "" 1.846 +"Perforce has a centralised client/server architecture, with no client-side " 1.847 +"caching of any data. Unlike modern revision control tools, Perforce requires " 1.848 +"that a user run a command to inform the server about every file they intend " 1.849 +"to edit." 1.850 +msgstr "" 1.851 + 1.852 +#. type: Content of: <book><preface><sect1><sect2><para> 1.853 +#: ../en/ch00-preface.xml:594 1.854 +msgid "" 1.855 +"The performance of Perforce is quite good for small teams, but it falls off " 1.856 +"rapidly as the number of users grows beyond a few dozen. Modestly large " 1.857 +"Perforce installations require the deployment of proxies to cope with the " 1.858 +"load their users generate." 1.859 +msgstr "" 1.860 + 1.861 +#. type: Content of: <book><preface><sect1><sect2><title> 1.862 +#: ../en/ch00-preface.xml:603 1.863 +msgid "Choosing a revision control tool" 1.864 +msgstr "选择版本控制工具" 1.865 + 1.866 +#. type: Content of: <book><preface><sect1><sect2><para> 1.867 +#: ../en/ch00-preface.xml:605 1.868 +msgid "" 1.869 +"With the exception of CVS, all of the tools listed above have unique " 1.870 +"strengths that suit them to particular styles of work. There is no single " 1.871 +"revision control tool that is best in all situations." 1.872 +msgstr "" 1.873 + 1.874 +#. type: Content of: <book><preface><sect1><sect2><para> 1.875 +#: ../en/ch00-preface.xml:610 1.876 +msgid "" 1.877 +"As an example, Subversion is a good choice for working with frequently edited " 1.878 +"binary files, due to its centralised nature and support for file locking." 1.879 +msgstr "" 1.880 + 1.881 +#. type: Content of: <book><preface><sect1><sect2><para> 1.882 +#: ../en/ch00-preface.xml:614 1.883 +msgid "" 1.884 +"I personally find Mercurial's properties of simplicity, performance, and good " 1.885 +"merge support to be a compelling combination that has served me well for " 1.886 +"several years." 1.887 +msgstr "" 1.888 + 1.889 +#. type: Content of: <book><preface><sect1><title> 1.890 +#: ../en/ch00-preface.xml:622 1.891 +msgid "Switching from another tool to Mercurial" 1.892 +msgstr "从其它工具切换到 Mercurial" 1.893 + 1.894 +#. type: Content of: <book><preface><sect1><para> 1.895 +#: ../en/ch00-preface.xml:624 1.896 +msgid "" 1.897 +"Mercurial is bundled with an extension named <literal role=\"hg-ext" 1.898 +"\">convert</literal>, which can incrementally import revision history from " 1.899 +"several other revision control tools. By <quote>incremental</quote>, I mean " 1.900 +"that you can convert all of a project's history to date in one go, then rerun " 1.901 +"the conversion later to obtain new changes that happened after the initial " 1.902 +"conversion." 1.903 +msgstr "" 1.904 + 1.905 +#. type: Content of: <book><preface><sect1><para> 1.906 +#: ../en/ch00-preface.xml:632 1.907 +msgid "" 1.908 +"The revision control tools supported by <literal role=\"hg-ext\">convert</" 1.909 +"literal> are as follows:" 1.910 +msgstr "<literal role=\"hg-ext\">convert</literal> 支持的版本控制工具有:" 1.911 + 1.912 +#. type: Content of: <book><preface><sect1><itemizedlist><listitem><para> 1.913 +#: ../en/ch00-preface.xml:638 1.914 +msgid "Darcs" 1.915 +msgstr "" 1.916 + 1.917 +#. type: Content of: <book><preface><sect1><para> 1.918 +#: ../en/ch00-preface.xml:640 1.919 +msgid "" 1.920 +"In addition, <literal role=\"hg-ext\">convert</literal> can export changes " 1.921 +"from Mercurial to Subversion. This makes it possible to try Subversion and " 1.922 +"Mercurial in parallel before committing to a switchover, without risking the " 1.923 +"loss of any work." 1.924 +msgstr "" 1.925 + 1.926 +#. type: Content of: <book><preface><sect1><para> 1.927 +#: ../en/ch00-preface.xml:646 1.928 +msgid "" 1.929 +"The <command role=\"hg-ext-convert\">convert</command> command is easy to " 1.930 +"use. Simply point it at the path or URL of the source repository, optionally " 1.931 +"give it the name of the destination repository, and it will start working. " 1.932 +"After the initial conversion, just run the same command again to import new " 1.933 +"changes." 1.934 +msgstr "" 1.935 + 1.936 +#. type: Content of: <book><preface><sect1><title> 1.937 +#: ../en/ch00-preface.xml:655 1.938 +msgid "A short history of revision control" 1.939 +msgstr "版本控制简史" 1.940 + 1.941 +#. type: Content of: <book><preface><sect1><para> 1.942 +#: ../en/ch00-preface.xml:657 1.943 +msgid "" 1.944 +"The best known of the old-time revision control tools is SCCS (Source Code " 1.945 +"Control System), which Marc Rochkind wrote at Bell Labs, in the early 1970s. " 1.946 +"SCCS operated on individual files, and required every person working on a " 1.947 +"project to have access to a shared workspace on a single system. Only one " 1.948 +"person could modify a file at any time; arbitration for access to files was " 1.949 +"via locks. It was common for people to lock files, and later forget to " 1.950 +"unlock them, preventing anyone else from modifying those files without the " 1.951 +"help of an administrator." 1.952 +msgstr "" 1.953 + 1.954 +#. type: Content of: <book><preface><sect1><para> 1.955 +#: ../en/ch00-preface.xml:668 1.956 +msgid "" 1.957 +"Walter Tichy developed a free alternative to SCCS in the early 1980s; he " 1.958 +"called his program RCS (Revision Control System). Like SCCS, RCS required " 1.959 +"developers to work in a single shared workspace, and to lock files to prevent " 1.960 +"multiple people from modifying them simultaneously." 1.961 +msgstr "" 1.962 + 1.963 +#. type: Content of: <book><preface><sect1><para> 1.964 +#: ../en/ch00-preface.xml:674 1.965 +msgid "" 1.966 +"Later in the 1980s, Dick Grune used RCS as a building block for a set of " 1.967 +"shell scripts he initially called cmt, but then renamed to CVS (Concurrent " 1.968 +"Versions System). The big innovation of CVS was that it let developers work " 1.969 +"simultaneously and somewhat independently in their own personal workspaces. " 1.970 +"The personal workspaces prevented developers from stepping on each other's " 1.971 +"toes all the time, as was common with SCCS and RCS. Each developer had a copy " 1.972 +"of every project file, and could modify their copies independently. They had " 1.973 +"to merge their edits prior to committing changes to the central repository." 1.974 +msgstr "" 1.975 + 1.976 +#. type: Content of: <book><preface><sect1><para> 1.977 +#: ../en/ch00-preface.xml:685 1.978 +msgid "" 1.979 +"Brian Berliner took Grune's original scripts and rewrote them in C, releasing " 1.980 +"in 1989 the code that has since developed into the modern version of CVS. " 1.981 +"CVS subsequently acquired the ability to operate over a network connection, " 1.982 +"giving it a client/server architecture. CVS's architecture is centralised; " 1.983 +"only the server has a copy of the history of the project. Client workspaces " 1.984 +"just contain copies of recent versions of the project's files, and a little " 1.985 +"metadata to tell them where the server is. CVS has been enormously " 1.986 +"successful; it is probably the world's most widely used revision control " 1.987 +"system." 1.988 +msgstr "" 1.989 + 1.990 +#. type: Content of: <book><preface><sect1><para> 1.991 +#: ../en/ch00-preface.xml:696 1.992 +msgid "" 1.993 +"In the early 1990s, Sun Microsystems developed an early distributed revision " 1.994 +"control system, called TeamWare. A TeamWare workspace contains a complete " 1.995 +"copy of the project's history. TeamWare has no notion of a central " 1.996 +"repository. (CVS relied upon RCS for its history storage; TeamWare used " 1.997 +"SCCS.)" 1.998 +msgstr "" 1.999 + 1.1000 +#. type: Content of: <book><preface><sect1><para> 1.1001 +#: ../en/ch00-preface.xml:703 1.1002 +msgid "" 1.1003 +"As the 1990s progressed, awareness grew of a number of problems with CVS. It " 1.1004 +"records simultaneous changes to multiple files individually, instead of " 1.1005 +"grouping them together as a single logically atomic operation. It does not " 1.1006 +"manage its file hierarchy well; it is easy to make a mess of a repository by " 1.1007 +"renaming files and directories. Worse, its source code is difficult to read " 1.1008 +"and maintain, which made the <quote>pain level</quote> of fixing these " 1.1009 +"architectural problems prohibitive." 1.1010 +msgstr "" 1.1011 + 1.1012 +#. type: Content of: <book><preface><sect1><para> 1.1013 +#: ../en/ch00-preface.xml:713 1.1014 +msgid "" 1.1015 +"In 2001, Jim Blandy and Karl Fogel, two developers who had worked on CVS, " 1.1016 +"started a project to replace it with a tool that would have a better " 1.1017 +"architecture and cleaner code. The result, Subversion, does not stray from " 1.1018 +"CVS's centralised client/server model, but it adds multi-file atomic commits, " 1.1019 +"better namespace management, and a number of other features that make it a " 1.1020 +"generally better tool than CVS. Since its initial release, it has rapidly " 1.1021 +"grown in popularity." 1.1022 +msgstr "" 1.1023 + 1.1024 +#. type: Content of: <book><preface><sect1><para> 1.1025 +#: ../en/ch00-preface.xml:722 1.1026 +msgid "" 1.1027 +"More or less simultaneously, Graydon Hoare began working on an ambitious " 1.1028 +"distributed revision control system that he named Monotone. While Monotone " 1.1029 +"addresses many of CVS's design flaws and has a peer-to-peer architecture, it " 1.1030 +"goes beyond earlier (and subsequent) revision control tools in a number of " 1.1031 +"innovative ways. It uses cryptographic hashes as identifiers, and has an " 1.1032 +"integral notion of <quote>trust</quote> for code from different sources." 1.1033 +msgstr "" 1.1034 + 1.1035 +#. type: Content of: <book><preface><sect1><para> 1.1036 +#: ../en/ch00-preface.xml:731 1.1037 +msgid "" 1.1038 +"Mercurial began life in 2005. While a few aspects of its design are " 1.1039 +"influenced by Monotone, Mercurial focuses on ease of use, high performance, " 1.1040 +"and scalability to very large projects." 1.1041 +msgstr "" 1.1042 + 1.1043 +#. type: Content of: <book><preface><sect1><title> 1.1044 +#: ../en/ch00-preface.xml:739 1.1045 +msgid "Colophon&emdash;this book is Free" 1.1046 +msgstr "后记&emdash;本书是自由的!" 1.1047 + 1.1048 +#. type: Content of: <book><preface><sect1><para> 1.1049 +#: ../en/ch00-preface.xml:741 1.1050 +msgid "" 1.1051 +"This book is licensed under the Open Publication License, and is produced " 1.1052 +"entirely using Free Software tools. It is typeset with DocBook XML. " 1.1053 +"Illustrations are drawn and rendered with <ulink url=\"http://www.inkscape." 1.1054 +"org/\">Inkscape</ulink>." 1.1055 +msgstr "" 1.1056 + 1.1057 +#. type: Content of: <book><preface><sect1><para> 1.1058 +#: ../en/ch00-preface.xml:746 1.1059 +msgid "" 1.1060 +"The complete source code for this book is published as a Mercurial " 1.1061 +"repository, at <ulink url=\"http://hg.serpentine.com/mercurial/book\">http://" 1.1062 +"hg.serpentine.com/mercurial/book</ulink>." 1.1063 +msgstr "" 1.1064 + 1.1065 #. type: Content of: <book><chapter><title> 1.1066 #: ../en/ch01-tour-basic.xml:5 1.1067 msgid "A tour of Mercurial: the basics" 1.1068 @@ -6639,12 +7671,11 @@ 1.1069 1.1070 #. type: Content of: <book><chapter><sect1><sect2><sect3><title> 1.1071 #: ../en/ch05-collab.xml:1405 1.1072 -#, fuzzy 1.1073 msgid "" 1.1074 "Choosing the right <filename role=\"special\">~/.hgrc</filename> file to add " 1.1075 "<literal role=\"rc-web\">web</literal> items to" 1.1076 msgstr "" 1.1077 -"选择正确的 <filename role=\"special\"> /.hgrc</filename> 文件增加到 <literal " 1.1078 +"选择正确的 <filename role=\"special\"> ~/.hgrc</filename> 文件增加到 <literal " 1.1079 "role=\"rc-web\">web</literal> 条目" 1.1080 1.1081 #. type: Content of: <book><chapter><sect1><sect2><sect3><para> 1.1082 @@ -10391,14 +11422,11 @@ 1.1083 1.1084 #. type: Content of: <book><chapter><sect1><sect2><sect3><para> 1.1085 #: ../en/ch09-hook.xml:897 1.1086 -#, fuzzy 1.1087 msgid "" 1.1088 "You should configure this hook in your server's <filename role=\"special\">~/." 1.1089 "hgrc</filename> as an <literal role=\"hook\">incoming</literal> hook, for " 1.1090 "example as follows:" 1.1091 msgstr "" 1.1092 -"选择正确的 <filename role=\"special\"> /.hgrc</filename> 文件增加到 <literal " 1.1093 -"role=\"rc-web\">web</literal> 条目" 1.1094 1.1095 #. type: Content of: <book><chapter><sect1><sect2><sect3><para> 1.1096 #: ../en/ch09-hook.xml:905 1.1097 @@ -15638,60 +16666,3 @@ 1.1098 "the number of lines affected, and a histogram showing how much each file is " 1.1099 "modified. This gives readers a qualitative glance at how complex a patch is." 1.1100 msgstr "" 1.1101 - 1.1102 -#~ msgid "Introduction" 1.1103 -#~ msgstr "简介" 1.1104 - 1.1105 -#~ msgid "About revision control" 1.1106 -#~ msgstr "关于版本控制" 1.1107 - 1.1108 -#~ msgid "Why use revision control?" 1.1109 -#~ msgstr "为什么使用版本控制?" 1.1110 - 1.1111 -#~ msgid "The many names of revision control" 1.1112 -#~ msgstr "版本控制的别名" 1.1113 - 1.1114 -#~ msgid "Revision control (RCS)" 1.1115 -#~ msgstr "版本控制(RCS)" 1.1116 - 1.1117 -#~ msgid "Software configuration management (SCM), or configuration management" 1.1118 -#~ msgstr "软件配置管理(SCM),或配置管理" 1.1119 - 1.1120 -#~ msgid "Source code management" 1.1121 -#~ msgstr "源代码管理" 1.1122 - 1.1123 -#~ msgid "Source code control, or source control" 1.1124 -#~ msgstr "源代码控制,或源控制" 1.1125 - 1.1126 -#~ msgid "Version control (VCS)" 1.1127 -#~ msgstr "版本控制(VCS)" 1.1128 - 1.1129 -#~ msgid "A short history of revision control" 1.1130 -#~ msgstr "版本控制简史" 1.1131 - 1.1132 -#~ msgid "Trends in revision control" 1.1133 -#~ msgstr "版本控制的发展趋势" 1.1134 - 1.1135 -#~ msgid "A few of the advantages of distributed revision control" 1.1136 -#~ msgstr "分布版本控制的优点" 1.1137 - 1.1138 -#~ msgid "Advantages for open source projects" 1.1139 -#~ msgstr "开源项目的优点" 1.1140 - 1.1141 -#~ msgid "Advantages for commercial projects" 1.1142 -#~ msgstr "商业项目的优点" 1.1143 - 1.1144 -#~ msgid "Why choose Mercurial?" 1.1145 -#~ msgstr "为什么选择 Mercurial?" 1.1146 - 1.1147 -#~ msgid "Mercurial compared with other tools" 1.1148 -#~ msgstr "Mercurial 与其它工具的比较" 1.1149 - 1.1150 -#~ msgid "Commercial tools" 1.1151 -#~ msgstr "商业工具" 1.1152 - 1.1153 -#~ msgid "Choosing a revision control tool" 1.1154 -#~ msgstr "选择版本控制工具" 1.1155 - 1.1156 -#~ msgid "Switching from another tool to Mercurial" 1.1157 -#~ msgstr "从其它工具切换到 Mercurial"