Kenneth Lo avatar Kenneth Lo committed 33fe66c Draft

[zh-TW] Translated Chapter 1.

Comments (0)

Files changed (1)

 # This file is distributed under the same license as the hgbook.
 #
 # Translators:
-# Kenneth Lo (closer.tw@gmail.com)
 #
 # Check translation:
 # msgfmt --statistics -c -o zh-TW.mo zh-TW.po
 # working copy      工作複本
 # identifiers	    識別碼
 # ...
+# Kenneth Lo <closer.tw@gmail.com>, 2011.
 #
 msgid ""
 msgstr ""
 "Project-Id-Version: hgbook 1.2\n"
 "POT-Creation-Date: 2011-11-01 20:40+0800\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"PO-Revision-Date: 2011-11-04 18:44+0800\n"
 "Last-Translator: Kenneth Lo <closer.tw@gmail.com>\n"
-"Language-Team: Traditional Chinese <closer.tw@gmail.com>\n"
+"Language-Team: 漢語 <closer.tw@gmail.com>\n"
 "Language: zh_TW\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
 
 #. type: Content of: <book><title>
 #: ../en/00book.xml:42
 #. type: Content of: <book><chapter><title>
 #: ../en/ch01-intro.xml:5
 msgid "How did we get here?"
-msgstr ""
+msgstr "這本書的意義何在?"
 
 #. type: Content of: <book><chapter><sect1><title>
 #: ../en/ch01-intro.xml:8
 msgid "Why revision control? Why Mercurial?"
-msgstr ""
+msgstr "為什麼要做版本控制?為什麼要用 Mercurial?"
 
 #. type: Content of: <book><chapter><sect1><para>
 #: ../en/ch01-intro.xml:10
 "hand: every time you modify a file, save it under a new name that contains a "
 "number, each one higher than the number of the preceding version."
 msgstr ""
+"「版本控制」指的是:管理某段訊息的各個版本的過程。舉例來說,許多人可能隨手都會"
+"這樣做最簡單的版本控制:修改一個檔案的內容,然後每次要存檔的時候,都在檔名中加"
+"上流水號,每修改一次就加一,代表它的版號。"
 
 #. type: Content of: <book><chapter><sect1><para>
 #: ../en/ch01-intro.xml:16
 "modern revision control tools have no problem coping with thousands of people "
 "working together on projects that consist of hundreds of thousands of files."
 msgstr ""
+"然而,若是用這種純手工的方式管理,就算要管理的檔案只有一個,也是很容易出錯的。"
+"因此,用來輔助自動管理的軟體,很早就出現了。最早的自動化版本控制工具是針對「單"
+"一使用者,管理單一檔案」這樣的情境來設計的。經過了數十年的發展,版本控制工具的"
+"功能也有長足的進步。現在,這些工具可以同時管理很多的檔案,同時也讓很多的人能共"
+"同合作。目前最好的版本控制工具可以讓數千人同時修改有數萬個檔案的專案工作,不會"
+"發生任何問題。"
 
 #. type: Content of: <book><chapter><sect1><para>
 #: ../en/ch01-intro.xml:27
 "this new field has grown due to people's willingness to explore ill-charted "
 "territory."
 msgstr ""
+"「分散式版本控制」是最近這幾年才出現的名詞。由於人們勇於探索未知的領域,這個新"
+"技術已經發展得相當成熟了。"
 
 #. type: Content of: <book><chapter><sect1><para>
 #: ../en/ch01-intro.xml:31
 "yet it scales to the demands of real, challenging environments where many "
 "other revision control tools buckle."
 msgstr ""
+"我之所以寫這本關於「分散式版本控制」的書,是因為我相信這是個動要的主題,應該要"
+"有一本指南。我選擇了 Mercurial,是因為它是這個領域中最容易學習的,同時也能面對"
+"實際的應用中,充滿挑戰的環境(有些版本控制工具就缺乏也這樣的能耐)。"
 
 #. type: Content of: <book><chapter><sect1><sect2><title>
 #: ../en/ch01-intro.xml:39
 msgid "Why use revision control?"
-msgstr ""
+msgstr "為什麼要使用版本控制工具?"
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
 #: ../en/ch01-intro.xml:41
 "There are a number of reasons why you or your team might want to use an "
 "automated revision control tool for a project."
 msgstr ""
+"為什麼你(或是你的團隊)會想在專案中使用自動化的版本控制工具呢?可能有下列的理"
+"由:"
 
 #. type: Content of: <book><chapter><sect1><sect2><itemizedlist><listitem><para>
 #: ../en/ch01-intro.xml:46
 "<emphasis>why</emphasis> they made it; <emphasis>when</emphasis> they made "
 "it; and <emphasis>what</emphasis> the change was."
 msgstr ""
+"它能夠幫你記錄專案的修改歷程及演進過程,不用自己手動記錄。每當我們修改其中的內"
+"容時,我們必須要記錄:是<emphasis>誰</emphasis>修改的?<emphasis>為什麼</"
+"emphasis>要修改?是<emphasis>什麼時候</emphasis>改的?修改了<emphasis>哪些</"
+"emphasis>內容?"
 
 #. type: Content of: <book><chapter><sect1><sect2><itemizedlist><listitem><para>
 #: ../en/ch01-intro.xml:53
 "simultaneously make potentially incompatible changes, the software will help "
 "you to identify and resolve those conflicts."
 msgstr ""
+"當許多人一起工作的時候,版本控制軟體讓團隊合作更容易。比方說:團隊成員們常會同"
+"時進行可能會互相衝突的修改。這樣的軟體可以幫助團隊發現、並解決衝突的地方。"
 
 #. type: Content of: <book><chapter><sect1><sect2><itemizedlist><listitem><para>
 #: ../en/ch01-intro.xml:59
 "will even help you to efficiently figure out exactly when a problem was "
 "introduced (see <xref linkend=\"sec:undo:bisect\"/> for details)."
 msgstr ""
+"它能幫助你修復錯誤。若是你做了個修改,但測試的時候發現這不可行,你可以把一個"
+"(或多個)檔案恢復到任何一個之前記錄的版本。事實上,一套<emphasis>真的</"
+"emphasis>夠好的版本控制工具甚至可以幫你很快地找到問題是什麼時候發生的(詳細說"
+"明請參閱<xref linkend=\"sec:undo:bisect\"/>)。"
 
 #. type: Content of: <book><chapter><sect1><sect2><itemizedlist><listitem><para>
 #: ../en/ch01-intro.xml:66
 "It will help you to work simultaneously on, and manage the drift between, "
 "multiple versions of your project."
 msgstr ""
+"當你要同時在數個版本間工作、管理它們的差異時,版本控制工具可以幫你很大的忙。"
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
 #: ../en/ch01-intro.xml:71
 "whether you're working on a project by yourself, or with a hundred other "
 "people."
 msgstr ""
+"不管你要進行的是一人專案,或者是要跟好幾百個人合作,上述的這些理由大部份都是"
+"(或至少理論上是)通用的。"
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
 #: ../en/ch01-intro.xml:76
 "emphasis>.  A revision control tool that's difficult to understand or use is "
 "going to impose a high cost."
 msgstr ""
+"在面對這兩種不同的專案等級(<quote>享受孤獨的駭客</quote>和<quote>超級龐大的團"
+"隊</quote>)時,考量要使用的版本控制工具有個關鍵的因素:它能帶給專案的"
+"<emphasis>利益</emphasis>比上它的<emphasis>成本</emphasis>。難以理解或使用的版"
+"本控制工具,帶給專案團隊的成本是很高的。"
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
 #: ../en/ch01-intro.xml:84
 "the cost of using revision control might hardly seem worth considering, since "
 "<emphasis>without</emphasis> it, failure is almost guaranteed."
 msgstr ""
+"一個 500 人的團隊,要是沒有制定使用的版本控制工具與流程,很快就會完蛋了。在這"
+"個情況下,使用版本控制工具的成本幾乎不需要考慮,因為要是<emphasis>沒有使用</"
+"emphasis>的話,我們幾乎可以保證這個專案一定會失敗。"
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
 #: ../en/ch01-intro.xml:91
 "poor place to use a revision control tool, because surely the cost of using "
 "one must be close to the overall cost of the project.  Right?"
 msgstr ""
+"換個角度說,要是這個案子只有一個人在做,看起來不太需要版本控制工具,因為使用這"
+"類工具的成本接近整個專案的成本,對不對?"
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
 #: ../en/ch01-intro.xml:96
 "performance and peer-to-peer nature let you scale painlessly to handle large "
 "projects."
 msgstr ""
+"Mercurial 最獨特的地方就是它<emphasis>同時</emphasis>支援這兩種規模的專案。只"
+"需要幾分鐘,你就可以學會基本的觀念與操作方法。因為它的學習成本很低,你可以很輕"
+"易地用在最小規模的專案中。因為它很簡單,所以不用花很大的心思去研究各種深奧的觀"
+"念、命令語法,就能完成你<emphasis>真正</emphasis>想做的事。同時,Mercurial 的"
+"高效能與「點對點」的特性,處理規模很大的專案也毫不費力。"
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
 #: ../en/ch01-intro.xml:106
 "of tools can make a huge difference to the fluidity with which you can work "
 "on a project."
 msgstr ""
+"要是專案的進行流程很糟糕,再好的版本控制工具也束手無策;但選擇好的工具可以讓專"
+"案的進行效率大大提昇。"
 
 #. type: Content of: <book><chapter><sect1><sect2><title>
 #: ../en/ch01-intro.xml:113
 msgid "The many names of revision control"
-msgstr ""
+msgstr "版本控制工具的其他名稱"
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
 #: ../en/ch01-intro.xml:115
 "many names and acronyms.  Here are a few of the more common variations you'll "
 "encounter:"
 msgstr ""
+"版本控制是個各自發展的領域,因此發展出了許多的名稱與縮寫。底下列出一些常見的名"
+"稱:"
 
 #. type: Content of: <book><chapter><sect1><sect2><itemizedlist><listitem><para>
 #: ../en/ch01-intro.xml:119
 msgid "Revision control (RCS)"
-msgstr ""
+msgstr "版本控制 (revision control, RCS)"
 
 #. type: Content of: <book><chapter><sect1><sect2><itemizedlist><listitem><para>
 #: ../en/ch01-intro.xml:120
 msgid "Software configuration management (SCM), or configuration management"
 msgstr ""
+"軟體設定管理 (software configuration management, SCM),或設定管理 "
+"(configuration management)"
 
 #. type: Content of: <book><chapter><sect1><sect2><itemizedlist><listitem><para>
 #: ../en/ch01-intro.xml:122
 msgid "Source code management"
-msgstr ""
+msgstr "程式碼管理 (source code mangement)"
 
 #. type: Content of: <book><chapter><sect1><sect2><itemizedlist><listitem><para>
 #: ../en/ch01-intro.xml:123
 msgid "Source code control, or source control"
-msgstr ""
+msgstr "程式碼控制 (source code control/source control)"
 
 #. type: Content of: <book><chapter><sect1><sect2><itemizedlist><listitem><para>
 #: ../en/ch01-intro.xml:125
 msgid "Version control (VCS)"
-msgstr ""
+msgstr "版本控制 (version control, VCS)"
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
 #: ../en/ch01-intro.xml:127
 "practice they overlap so much that there's no agreed or even useful way to "
 "tease them apart."
 msgstr ""
+"有些人會說這些名詞其實各有不同的意義;但實際上來說,他們所代表的意義多半重疊,"
+"因此沒有一個公認或有用的方式分別這些名詞的不同。"
 
 #. type: Content of: <book><chapter><sect1><title>
 #: ../en/ch01-intro.xml:135
 msgid "About the examples in this book"
-msgstr ""
+msgstr "本書中的範例"
 
 #. type: Content of: <book><chapter><sect1><para>
 #: ../en/ch01-intro.xml:137
 "book is built from its sources, all the example scripts are automatically "
 "run, and their current results compared against their expected results."
 msgstr ""
+"這本書用一種不太一樣的方式編寫範例。每個範例都是<quote>活的</quote>&emdash;每"
+"個範例都是一個 shell 腳本程式執行 Mecurial 命令後所輸出的結果。每當這本書從原"
+"始碼開始處理的時候,所有的腳本程式都會被自動執行一次,然後執行的結果就會和預期"
+"的結果比較。"
 
 #. type: Content of: <book><chapter><sect1><para>
 #: ../en/ch01-intro.xml:144
 "of Mercurial that I'm documenting, and the output of some command changes, "
 "the build fails."
 msgstr ""
+"這種方法的優點是:範例的內容永遠都是正確的。它們是用我在書的最前面所提到的 "
+"Mercurial 版本所<emphasis>實際</emphasis>執行的結果。如果我升級了 Mercurial,"
+"而且新版的 Mercurial 修改了某些命令執行的結果,那麼建立文件的過程就會失敗。"
 
 #. type: Content of: <book><chapter><sect1><para>
 #: ../en/ch01-intro.xml:151
 "resulting timestamps correspondingly spread out, my automated example scripts "
 "run many commands in one second."
 msgstr ""
+"當然這種方法也有個小缺點:範例中的日期和時間都被<quote>擠</quote>在一起了,看"
+"起來不像是人類執行的。我的範例產生腳本程式一秒鐘之內可以執行好幾個命令;但正常"
+"的人類在執行不同命令時至少會隔個幾秒,對應的日期和時間至少會有幾秒鐘的差距。"
 
 #. type: Content of: <book><chapter><sect1><para>
 #: ../en/ch01-intro.xml:159
 "<literal role=\"hg-ext\">bisect</literal> example in <xref linkend=\"sec:undo:"
 "bisect\"/>, for instance."
 msgstr ""
+"舉例來說,<xref linkend=\"sec:undo:bisect\"/> 中關於<literal role=\"hg-ext"
+"\">bisect</literal> 的範例,好幾個連續的提交都發生在同一秒鐘之內。"
 
 #. type: Content of: <book><chapter><sect1><para>
 #: ../en/ch01-intro.xml:165
 "times you see in the output of commands.  But <emphasis>do</emphasis> be "
 "confident that the behavior you're seeing is consistent and reproducible."
 msgstr ""
+"因此,當閱讀這些範例時,請不要太在意命令所輸出的時期和時間;但請<emphasis>一定"
+"要</emphasis>確認看到的結果是一致且可以再重現的。"
 
 #. type: Content of: <book><chapter><sect1><title>
 #: ../en/ch01-intro.xml:173
 msgid "Trends in the field"
-msgstr ""
+msgstr "這個領域的發展趨勢"
 
 #. type: Content of: <book><chapter><sect1><para>
 #: ../en/ch01-intro.xml:175
 "control tools over the past four decades, as people have become familiar with "
 "the capabilities of their tools and constrained by their limitations."
 msgstr ""
+"在過去的四十年間,隨著人們越來越熟悉工具的能力與限制,版本控制工具的發展與使用"
+"已經有了明確的趨勢。 "
 
 #. type: Content of: <book><chapter><sect1><para>
 #: ../en/ch01-intro.xml:180
 "control, their locking model and reliance on a single computer limited them "
 "to small, tightly-knit teams."
 msgstr ""
+"第一代的工具著重在個人使用的電腦上管理單一的檔案。雖然比起「手動版本控管」,這"
+"些工具已經算是革命性的進展;但它們使用的「鎖定模型」,以及只能在單一電腦上使用"
+"限制,讓它們適用的範圍儘限於小型、互動緊密的團隊。"
 
 #. type: Content of: <book><chapter><sect1><para>
 #: ../en/ch01-intro.xml:186
 "found that they could not use the tools to interact with a project in a "
 "natural way, as they could not record their changes."
 msgstr ""
+"第二代工具的架構以網路為中心,並且可以管理整個專案,解除了第一代工具的限制。但"
+"隨著專案規模日益增長,第二代的工具又遇到了新的問題。由於客戶端的程式需要不斷地"
+"向伺服器收發資料,伺服器的能力就成了大型專案的重要問題。另外,在網路連線不穩定"
+"的時候,遠端的使用者可能完全無法和伺服器溝通。再者,在開放原始碼的專案中,儲存"
+"庫僅以唯讀的方式開放給一般匿名使用者,沒有提交的權限,因此這些匿名的使用者無法"
+"使用這些工具儲存他們所做的修改,不符合自然的使用習慣。"
 
 #. type: Content of: <book><chapter><sect1><para>
 #: ../en/ch01-intro.xml:198
 "offline indefinitely and autonomously, with a network connection only needed "
 "when syncing changes with another repository."
 msgstr ""
+"最新一代的版本控制工具是以「點對點」做為基礎的。這些系統都捨棄了必須依賴單一中"
+"央伺服的架構,讓使用者可以將他們真正需要的版本控制資訊分散到他們想要的地方。透"
+"過網路的合作模式已經擺脫了技術的限制,只剩下選擇和審核所需要的變更。現代的工具"
+"可以離線獨立運作,不受網路的限制。只有在需要和其他的儲存庫同步的時候,才需要網"
+"路連線。"
 
 #. type: Content of: <book><chapter><sect1><title>
 #: ../en/ch01-intro.xml:210
 msgid "A few of the advantages of distributed revision control"
-msgstr ""
+msgstr "分散式版本控制的優點"
 
 #. type: Content of: <book><chapter><sect1><para>
 #: ../en/ch01-intro.xml:213
 "a number of ways in which distributed tools shine relative to centralised "
 "ones."
 msgstr ""
+"雖然分散式版本控制工具已經發展了好些年,他們的穩定度和可用性已經和前一代的工具"
+"差不多了,但前一代工具的使用者們還沒辦法完全了解這類工具的優點。和集權式的工具"
+"比較,分散式的工具有很多相對的優點。"
 
 #. type: Content of: <book><chapter><sect1><para>
 #: ../en/ch01-intro.xml:220
 "value of a snappy, responsive tool: you're going to spend a lot of time "
 "interacting with your revision control software."
 msgstr ""
+"對於單一開發者來說,分散式版本控制工具幾乎一定比集權式的快得多。理由很簡單:在"
+"執行許多指令時,集權式的工具必須透過網路和儲存庫溝通,因為大部份的版本資訊都只"
+"有一份,只儲存在中央伺服器中。分散式的工具把這些資訊全部都存在本地端的機器中。"
+"在其他條件都相同下,透過網路存取資料增加了集權式系統的額外負擔。請不要低估快速"
+"反應工具的價值:和版本控制軟體互動的時間是很可觀的。"
 
 #. type: Content of: <book><chapter><sect1><para>
 #: ../en/ch01-intro.xml:231
 "recent and actually worked.  With a distributed tool, you have many backups "
 "available on every contributor's computer."
 msgstr ""
+"分散式的工具不在意你的伺服器發生什麼問題,因為他們把控制資訊複製到很多地方。要"
+"是你使用集權式的系統,然後伺服器機房失火了,你最好祈禱你用來備份儲存庫的磁帶沒"
+"事,而且你最近才剛備份過,而且還能順利還原。若是改用分散式工具的話,每個專案成"
+"員的電腦裡都有一份備份。"
 
 #. type: Content of: <book><chapter><sect1><para>
 #: ../en/ch01-intro.xml:239
 "with local operations.  If you have a far-flung team of collaborators, this "
 "may be significant."
 msgstr ""
+"網路是否可靠對於分散式工具的影響遠小於集權式的工具。除了幾個功能有限的指令外,"
+"沒有網路你甚至根本不能用集權式系統。若是使用分散式工具,然後你工作的時候網路掛"
+"了,你甚至可能不會發現。沒有了網路,你唯一不能做的事情是和別的儲存庫溝通;而使"
+"用這個功能的機會,和其他可以單機作業的功能比起來,算是非常少的。如果某些團隊成"
+"員位在世界上其他很遠的地方,這個問題就很重要了。"
 
 #. type: Content of: <book><chapter><sect1><sect2><title>
 #: ../en/ch01-intro.xml:250
 msgid "Advantages for open source projects"
-msgstr ""
+msgstr "開放原始碼專案所能享受的好處"
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
 #: ../en/ch01-intro.xml:252
 "local modifications will be at risk of corruption any time you try to update "
 "your client's view of the repository."
 msgstr ""
+"如果你覺得某個開放原始碼的專案很不錯,決定開始鑽研、修改它的程式碼,而且這個專"
+"案使用分散式版本控制工具的話,你馬上就可以和那些專案<quote>核心成員</quote>站"
+"在平等的位置了。如果他們發佈了他們的儲存庫,你可以使用和他們一樣的工具,立刻複"
+"製他們的專案歷程、修改原始碼、記錄你修改的地方。反過來說,若他們用的是集權管理"
+"式的工具,除非有人幫你取得中央伺服器的寫入權限,否則你只能以<quote>唯讀模式</"
+"quote>使用程式碼管理工具。你沒辦法記錄自己修改的地方,而且,當你想要從伺器上捉"
+"別人更新的內容下來時,還要冒著自己修改的內容可能會被蓋掉不見的風險。"
 
 #. type: Content of: <book><chapter><sect1><sect2><sect3><title>
 #: ../en/ch01-intro.xml:268
 msgid "The forking non-problem"
-msgstr ""
+msgstr "分支不是錯"
 
 #. type: Content of: <book><chapter><sect1><sect2><sect3><para>
 #: ../en/ch01-intro.xml:270
 "more or less complete copy of the project's source code, and goes off in its "
 "own direction."
 msgstr ""
+"有人說:分散式版本控制工具會帶給開放原始碼專案某種程度的風險,因為使用這類的工"
+"具很容易讓專案開發過程出現<quote>分支</quote>。當兩派人馬有不同的做法或態度"
+"時,兩方都覺得無法和對方再繼續工作下去,分支就出現了。兩邊都拿了專案原本的程式"
+"碼,然後朝不同方向發展。"
 
 #. type: Content of: <book><chapter><sect1><sect2><sect3><para>
 #: ../en/ch01-intro.xml:280
 "quote>, and graft the other team's changes into the tree somehow. This "
 "usually loses some or all of one side's revision history."
 msgstr ""
+"有時候,雙分陣營會想要整合兩邊某些不同的地方。若他們使用的是集權式的版本控制系"
+"統,那麼這個過程在<emphasis>技術上</emphasis>就不是件簡單的事了,通常需要人工"
+"手動去修改。首先必須決定要以哪邊的修改歷程為主,然後再把另一邊的修改內容轉接到"
+"這邊來。通常某一邊的版本歷程會部份(甚至完全)被捨棄。"
 
 #. type: Content of: <book><chapter><sect1><sect2><sect3><para>
 #: ../en/ch01-intro.xml:289
 "<emphasis>merging</emphasis> forks, because forks are absolutely fundamental: "
 "they happen all the time."
 msgstr ""
+"對於分支這件事,分散式工具的原則是:分支是專案發展的<emphasis>唯一</emphasis>"
+"分法。每個單獨的變更點都可能會產生新的分支。這麼做所產生的最大好處是:分散式版"
+"本控制工具處理<emphasis>合併 (merging)</emphasis>及分支的功能非常強大,因它們"
+"就是整個系統的基礎:隨時都可能會分支、合併。"
 
 #. type: Content of: <book><chapter><sect1><sect2><sect3><para>
 #: ../en/ch01-intro.xml:298
 "anything, distributed tools <emphasis>lower</emphasis> the likelihood of a "
 "fork:"
 msgstr ""
+"假設每人每天在做的每一件工作都可以視作許多的合併和分支,那麼<quote>分支</"
+"quote>這件事情就沒有嚴重到「兩派人馬不合」這種程度,而就只是<emphasis>單純的</"
+"emphasis>社群問題 (social issue)了。若真要說有什麼影響,那就是分散式工具"
+"<emphasis>降低</emphasis>了分支的可能性:"
 
 #. type: Content of: <book><chapter><sect1><sect2><sect3><itemizedlist><listitem><para>
 #: ../en/ch01-intro.xml:305
 "They eliminate the social distinction that centralised tools impose: that "
 "between insiders (people with commit access) and outsiders (people without)."
 msgstr ""
+"分散式工具消除了集權式工具所面對的「核心(擁有提交權限)成員」與「外部(沒有提"
+"交權限)成員」之間的社群區別。"
 
 #. type: Content of: <book><chapter><sect1><sect2><sect3><itemizedlist><listitem><para>
 #: ../en/ch01-intro.xml:309
 "involved from the perspective of the revision control software is just "
 "another merge."
 msgstr ""
+"在社群性分支之後,想要整合兩邊的不同很容易,因為從版本控制軟體的角度來看,就只"
+"是進行「合併」而已。"
 
 #. type: Content of: <book><chapter><sect1><sect2><sect3><para>
 #: ../en/ch01-intro.xml:314
 "illusory, you are forgoing the ability to fluidly collaborate with whatever "
 "people feel compelled to mirror and fork your history."
 msgstr ""
+"有些人抗拒使用分散式工具,因為他們保有對專案的絕對掌控權。他們相信集權式工具可"
+"以給他們這樣的權力。然而,要是你這麼想,然後利用 CVS 或是 Subversion 公開了你"
+"的儲存庫;那麼其他人還是可能用各種工具捉取你專案的完整歷程(雖然可能會多花些時"
+"間),然後在另一個你控制不了的地方重建整個專案。此時,不但你的「完全掌控」只是"
+"個幻影,你同時也失去了和這些被迫分支你的專案的人合作的機會。"
 
 #. type: Content of: <book><chapter><sect1><sect2><title>
 #: ../en/ch01-intro.xml:329
 msgid "Advantages for commercial projects"
-msgstr ""
+msgstr "帶給商業專案的好處"
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
 #: ../en/ch01-intro.xml:331
 "site, so that there's no redundant communication between repositories over "
 "expensive long-haul network links."
 msgstr ""
+"有許多商業專案的團隊是分散在世界各處的。離中央伺服器較遠的開發人員得花更多的時"
+"間執行命令,而且還可能會因為網路不穩而失敗。商業的版本控制系統供應商可能會兜售"
+"附加套件,利用本地端複本的方式解決這個問題;然而這件附加套件不但昂貴,而且還會"
+"增加網管的困擾。分散式系統首兒是不會發生這樣的問題。再者,你可以很輕鬆地建立數"
+"個認證過的伺服器(可能每個開發中心一個),就可以省下許多在昂貴的網路上進行的不"
+"必要資料傳輸。"
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
 #: ../en/ch01-intro.xml:343
 "a much larger team, and replication to balance load becomes a simple matter "
 "of scripting."
 msgstr ""
+"集權式版本控制系統的擴充性相對來說並不是很好。常見的狀況是:只要數十個使用者同"
+"時存取,就可以把一台昂貴的中央伺服器搞垮了。解決的方法,一樣是再加上又貴又笨重"
+"的複製機制。分散式系統的中央伺服器(如果你有的話)的負載比集權式的低很多(因為"
+"所有的資料都已經被複製到各處了),因此一台便宜的伺服器就可以滿足更大的團隊的需"
+"求,而且只要簡單的腳本程式,就可做到「產生儲存庫複本以平衡負載」的任務了。"
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
 #: ../en/ch01-intro.xml:355
 "and regressions in the customer's environment, all without needing to connect "
 "to your company's network."
 msgstr ""
+"如果你有員工需要到廠商那兒去解決問題,分散式版本控制系統對他們來說也是很有用"
+"的。分散式工具讓他們可以寫某個客戶的專屬版本、嘗試各種不同的解決方案(而不會混"
+"在一起)、有效率地找尋各個版本的程式碼,逐一放入客戶的環境中測試——完全不需要連"
+"接公司的網路。"
 
 #. type: Content of: <book><chapter><sect1><title>
 #: ../en/ch01-intro.xml:366
 msgid "Why choose Mercurial?"
-msgstr ""
+msgstr "為什麼選擇 Mercurial?"
 
 #. type: Content of: <book><chapter><sect1><para>
 #: ../en/ch01-intro.xml:368
 msgid ""
 "Mercurial has a unique set of properties that make it a particularly good "
 "choice as a revision control system."
-msgstr ""
+msgstr "Mercurial 擁有許多獨特的優點,使它成為一套優秀的版本控制系統。"
 
 #. type: Content of: <book><chapter><sect1><itemizedlist><listitem><para>
 #: ../en/ch01-intro.xml:371
 msgid "It is easy to learn and use."
-msgstr ""
+msgstr "易學易用。"
 
 #. type: Content of: <book><chapter><sect1><itemizedlist><listitem><para>
 #: ../en/ch01-intro.xml:372
 msgid "It is lightweight."
-msgstr ""
+msgstr "不占太多系統資源。"
 
 #. type: Content of: <book><chapter><sect1><itemizedlist><listitem><para>
 #: ../en/ch01-intro.xml:373
 msgid "It scales excellently."
-msgstr ""
+msgstr "適用各種規模大小不同的場合。"
 
 #. type: Content of: <book><chapter><sect1><itemizedlist><listitem><para>
 #: ../en/ch01-intro.xml:374
 msgid "It is easy to customise."
-msgstr ""
+msgstr "容易客制化。"
 
 #. type: Content of: <book><chapter><sect1><para>
 #: ../en/ch01-intro.xml:377
 "feature sets are generally uniform and consistent, so you can keep track of a "
 "few general rules instead of a host of exceptions."
 msgstr ""
+"如果你已經很熟悉版本控制系統,大概在五分鐘之內你就會用 Mercurial 了。就算不是"
+"很熟,也不用再多花你幾分鐘的時間。Mercurial 的命令和功能相當一致,因此你只要記"
+"得幾個一般規則就行了,不需要死背一堆例外狀況。"
 
 #. type: Content of: <book><chapter><sect1><para>
 #: ../en/ch01-intro.xml:384
 "attempts to stay nimble and largely out of your way by combining low "
 "cognitive overhead with blazingly fast operations."
 msgstr ""
+"專案不大的話,你馬上就可以利用 Mercurial 工作了。不管是建立新的變更或分支、"
+"(在本機或是透過網路)傳送修改內容、瀏覽歷程或狀態等,速度都非常快。Mercurial "
+"儘可能地保持小巧靈活,降低不需要的操作,一眨眼間就完成命令。"
 
 #. type: Content of: <book><chapter><sect1><para>
 #: ../en/ch01-intro.xml:391
 "projects with hundreds to thousands of contributors, each containing tens of "
 "thousands of files and hundreds of megabytes of source code."
 msgstr ""
+"Mercurial 不是只能用在小型的專案上:有很多使用 Mercurial 管理的專案有上千個參"
+"與的成員,專案的程式碼有萬個檔案,全部加起有上百 MB。"
 
 #. type: Content of: <book><chapter><sect1><para>
 #: ../en/ch01-intro.xml:396
 "already available, ranging from helping to identify bugs to improving "
 "performance."
 msgstr ""
+"如果你覺得 Mercurial 的核心功能不夠用,要加上新的擴充功能也很容易。Mercurial "
+"很適合放在 script 中執行。它是用 Python 寫成的,而且程式碼也很簡潔,很輕易地就"
+"能利用延伸套件的方式加上新功能。目前已經有許多熱門且好用的延伸套件了,從協助找"
+"到問題到增進效能的套件都有。"
 
 #. type: Content of: <book><chapter><sect1><title>
 #: ../en/ch01-intro.xml:406
 msgid "Mercurial compared with other tools"
-msgstr ""
+msgstr "Mercurial 和其他工具的比較"
 
 #. type: Content of: <book><chapter><sect1><para>
 #: ../en/ch01-intro.xml:408
 "one of the revision control tools listed below, in most cases for several "
 "years at a time."
 msgstr ""
+"話先說在前頭:這一節的內容反應了我個人的經驗、興趣以及(我得承認)偏見。下列的"
+"每一種版本控制工具我都用過,至少都用了好幾年。"
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
 #: ../en/ch01-intro.xml:418
 "Subversion is a popular revision control tool, developed to replace CVS.  It "
 "has a centralised client/server architecture."
 msgstr ""
+"Subversion 是一套非常流行的版本控制工具,是為了取代 CVS 而生的。它的儲存庫採集"
+"權式的架構,操作則是主從式 (client/server) 的。"
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
 #: ../en/ch01-intro.xml:422
 "same operations, so if you're familiar with one, it is easy to learn to use "
 "the other.  Both tools are portable to all popular operating systems."
 msgstr ""
+"Subversion 和 Mercurial 有許多功能相同的命令名稱非常相似,因此,若是你熟悉其中"
+"一套的話,要學會另一套就不是什麼問題。兩套工具在各大主流作業系統中都有移植版"
+"本。"
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
 #: ../en/ch01-intro.xml:427
 "url=\"http://svnbook.red-bean.com/nightly/en/svn.branchmerge.advanced."
 "html#svn.branchmerge.advanced.finalword\">complicated and buggy</ulink>."
 msgstr ""
+"Subversion 在 1.5 版以前的合併功能幾乎沒什麼用。在寫這本書的同時,Subversion "
+"重新設計了合併追踪的功能,大家普偏認為它<ulink url=\"http://svnbook.red-bean."
+"com/nightly/en/svn.branchmerge.advanced.html#svn.branchmerge.advanced."
+"finalword\">又複雜又難用</ulink>。"
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
 #: ../en/ch01-intro.xml:433
 "Subversion does not have useful replication facilities, server capacity and "
 "network bandwidth become bottlenecks for modestly large projects."
 msgstr ""
+"在我所比較過的所有版本控制命令中,Mercurial 的執行效率都要比 Subversion 好得多"
+"(快上二倍到六倍不等),而且我用來比較的還是 Subversion 1.4.3 版的 "
+"<emphasis>ra_local</emphasis> 檔案儲存方式,已經是最快的存取方式了。在一般常見"
+"的應用場合(透過網路存取),Subversion 還會明顯地再慢上好幾倍。因為 "
+"Subversion 的許多命令都必須和伺服器溝通,再加上 Subversion 沒有有效的複本機"
+"制,伺服器的速度和網路的頻寬會成為大部分大型專案的瓶頸。"
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
 #: ../en/ch01-intro.xml:446
 "directory, even though the Mercurial repository contains a complete history "
 "of the project."
 msgstr ""
+"另外,Subversion 會在本地端的硬碟中存放某些資料,以減少進行某些常用操作(像是"
+"列出檔案修改狀態的 <literal>status</literal> 命令、顯示修改內容的 "
+"<literal>diff</literal> 命令……等)時的網路存取動作。因此,縱使 Mercurial 的工"
+"作目錄還包含了完整的儲存庫/修改歷程,Subversion 的工作目錄卻往往和 Mercurial "
+"的工作目錄差不多大,甚至占用更多的空間。"
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
 #: ../en/ch01-intro.xml:456
 "some of Mercurial's GUI tools now outshine their Subversion equivalents.  "
 "Like Mercurial, Subversion has an excellent user manual."
 msgstr ""
+"Subversion 廣泛地受到許多第三方工具的支援。Mercirial 在這方面相對落後許多。然"
+"而,這個差距正在縮小中,而且有些 Mercuarial 的圖型化介面程式比起 Subversion 的"
+"程式出色許多。和 Mercurial 一樣,Subversion 的使用者手冊也寫得很不錯。"
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
 #: ../en/ch01-intro.xml:462
 "distributed SCM will grow rapidly in proportion to the number of revisions, "
 "because the differences between each revision are large."
 msgstr ""
+"因為 Subversion 不會在本地端儲存版本歷程,因此若是專案中有許多很肥的二進位檔案"
+"的話,就很適合用 Subversion 管理。如果你的專案裡面有一個大小約 10MB、而且無法"
+"壓縮的檔案,然後你提交了 50 個版本。對於 Subversion 來說,不管你提交了幾次,在"
+"本地端所占用的硬碟大小不會差太多。但若是改用分散式的版本控制系統,所占用的空間"
+"就會隨著提交次數而快速增長,因為每個版本之間的差異資料是很大的。"
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
 #: ../en/ch01-intro.xml:471
 "to it, can be a significant advantage to a project where binary files are "
 "widely used."
 msgstr ""
+"此外,不同版本的二進位程式是很難(甚至是不可能)合併的。Subversion 有能力讓使"
+"用者鎖定檔案,暫時不讓其他使用者提交修改的檔案。這對大量使用二進位檔案格式的專"
+"案來說,是非常有利的。"
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
 #: ../en/ch01-intro.xml:478
 "you can perform an initial conversion, then small additional conversions "
 "afterwards to bring in new changes."
 msgstr ""
+"Mercurial 可以從 Subversion 儲存庫中匯入版本歷程,也可以反過來把版本歷程匯回 "
+"Subversion 的儲存庫。這讓我們可以在決定要不要全面轉用 Mercurial 前,可以先同時"
+"使用兩套系統,<quote>試試水溫</quote>。轉換歷程這個動作是累進示的,所以你可以"
+"在一開始的時候轉換整個儲存庫,之後有新的變更時再一點一點地轉換。"
 
 #. type: Content of: <book><chapter><sect1><itemizedlist><listitem><para>
 #: ../en/ch01-intro.xml:490 ../en/ch01-intro.xml:629
 msgid "Git"
-msgstr ""
+msgstr "Git"
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
 #: ../en/ch01-intro.xml:492
 "the Linux kernel source tree.  Like Mercurial, its early design was somewhat "
 "influenced by Monotone."
 msgstr ""
+"Git 也是分散式的版本控制工具,最早是為了管理 Linux 的核心程式碼而開發的。和 "
+"Mercurial 一樣,Git 最早的設計或多或少參考了 Monotone 的架構。"
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
 #: ../en/ch01-intro.xml:497
 "commands.  It has something of a reputation for being difficult to learn.  "
 "Compared to Git, Mercurial has a strong focus on simplicity."
 msgstr ""
+"Git 的命令非常多,例如 1.5.0 版就提供了 139 個不同的命令 。Git 以難學聞名。相"
+"較之下,Mercurial 在易用性方面就下了不少工夫。"
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
 #: ../en/ch01-intro.xml:502
 "support that Git provides is, at the time of writing, far behind that of "
 "Mercurial."
 msgstr ""
+"以執行效率來說,Git 真的非常快。有些命令(至少在 Linux 下)比 Mercurial 快,有"
+"些比較慢。然而,若是要在 Windows 平台上測試的話,不管是執行效率或是支援的程"
+"度,就目前來說,Git 是遠遠落後 Mercurial 的。"
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
 #: ../en/ch01-intro.xml:509
 "freshly packed Git repository is slightly smaller than a Mercurial "
 "repository, but an unpacked repository is several orders of magnitude larger."
 msgstr ""
+"Mercurial 的儲存庫不需要特別的維護;但 Git 的儲存庫常常需要手動去<quote>重新打"
+"包 (repack)</quote>。要是沒有這麼做,執行效率會下降,占用的儲存空間也會增加地"
+"很快。若是伺服器上放了很多 Git 的儲存庫,卻又沒有積極而頻繁地去重新打包的話,"
+"它所占用的硬碟空間將成為備份時最大的問題(我曾經遇過因為這個原因,備份程序跑了"
+"整整 24 小時還跑不完)。剛打包完的 Git 儲存庫比 Mercurial 儲存庫稍微小一點,但"
+"未打包的就有可能會大上好幾個數量級!"
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
 #: ../en/ch01-intro.xml:520
 "encountered several instances where scripts charged along blindly in the "
 "presence of errors that should have been fatal."
 msgstr ""
+"Git 的核心是用 C 寫成的。許多 Git 的命令是以 shell 或是 Perl 腳本程式寫成的。"
+"這些腳本程式的品質 好壞差異很大。我曾經遇遇過好幾次明明已經遇上致命的錯誤、腳"
+"本程式卻仍繼續執行的情況。"
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
 #: ../en/ch01-intro.xml:526
 msgid "Mercurial can import revision history from a Git repository."
-msgstr ""
+msgstr "Mercurial 可以從 Git 儲存庫中匯入版本歷程。"
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
 #: ../en/ch01-intro.xml:534
 "to its age and internal untidiness, it has been only lightly maintained for "
 "many years."
 msgstr ""
+"CVS 可能是目前世界上最多人用的版本控制工具了。由於它已經有一把年紀了,再加上內"
+"部的程式碼有些混亂,因此這幾年已經幾乎沒什麼在維護了。"
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
 #: ../en/ch01-intro.xml:538
 "timestamps of the changes made to each file involved (if you even know what "
 "those files were)."
 msgstr ""
+"CVS 的架構採集權式儲存庫加上主從式操作。它並不會把一整群相關的檔案變更整個成單"
+"一的單元再提交,因此在使用時很容易造成<quote>專案無法編譯</quote>的問題:某個"
+"使用者可能成功地提交了部份的程式碼後,因為要處理合併的問題而停下來。此時其他人"
+"就只能看到整個修改的一部份,造成無法編譯的問題。這個問題也影響到檢閱專案歷程的"
+"方式。如果你想要知道某件工作到底做了哪些修改,你必須手動去檢查所有修改到的檔案"
+"的描述和時間(而且你還得要知道哪些檔案被修改了)。"
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
 #: ../en/ch01-intro.xml:550
 "how a repository is corrupt.  I would not recommend CVS for any project, "
 "existing or new."
 msgstr ""
+"CVS 對於標籤和分支的處理方法實在是太雜亂,亂到我連提都不想提。而且 CVS 也不支"
+"援檔案或是目錄更名,使得儲存庫內的資料很容易錯亂。同時它也缺乏檢查內部資料是否"
+"正確的能力,因此一旦錯亂,就很難找到錯亂的原因。不管是現存的專案或是新開的專"
+"案,我都不會推薦使用 CVS 管理。"
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
 #: ../en/ch01-intro.xml:558
 "timestamps and files that have remained locked for over a decade are just two "
 "of the less interesting problems I can recall from personal experience)."
 msgstr ""
+"Mercurial 可以匯入 CVS 的版本歷程。不過有些限制(所有可以匯入 CVS 的版本控制工"
+"具都會遇上相同的問題,並非  Mercurial 所獨有)。由於 CVS 缺乏將一次的變更視作"
+"單一單位處理的能力,而且也沒有記錄檔案系統結構版本的能力,因此要完全正確地重"
+"現 CVS 的歷是不可能的。有些地方必須要用猜的,若是檔案有更名的話也不會顯示出"
+"來。因為 CVS 需要手動做很多的進階管理,儲存庫中無可避免地會有一些小錯誤,因此 "
+"CVS 的匯入程式在處理已經錯亂的儲存庫時,發生好幾個錯誤是很常見的事情(「檔案的"
+"時間戳記完全是偽造出來的」,以及「被鎖定了超過十年的檔案」,是兩個我個人遇過的"
+"不怎麼有趣的例子)。"
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
 #: ../en/ch01-intro.xml:572
 msgid "Mercurial can import revision history from a CVS repository."
-msgstr ""
+msgstr "Mercurial 可以從 CVS 的儲存庫中匯入版本歷程。"
 
 #. type: Content of: <book><chapter><sect1><sect2><title>
 #: ../en/ch01-intro.xml:578
 msgid "Commercial tools"
-msgstr ""
+msgstr "商業工具"
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
 #: ../en/ch01-intro.xml:580
 "that a user run a command to inform the server about every file they intend "
 "to edit."
 msgstr ""
+"Perforce 也是集權式加上主從式的架構,客戶端沒有任何的暫存資料。和新一代的版本"
+"控制工具不同,Perforce 的使用在想要修改任何一個檔案之前,都必須透過某個命令知"
+"會伺服器。"
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
 #: ../en/ch01-intro.xml:586
 "Perforce installations require the deployment of proxies to cope with the "
 "load their users generate."
 msgstr ""
+"對於較小的團隊來說,Perforce 的執行效率還算不錯;但一旦使用者的人數增加到數十"
+"人時,效能就會急速下滑。若是安裝的數量在一定程度以上,就必須要有代理伺服器來應"
+"付使用者所產生的負載。"
 
 #. type: Content of: <book><chapter><sect1><sect2><title>
 #: ../en/ch01-intro.xml:595
 msgid "Choosing a revision control tool"
-msgstr ""
+msgstr "選擇版本控制工具"
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
 #: ../en/ch01-intro.xml:597
 "strengths that suit them to particular styles of work.  There is no single "
 "revision control tool that is best in all situations."
 msgstr ""
+"除了 CVS 之外,上述的每一套工具都具有特有的能力,可以配合合種不同型態的工作方"
+"式。沒有哪一套版本控制工具是萬用的。"
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
 #: ../en/ch01-intro.xml:602
 "As an example, Subversion is a good choice for working with frequently edited "
 "binary files, due to its centralised nature and support for file locking."
 msgstr ""
+"舉例來說,Subversion 就很適合用在經常要編輯二進位格式的專案,因為它具有集權式"
+"的儲存庫,而且又有鎖定檔案的功能。"
 
 #. type: Content of: <book><chapter><sect1><sect2><para>
 #: ../en/ch01-intro.xml:606
 "merge support to be a compelling combination that has served me well for "
 "several years."
 msgstr ""
+"我個人是覺得 Mercurial 具有簡單、高效能,以及強大的合併能力,算是很不錯的組"
+"合,讓我用它用了很多年。"
 
 #. type: Content of: <book><chapter><sect1><title>
 #: ../en/ch01-intro.xml:614
 msgid "Switching from another tool to Mercurial"
-msgstr ""
+msgstr "從另一套工具轉換到 Mercurial"
 
 #. type: Content of: <book><chapter><sect1><para>
 #: ../en/ch01-intro.xml:616
 "the conversion later to obtain new changes that happened after the initial "
 "conversion."
 msgstr ""
+"Mercurial 內建一個名為 <literal role=\"hg-ext\">conver</literal> 的延伸套件,"
+"可以以累進的方式匯入其他版本控制工具的版本歷程。<quote>累進</quote>的意思是"
+"說:你可以把到某一天為止的專案歷程一次全部轉換完畢,然後過一陣子可以再執行一"
+"次,把第一次執行到現在所有的新增變更再加進來。"
 
 #. type: Content of: <book><chapter><sect1><para>
 #: ../en/ch01-intro.xml:624
 msgid ""
 "The revision control tools supported by <literal role=\"hg-ext\">convert</"
 "literal> are as follows:"
-msgstr ""
+msgstr "<literal role=\"hg-ext\">convert</literal> 所支援的版本控制工具如下:"
 
 #. type: Content of: <book><chapter><sect1><para>
 #: ../en/ch01-intro.xml:632
 "Mercurial in parallel before committing to a switchover, without risking the "
 "loss of any work."
 msgstr ""
+"此外,<literal role=\"hg-ext\">convert</literal> 也可以把 Mercurial 的變更匯出"
+"到 Subversion 的儲存庫中。如此一來,你就可以在正式切換使用 Mercurial 之前,先"
+"同時併用 Subversion 和 Mercurial,工作成果也不會就此遺失。"
 
 #. type: Content of: <book><chapter><sect1><para>
 #: ../en/ch01-intro.xml:638
 "After the initial conversion, just run the same command again to import new "
 "changes."
 msgstr ""
+"<literal role=\"hg-ext\">convert</literal> 的用法很簡單。你只要把來源儲存庫的 "
+"URL 餵給它,還有目的儲存庫的名稱(可加可不加),就可以了。以後想把新的變更再匯"
+"入,只要再執行一次一樣的命令就可以了。"
 
 #. type: Content of: <book><chapter><sect1><title>
 #: ../en/ch01-intro.xml:647
 msgid "A short history of revision control"
-msgstr ""
+msgstr "版本控制的簡史"
 
 #. type: Content of: <book><chapter><sect1><para>
 #: ../en/ch01-intro.xml:649
 "unlock them, preventing anyone else from modifying those files without the "
 "help of an administrator."
 msgstr ""
+"最早出現又最為人所知的版本控制工具應該非 SCCS(程式碼控制系統,Source Code "
+"Control System),是由貝爾實驗室的 Marc Rochkind 在 1970 年代早期完成的。SCCS "
+"只能操作單一的檔案,而且專案的每個成員都必須在同一個系統中有對某個共享空間的存"
+"取權限。同一時間只有一個人可以修改這個檔案,利用鎖定檔案的方式來取得修改權。常"
+"常發生某個使用者把檔案鎖定了、卻忘了解除,導致其他想要修改檔案的人得找系統管理"
+"員幫忙。"
 
 #. type: Content of: <book><chapter><sect1><para>
 #: ../en/ch01-intro.xml:660
 "developers to work in a single shared workspace, and to lock files to prevent "
 "multiple people from modifying them simultaneously."
 msgstr ""
+"Walter Tichy 在 1980 年代早期開發了一套自由軟體,用來取代 SCCS,叫做 RCS"
+"(Revision Control System,版本控制系統)。和 SCCS 一樣,RCS 的使用者也必須在"
+"同一個共享的空間中工作,而且也是利用鎖定檔案的方式防止不同的使用者同時修改檔"
+"案。"
 
 #. type: Content of: <book><chapter><sect1><para>
 #: ../en/ch01-intro.xml:666
 "of every project file, and could modify their copies independently.  They had "
 "to merge their edits prior to committing changes to the central repository."
 msgstr ""
+"後來,同樣也是在 1980 年代,Dick Grune 以 RCS 為基礎,開發了一系列的 shell 腳"
+"本程式。他本來想把這個命令集合取名為 cmt 的,不過後來他把名稱改為 CVS"
+"(Concurrent Versions System,併行版本系統)。CVS 的最大突破是它可以讓不同的開"
+"發人員同時進行工作,而且在某種程度上可以在他們各自的空間工作。由於開發人員可以"
+"在個人的空間中工作,因此就如同 SCCS 和 RCS 一樣,可以避免改到別人修改的地方。"
+"每個開發人員都有一份完整的專案檔案,各自修改他們手上的那份拷貝。等到要提交到中"
+"央儲存庫之前,他們得先把各自修改的地方合併起來。"
 
 #. type: Content of: <book><chapter><sect1><para>
 #: ../en/ch01-intro.xml:677
 "successful; it is probably the world's most widely used revision control "
 "system."
 msgstr ""
+"Brian Berliner 參考了 Grune 的原始腳本程式,用 C 語言改寫,在 1989 年釋出,成"
+"了現代版本的 CVS 的基礎。接下來 CVS 以主從式架構改寫,加入了透過網路操作的功"
+"能。CVS 是採集權式架構,整個專案的歷程只在伺服器上有一份。客戶端的工作空間中只"
+"存有專案最新版本的程式碼,以及很少量的描述資訊,存放伺服器的位置資訊。CVS 非常"
+"成功,可能是世界上最廣為被使用的版本控制系統。"
 
 #. type: Content of: <book><chapter><sect1><para>
 #: ../en/ch01-intro.xml:688
 "repository.  (CVS relied upon RCS for its history storage; TeamWare used "
 "SCCS.)"
 msgstr ""
+"在 1990 年代早期,昇陽公司 (Sun Microsystem) 開發了一套早期的分散式版本控制系"
+"統,叫做 TeamWare。每個開發人員的 TeamWare 工作空間中都有一份完整的專案歷程。"
+"TeamWare 沒有所謂的中央儲存庫。(CVS 是靠 RCS 儲存歷程記錄的;而 TeamWare 則是"
+"使用 SCCS。)"
 
 #. type: Content of: <book><chapter><sect1><para>
 #: ../en/ch01-intro.xml:695
 "and maintain, which made the <quote>pain level</quote> of fixing these "
 "architectural problems prohibitive."
 msgstr ""
+"在 1990 年代,隨著時間的進行,CVS 暴露出了很多的問題。它用將同一次修改的檔案用"
+"各自獨立的方式儲存,而非將它們劃成單一的邏輯單位去操作。它也無法合併檔案系統架"
+"構,因此在檔案或目錄更名的時候很容易造成儲存庫的混亂。更糟的是,想要讀懂它的原"
+"始碼很難,要維護更難,因此想要修正這些架構上的問題幾乎是不可能的是。"
 
 #. type: Content of: <book><chapter><sect1><para>
 #: ../en/ch01-intro.xml:705
 "generally better tool than CVS. Since its initial release, it has rapidly "
 "grown in popularity."
 msgstr ""
+"2001 年時,Jim Blandy 和 Karl Fogel 這兩位曾經參與 CVS 的開發人員,發起了一個"
+"新的專案,目標是以更好的架構及較易維護的程式碼,取代現有的 CVS。其成果即為 "
+"Subversion。Subversion 並沒有改變 CVS 原有的集權式、主從式的架構,但加入了許"
+"多 CVS 缺乏的功能,例如:將多個檔案的修改包成單一的單位去提交、更好的命名空間"
+"管理……等等。Subversion 開始發佈後,使用者就很快地增加。"
 
 #. type: Content of: <book><chapter><sect1><para>
 #: ../en/ch01-intro.xml:714
 "innovative ways.  It uses cryptographic hashes as identifiers, and has an "
 "integral notion of <quote>trust</quote> for code from different sources."
 msgstr ""
+"差不多在同一時間,Graydon Hoare 也開始著手進行一項野心很大的分散式版本控制系"
+"統,叫做 Monetone。Monotone 不但試圖修正 CVS 的缺點、改用點對點式的架構,而且"
+"還加上了許多早期(甚至之後的)版本控制工具所沒有的創新功能。它使用加密的雜湊"
+"值 (cryptographic hashes) 當作版次的識別碼,而且還整合了<quote>可信任的</"
+"quote>這樣的概念,用來管理來源不同的程式碼。"
 
 #. type: Content of: <book><chapter><sect1><para>
 #: ../en/ch01-intro.xml:723
 "influenced by Monotone, Mercurial focuses on ease of use, high performance, "
 "and scalability to very large projects."
 msgstr ""
+"Mercurial 專案始於 2005 年,許多設計概念深受 Monotone 的影響,不過著重的目標是"
+"易學易用、高效能,以及可擴展用在非常大型的專案上。"
 
 #. type: Content of: <book><chapter><title>
 #: ../en/ch02-tour-basic.xml:5
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.