Update little document
[TortoiseGit.git] / doc / source / en / TortoiseGit / tsvn_introduction.xml
blob734d79addc4613248668d776841be8182baa946b
1 <?xml version="1.0" encoding="UTF-8"?>\r
2 <!DOCTYPE chapter SYSTEM "../../dtd/dblite.dtd">\r
3 <chapter id="tsvn-introduction">\r
4         <title>Introduction</title>\r
5         <?dbhh topicname="HIDD_ABOUT"?>\r
6         <simplesect>\r
7                 <indexterm>\r
8                         <primary>version control</primary>\r
9                 </indexterm>\r
10                 <para>\r
11                         Version control is the art of managing changes to\r
12                         information. It has long been a critical tool for programmers,\r
13                         who typically spend their time making small changes to software\r
14                         and then undoing or checking some of those changes the next day.  \r
15                         Imagine a team of such developers working concurrently - and perhaps even\r
16                         simultaneously on the very same files! - and you can see why\r
17                         a good system is needed to <emphasis>manage the potential chaos</emphasis>.\r
18                 </para>\r
19         </simplesect>\r
20         <!-- ================================================================= -->\r
21         <!-- ======================== SECTION 1 ============================== -->\r
22         <!-- ================================================================= -->\r
23         <sect1 id="tsvn-intro-about">\r
24                 <title>What is TortoiseGit?</title>\r
25                 <para>\r
26                         TortoiseGit is a free open-source client for the\r
27                         <firstterm>Subversion</firstterm> version control system.\r
28                         That is, TortoiseGit manages files and directories over time.\r
29                         Files are stored in a central <firstterm>repository</firstterm>.\r
30                         The repository is much like an ordinary file server, except that it\r
31                         remembers every change ever made to your files and directories.\r
32                         This allows you to recover older versions of your files and examine\r
33                         the history of how and when your data changed, and who changed it.\r
34                         This is why many people think of Subversion and version control\r
35                         systems in general as a sort of <quote>time machine</quote>.\r
36                 </para>\r
37                 <para>\r
38                         Some version control systems are also software configuration\r
39                         management (SCM) systems.  These systems are specifically\r
40                         tailored to manage trees of source code, and have many features\r
41                         that are specific to software development - such as natively\r
42                         understanding programming languages, or supplying tools for\r
43                         building software.  Subversion, however, is not one of these\r
44                         systems; it is a general system that can be used to manage\r
45                         <emphasis>any</emphasis> collection of files, including\r
46                         source code.\r
47                 </para>\r
48         </sect1>\r
49         <!-- ================================================================= -->\r
50         <!-- ======================== SECTION 2 ============================== -->\r
51         <!-- ================================================================= -->\r
52         <sect1 id="tsvn-intro-history">\r
53                 <title>TortoiseGit's History</title>\r
54                 <para>\r
55                         In 2002, Tim Kemp found that Subversion was a very good version\r
56                         control system, but it lacked a good GUI client. The idea for a\r
57                         Subversion client as a Windows shell integration was inspired by\r
58                         the similar client for CVS named TortoiseCVS.\r
59                 </para>\r
60                 <para>\r
61                         Tim studied the source code of TortoiseCVS and used it as a base for\r
62                         TortoiseGit. He then started the project, registered the domain\r
63                         <literal>TortoiseGit.org</literal> and put the source code online. During that time,\r
64                         Stefan Küng was looking for a good and free version control system\r
65                         and found Subversion and the source for TortoiseGit. Since TortoiseGit\r
66                         was still not ready for use then he joined the project and started\r
67                         programming. Soon he rewrote most of the existing code and started\r
68                         adding commands and features, up to a point where nothing of the\r
69                         original code remained.\r
70                 </para>\r
71                 <para>\r
72                         As Subversion became more stable it attracted more and more users\r
73                         who also started using TortoiseGit as their Subversion client.\r
74                         The user base grew quickly (and is still growing every day).\r
75                         That's when Lübbe Onken offered to help out with some nice icons\r
76                         and a logo for TortoiseGit. And he takes care of the website\r
77                         and manages the translation.\r
78                 </para>\r
79         </sect1>\r
80         <!-- ================================================================= -->\r
81         <!-- ======================== SECTION 3 ============================== -->\r
82         <!-- ================================================================= -->\r
83         <sect1 id="tsvn-intro-features">\r
84                 <title>TortoiseGit's Features</title>\r
85                 <para>\r
86                         What makes TortoiseGit such a good Subversion client?\r
87                         Here's a short list of features.\r
88                 </para>\r
89                 <variablelist>\r
90                         <varlistentry>\r
91                                 <term>Shell integration</term>\r
92                                 <listitem>\r
93                                         <indexterm>\r
94                                                 <primary>Windows shell</primary>\r
95                                         </indexterm>\r
96                                         <indexterm>\r
97                                                 <primary>explorer</primary>\r
98                                         </indexterm>\r
99                                         <para>\r
100                                                 TortoiseGit integrates seamlessly into the Windows shell\r
101                                                 (i.e. the explorer). This means you can keep working\r
102                                                 with the tools you're already familiar with. And you\r
103                                                 do not have to change into a different application\r
104                                                 each time you need functions of the version control!\r
105                                         </para>\r
106                                         <para>\r
107                                                 And you are not even forced to use the Windows Explorer.\r
108                                                 TortoiseGit's context menus work in many other file managers,\r
109                                                 and in the File/Open dialog which is common to most\r
110                                                 standard Windows applications.\r
111                                                 You should, however, bear in mind that TortoiseGit\r
112                                                 is intentionally developed as extension for the Windows\r
113                                                 Explorer. Thus it is possible that in other applications\r
114                                                 the integration is not as complete and e.g. the icon\r
115                                                 overlays may not be shown.\r
116                                         </para>\r
117                                 </listitem>\r
118                         </varlistentry>\r
119                         <varlistentry>\r
120                                 <term>Icon overlays</term>\r
121                                 <listitem>\r
122                                         <para>\r
123                                                 The status of every versioned file and folder is\r
124                                                 indicated by small overlay icons. That way you can see\r
125                                                 right away what the status of your working copy is.\r
126                                         </para>\r
127                                 </listitem>\r
128                         </varlistentry>\r
129                         <varlistentry>\r
130                                 <term>Easy access to Subversion commands</term>\r
131                                 <listitem>\r
132                                         <para>\r
133                                                 All Subversion commands are available from the explorer\r
134                                                 context menu. TortoiseGit adds its own submenu there.\r
135                                         </para>\r
136                                 </listitem>\r
137                         </varlistentry>\r
138                 </variablelist>\r
139                 <para>\r
140                         Since TortoiseGit is a Subversion client, we would also like to show you\r
141                         some of the features of Subversion itself:\r
142                 </para>\r
143                 <variablelist>\r
144                         <varlistentry>\r
145                                 <term>Directory versioning</term>\r
146                                 <listitem>\r
147                                         <para>\r
148                                                 CVS only tracks the history of individual files, but\r
149                                                 Subversion implements a <quote>virtual</quote>\r
150                                                 versioned filesystem that tracks changes to whole\r
151                                                 directory trees over time.\r
152                                                 Files <emphasis>and</emphasis> directories are\r
153                                                 versioned. As a result, there are real client-side\r
154                                                 <command>move</command> and <command>copy</command>\r
155                                                 commands that operate on files and directories.\r
156                                         </para>\r
157                                 </listitem>\r
158                         </varlistentry>\r
159                         <varlistentry>\r
160                                 <term>Atomic commits</term>\r
161                                 <listitem>\r
162                                         <para>\r
163                                                 A commit either goes into the repository completely,\r
164                                                 or not at all.  This allows developers to construct and\r
165                                                 commit changes as logical chunks.\r
166                                         </para>\r
167                                 </listitem>\r
168                         </varlistentry>\r
169                         <varlistentry>\r
170                                 <term>Versioned metadata</term>\r
171                                 <listitem>\r
172                                         <para>\r
173                                                 Each file and directory has an invisible set of\r
174                                                 <quote>properties</quote> attached. You can invent and\r
175                                                 store any arbitrary key/value pairs you wish.\r
176                                                 Properties are versioned over time, just like file\r
177                                                 contents.\r
178                                         </para>\r
179                                 </listitem>\r
180                         </varlistentry>\r
181                         <varlistentry>\r
182                                 <term>Choice of network layers</term>\r
183                                 <listitem>\r
184                                         <para>\r
185                                                 Subversion has an abstracted notion of repository\r
186                                                 access, making it easy for people to implement new\r
187                                                 network mechanisms. Subversion's <quote>advanced</quote>\r
188                                                 network server is a module for the Apache web server,\r
189                                                 which speaks a variant of HTTP called WebDAV/DeltaV.\r
190                                                 This gives Subversion a big advantage in stability and\r
191                                                 interoperability, and provides various key features for\r
192                                                 free: authentication, authorization, wire compression,\r
193                                                 and repository browsing, for example. A smaller,\r
194                                                 standalone Subversion server process is also available.\r
195                                                 This server speaks a custom protocol which can be\r
196                                                 easily tunneled over ssh.\r
197                                         </para>\r
198                                 </listitem>\r
199                         </varlistentry>\r
200                         <varlistentry>\r
201                                 <term>Consistent data handling</term>\r
202                                 <listitem>\r
203                                         <para>\r
204                                                 Subversion expresses file differences using a binary\r
205                                                 differencing algorithm, which works identically on both\r
206                                                 text (human-readable) and binary (human-unreadable) files.\r
207                                                 Both types of files are stored equally compressed in the\r
208                                                 repository, and differences are transmitted in both\r
209                                                 directions across the network.\r
210                                         </para>\r
211                                 </listitem>\r
212                         </varlistentry>\r
213                         <varlistentry>\r
214                                 <term>Efficient branching and tagging</term>\r
215                                 <listitem>\r
216                                         <para>\r
217                                                 The cost of branching and tagging need not be\r
218                                                 proportional to the project size. Subversion creates\r
219                                                 branches and tags by simply copying the project, using\r
220                                                 a mechanism similar to a hard-link.\r
221                                                 Thus these operations take only a very small,\r
222                                                 constant amount of time, and very little space in the repository.\r
223                                         </para>\r
224                                 </listitem>\r
225                         </varlistentry>\r
226                         <varlistentry>\r
227                                 <term>Hackability</term>\r
228                                 <listitem>\r
229                                         <para>\r
230                                                 Subversion has no historical baggage; it is implemented\r
231                                                 as a collection of shared C libraries with well-defined\r
232                                                 APIs. This makes Subversion extremely maintainable and\r
233                                                 usable by other applications and languages.\r
234                                         </para>\r
235                                 </listitem>\r
236                         </varlistentry>\r
237                 </variablelist>\r
238         </sect1>\r
239         <!-- ================================================================= -->\r
240         <!-- ======================== SECTION 4 ============================== -->\r
241         <!-- ================================================================= -->\r
242         <sect1 id="tsvn-intro-install">\r
243                 <title>Installing TortoiseGit</title>\r
244                 <sect2>\r
245                         <title>System requirements</title>\r
246                         <para>\r
247                                 TortoiseGit runs on Windows 2000 SP2, Windows XP or higher.\r
248                                 Windows 98, Windows ME and Windows NT4 are no longer supported\r
249                                 since TortoiseGit 1.2.0, but you can still download\r
250                                 the older versions if you really need them.\r
251                         </para>\r
252                         <para>\r
253                                 If you encounter any problems during or after installing\r
254                                 TortoiseGit please refer to\r
255                                 <xref linkend="tsvn-faq"/>\r
256                                 first.\r
257                         </para>\r
258                 </sect2>\r
259                 <sect2>\r
260                         <title>Installation</title>\r
261                         <indexterm>\r
262                                 <primary>install</primary>\r
263                         </indexterm>\r
264                         <para>\r
265                                 TortoiseGit comes with an easy to use installer. Double click on\r
266                                 the installer file and follow the instructions. The installer\r
267                                 will take care of the rest. \r
268                         </para>\r
269                         <important>\r
270                                 <para>\r
271                                         You need Administrator privileges to install TortoiseGit.\r
272                                 </para>\r
273                         </important>\r
274                 </sect2>\r
275                 <sect2 id="tsvn-intro-install-lang">\r
276                         <title>Language Packs</title>\r
277                         <indexterm>\r
278                                 <primary>language packs</primary>\r
279                         </indexterm>\r
280                         <indexterm>\r
281                                 <primary>translations</primary>\r
282                         </indexterm>\r
283                         <para>\r
284                                 The TortoiseGit user interface has been translated into many\r
285                                 different languages, so you may be able to download a language\r
286                                 pack to suit your needs.\r
287                                 You can find the language packs on our \r
288                                 <ulink url="http://TortoiseGit.net/translation_status">\r
289                                         <citetitle>translation status page</citetitle>\r
290                                 </ulink>.\r
291                                 And if there is no language pack available yet, why not join\r
292                                 the team and submit your own translation ;-)\r
293                         </para>\r
294                         <para>\r
295                                 Each language pack is packaged as a <literal>.exe</literal> installer.\r
296                                 Just run the install program and follow the instructions.\r
297                                 Next time you restart, the translation will be available.\r
298                         </para>\r
299                 </sect2>\r
300                 <sect2 id="tsvn-intro-install-spell">\r
301                         <title>Spellchecker</title>\r
302                         <indexterm>\r
303                                 <primary>spellchecker</primary>\r
304                         </indexterm>\r
305                         <indexterm>\r
306                                 <primary>dictionary</primary>\r
307                         </indexterm>\r
308                         <para>\r
309                                 TortoiseGit includes a spell checker which allows you to check your\r
310                                 commit log messages. This is especially useful if the project language\r
311                                 is not your native language.\r
312                                 The spell checker uses the same dictionary files as\r
313                                 <ulink url="http://openoffice.org">\r
314                                         <citetitle>OpenOffice</citetitle>\r
315                                 </ulink>\r
316                                 and \r
317                                 <ulink url="http://mozilla.org">\r
318                                         <citetitle>Mozilla</citetitle>\r
319                                 </ulink>.\r
320                         </para>\r
321                         <para>\r
322                                 The installer automatically adds the US and UK English dictionaries.\r
323                                 If you want other languages, the easiest option is simply to\r
324                                 install one of TortoiseGit's language packs. This will install\r
325                                 the appropriate dictionary files as well as the TortoiseGit local\r
326                                 user interface.\r
327                                 Next time you restart, the dictionary will be available too.\r
328                         </para>\r
329                         <para>\r
330                                 Or you can install the dictionaries yourself. If you have OpenOffice or\r
331                                 Mozilla installed, you can copy those dictionaries, which are located\r
332                                 in the installation folders for those applications.\r
333                                 Otherwise, you need to download the required dictionary files from\r
334                                 <ulink url="http://wiki.services.openoffice.org/wiki/Dictionaries">\r
335                                         <citetitle>http://wiki.services.openoffice.org/wiki/Dictionaries</citetitle>\r
336                                 </ulink>\r
337                         </para>\r
338                         <para>\r
339                                 Once you have got the dictionary files, you\r
340                                 probably need to rename them so that the filenames only have\r
341                                 the locale chars in it.\r
342                                 Example:\r
343                                 <itemizedlist>\r
344                                         <listitem>\r
345                                                 <para>\r
346                                                         <filename>en_US.aff</filename>\r
347                                                 </para>\r
348                                         </listitem>\r
349                                         <listitem>\r
350                                                 <para>\r
351                                                         <filename>en_US.dic</filename>\r
352                                                 </para>\r
353                                         </listitem>\r
354                                 </itemizedlist>\r
355                                 Then just copy them to the <filename>bin</filename> sub-folder of\r
356                                 the TortoiseGit installation folder. Normally this will be\r
357                                 <filename>C:\Program Files\TortoiseGit\bin</filename>.\r
358                                 If you don't want to litter the <filename>bin</filename> sub-folder,\r
359                                 you can instead place your spell checker files in\r
360                                 <filename>C:\Program Files\TortoiseGit\Languages</filename>. If that folder isn't\r
361                                 there, you have to create it first.\r
362                                 The next time you start TortoiseGit, the spell checker will be available.\r
363                         </para>\r
364                         <para>\r
365                                 If you install multiple dictionaries, TortoiseGit uses these rules\r
366                                 to select which one to use.\r
367                                 <orderedlist>\r
368                                         <listitem>\r
369                                                 <para>\r
370                                                 Check the <literal>tsvn:projectlanguage</literal> setting.\r
371                                                 Refer to <xref linkend="tsvn-dug-propertypage"/> for information\r
372                                                 about setting project properties.\r
373                                                 </para>\r
374                                         </listitem>\r
375                                         <listitem>\r
376                                                 <para>\r
377                                                 If no project language is set, or that language is not\r
378                                                 installed, try the language corresponding to the Windows locale.\r
379                                                 </para>\r
380                                         </listitem>\r
381                                         <listitem>\r
382                                                 <para>\r
383                                                 If the exact Windows locale doesn't work, try the\r
384                                                 <quote>Base</quote> language, eg.\r
385                                                 <literal>de_CH</literal> (Swiss-German) falls back to\r
386                                                 <literal>de_DE</literal> (German).\r
387                                                 </para>\r
388                                         </listitem>\r
389                                         <listitem>\r
390                                                 <para>\r
391                                                 If none of the above works, then the default language\r
392                                                 is English, which is included with the standard installation.\r
393                                                 </para>\r
394                                         </listitem>\r
395                                 </orderedlist>\r
396                         </para>\r
397                 </sect2>\r
398         </sect1>\r
399 </chapter>\r
400 <!--\r
401 local variables:\r
402 sgml-parent-document: ("book.xml" "chapter")\r
403 end:\r
404 -->\r