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
8 <primary>version control</primary>
\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
20 <!-- ================================================================= -->
\r
21 <!-- ======================== SECTION 1 ============================== -->
\r
22 <!-- ================================================================= -->
\r
23 <sect1 id="tsvn-intro-about">
\r
24 <title>What is TortoiseGit?</title>
\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
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
49 <!-- ================================================================= -->
\r
50 <!-- ======================== SECTION 2 ============================== -->
\r
51 <!-- ================================================================= -->
\r
52 <sect1 id="tsvn-intro-history">
\r
53 <title>TortoiseGit's History</title>
\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
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
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
80 <!-- ================================================================= -->
\r
81 <!-- ======================== SECTION 3 ============================== -->
\r
82 <!-- ================================================================= -->
\r
83 <sect1 id="tsvn-intro-features">
\r
84 <title>TortoiseGit's Features</title>
\r
86 What makes TortoiseGit such a good Subversion client?
\r
87 Here's a short list of features.
\r
91 <term>Shell integration</term>
\r
94 <primary>Windows shell</primary>
\r
97 <primary>explorer</primary>
\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
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
120 <term>Icon overlays</term>
\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
130 <term>Easy access to Subversion commands</term>
\r
133 All Subversion commands are available from the explorer
\r
134 context menu. TortoiseGit adds its own submenu there.
\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
145 <term>Directory versioning</term>
\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
160 <term>Atomic commits</term>
\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
170 <term>Versioned metadata</term>
\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
182 <term>Choice of network layers</term>
\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
201 <term>Consistent data handling</term>
\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
214 <term>Efficient branching and tagging</term>
\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
227 <term>Hackability</term>
\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
239 <!-- ================================================================= -->
\r
240 <!-- ======================== SECTION 4 ============================== -->
\r
241 <!-- ================================================================= -->
\r
242 <sect1 id="tsvn-intro-install">
\r
243 <title>Installing TortoiseGit</title>
\r
245 <title>System requirements</title>
\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
253 If you encounter any problems during or after installing
\r
254 TortoiseGit please refer to
\r
255 <xref linkend="tsvn-faq"/>
\r
260 <title>Installation</title>
\r
262 <primary>install</primary>
\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
271 You need Administrator privileges to install TortoiseGit.
\r
275 <sect2 id="tsvn-intro-install-lang">
\r
276 <title>Language Packs</title>
\r
278 <primary>language packs</primary>
\r
281 <primary>translations</primary>
\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
291 And if there is no language pack available yet, why not join
\r
292 the team and submit your own translation ;-)
\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
300 <sect2 id="tsvn-intro-install-spell">
\r
301 <title>Spellchecker</title>
\r
303 <primary>spellchecker</primary>
\r
306 <primary>dictionary</primary>
\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
317 <ulink url="http://mozilla.org">
\r
318 <citetitle>Mozilla</citetitle>
\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
327 Next time you restart, the dictionary will be available too.
\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
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
346 <filename>en_US.aff</filename>
\r
351 <filename>en_US.dic</filename>
\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
365 If you install multiple dictionaries, TortoiseGit uses these rules
\r
366 to select which one to use.
\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
377 If no project language is set, or that language is not
\r
378 installed, try the language corresponding to the Windows locale.
\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
391 If none of the above works, then the default language
\r
392 is English, which is included with the standard installation.
\r
402 sgml-parent-document: ("book.xml" "chapter")
\r