Mark filenames as such
[TortoiseGit.git] / doc / source / en / TortoiseGit / tgit_introduction.xml
blob68e9e2e5c12fd5c84fecea6f4adc18595c8b5c37
1 <?xml version="1.0" encoding="UTF-8"?>\r
2 <!DOCTYPE chapter SYSTEM "../../dtd/dblite.dtd">\r
3 <chapter id="tgit-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="tgit-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>Git</firstterm> version control system.\r
28                         That is, TortoiseGit manages files over time.\r
29                         Files are stored in a local <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 Git 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.  Git, 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                 <para>\r
49                         Git is an <emphasis>open source, distributed version control system</emphasis>\r
50                         designed to handle everything from small to very large projects with speed and\r
51                         efficiency. Every Git clone is a full-fledged repository with complete history\r
52                         and full revision tracking capabilities, not dependent on network access or\r
53                         a central server. Branching and merging are fast and easy to do.\r
54                 </para>\r
55         </sect1>\r
56         <!-- ================================================================= -->\r
57         <!-- ======================== SECTION 2 ============================== -->\r
58         <!-- ================================================================= -->\r
59         <sect1 id="tgit-intro-history">\r
60                 <title>TortoiseGit's History</title>\r
61                 <para>\r
62                         In 2008, Frank Li found that Git was a very good version\r
63                         control system, but it lacked a good GUI client. The idea for a\r
64                         Git client as a Windows shell integration was inspired by\r
65                         the similar client for SVN named TortoiseSVN.\r
66                 </para>\r
67                 <para>\r
68                         Frank studied the source code of TortoiseSVN and used it as a base for\r
69                         TortoiseGit. He then started the project, registered the project\r
70                         at code.google.com and put the source code online.\r
71                 </para>\r
72                 <para>\r
73                         At the end of 2010 Sven Strickroth joined the TortoiseGit project. Then, he became\r
74                         the current maintainer few years later.\r
75                 </para>\r
76                 <para>\r
77                         From August 2015, GoogleCode was shut down and the TortoiseGit project established their\r
78                         website TortoiseGit.org and migrated the main repository and issue tracker to GitLab.\r
79                 </para>\r
80                 <para>\r
81                         As Git became more stable it attracted more and more users\r
82                         who also started using TortoiseGit as their Git client.\r
83                 </para>\r
84                 <para>\r
85                         For more information what changed over the releases check out the <ulink url="https://tortoisegit.org/releasenotes">latest release notes</ulink> or inspect our <ulink url="https://tortoisegit.org/sourcecode">git commit history</ulink>.\r
86                 </para>\r
87         </sect1>\r
88         <!-- ================================================================= -->\r
89         <!-- ======================== SECTION 3 ============================== -->\r
90         <!-- ================================================================= -->\r
91         <sect1 id="tgit-intro-features">\r
92                 <title>TortoiseGit's Features</title>\r
93                 <para>\r
94                         What makes TortoiseGit such a good Git client?\r
95                         Here's a short list of features.\r
96                 </para>\r
97                 <variablelist>\r
98                         <varlistentry>\r
99                                 <term>Shell integration</term>\r
100                                 <listitem>\r
101                                         <indexterm>\r
102                                                 <primary>Windows shell</primary>\r
103                                         </indexterm>\r
104                                         <indexterm>\r
105                                                 <primary>explorer</primary>\r
106                                         </indexterm>\r
107                                         <para>\r
108                                                 TortoiseGit integrates seamlessly into the Windows shell\r
109                                                 (i.e. the explorer). This means you can keep working\r
110                                                 with the tools you're already familiar with. And you\r
111                                                 do not have to change into a different application\r
112                                                 each time you need functions of the version control!\r
113                                         </para>\r
114                                         <para>\r
115                                                 And you are not even forced to use the Windows Explorer.\r
116                                                 TortoiseGit's context menus work in many other file managers,\r
117                                                 and in the File/Open dialog which is common to most\r
118                                                 standard Windows applications.\r
119                                                 You should, however, bear in mind that TortoiseGit\r
120                                                 is intentionally developed as extension for the Windows\r
121                                                 Explorer. Thus it is possible that in other applications\r
122                                                 the integration is not as complete and e.g. the icon\r
123                                                 overlays may not be shown.\r
124                                         </para>\r
125                                 </listitem>\r
126                         </varlistentry>\r
127                         <varlistentry>\r
128                                 <term>Icon overlays</term>\r
129                                 <listitem>\r
130                                         <para>\r
131                                                 The status of every versioned file and folder is\r
132                                                 indicated by small overlay icons. That way you can see\r
133                                                 right away what the status of your working tree is.\r
134                                         </para>\r
135                                         <para>\r
136                                                 The icon overlays are based on TortoiseOverlays (<ulink url="https://tortoisesvn.net/">https://tortoisesvn.net</ulink>)\r
137                                         </para>\r
138                                 </listitem>\r
139                         </varlistentry>\r
140                         <varlistentry>\r
141                                 <term>Easy access to Git commands</term>\r
142                                 <listitem>\r
143                                         <para>\r
144                                                 All Git commands are available from the explorer\r
145                                                 context menu. TortoiseGit adds its own submenu there.\r
146                                         </para>\r
147                                 </listitem>\r
148                         </varlistentry>\r
149                 </variablelist>\r
150                 <para>\r
151                         Since TortoiseGit is a Git client, we would also like to show you\r
152                         some of the features of Git itself:\r
153                 </para>\r
154                 <variablelist>\r
155                         <varlistentry>\r
156                                 <term>Distributed version control</term>\r
157                                 <listitem>\r
158                                         <para>\r
159                                                  Like most other modern version control systems, Git\r
160                                                  gives each developer a local copy of the entire development\r
161                                                  history, and changes are copied from one such repository\r
162                                                  to another. These changes are imported as additional\r
163                                                  development branches, and can be merged in the same way\r
164                                                  as a locally developed branch. Repositories can be easily\r
165                                                  accessed via the efficient Git protocol (optionally wrapped\r
166                                                  in SSH for authentication and security) or simply using\r
167                                                  HTTP - you can publish your repository anywhere without\r
168                                                  any special web server configuration required.\r
169                                         </para>\r
170                                 </listitem>\r
171                         </varlistentry>\r
172                         <varlistentry>\r
173                                 <term>Atomic commits</term>\r
174                                 <listitem>\r
175                                         <para>\r
176                                                 A commit either goes into the repository completely,\r
177                                                 or not at all.\r
178                                         </para>\r
179                                 </listitem>\r
180                         </varlistentry>\r
181                         <varlistentry>\r
182                                 <term>Strong support for non-linear development</term>\r
183                                 <listitem>\r
184                                         <para>\r
185                                                 Git supports rapid and convenient branching and merging,\r
186                                                 and includes powerful tools for visualizing and navigating\r
187                                                 a non-linear development history.\r
188                                         </para>\r
189                                 </listitem>\r
190                         </varlistentry>\r
191                         <varlistentry>\r
192                                 <term>Efficient handling of large projects</term>\r
193                                 <listitem>\r
194                                         <para>\r
195                                                 Git is very fast and scales well even when working with\r
196                                                 large projects and long histories. It is commonly an order\r
197                                                 of magnitude faster than most other version control systems,\r
198                                                 and several orders of magnitude faster on some operations.\r
199                                                 It also uses an extremely efficient packed format for long-term\r
200                                                 revision storage that currently tops any other open source\r
201                                                 version control system.\r
202                                         </para>\r
203                                 </listitem>\r
204                         </varlistentry>\r
205                         <varlistentry>\r
206                                 <term>Cryptographic authentication of history</term>\r
207                                 <listitem>\r
208                                         <para>\r
209                                                 The Git history is stored in such a way that the name of a\r
210                                                 particular revision (a "commit" in Git terms) depends upon\r
211                                                 the complete development history leading up to that commit.\r
212                                                 Once it is published, it is not possible to change the old\r
213                                                 versions without it being noticed. Also, tags can be\r
214                                                 cryptographically signed.\r
215                                         </para>\r
216                                 </listitem>\r
217                         </varlistentry>\r
218                         <varlistentry>\r
219                                 <term>Efficient branching and tagging</term>\r
220                                 <listitem>\r
221                                         <para>\r
222                                                 The cost of branching and tagging need not be\r
223                                                 proportional to the project size. Branch is just head of commits.\r
224                                                 Tag is friend name of commit hash.\r
225                                         </para>\r
226                                 </listitem>\r
227                         </varlistentry>\r
228                         <varlistentry>\r
229                                 <term>Toolkit design</term>\r
230                                 <listitem>\r
231                                         <para>\r
232                                                 Following the Unix tradition, Git is a collection of many small\r
233                                                 tools written in C, and a number of scripts that provide convenient\r
234                                                 wrappers. Git provides tools for both easy human usage and easy\r
235                                                 scripting to perform new clever operations.\r
236                                         </para>\r
237                                 </listitem>\r
238                         </varlistentry>\r
239                 </variablelist>\r
240         </sect1>\r
241         <!-- ================================================================= -->\r
242         <!-- ======================== SECTION 4 ============================== -->\r
243         <!-- ================================================================= -->\r
244         <sect1 id="tgit-intro-install">\r
245                 <title>Installing TortoiseGit</title>\r
246                 <sect2>\r
247                         <title>System requirements</title>\r
248                         <para>\r
249                                 TortoiseGit runs on Windows 7 or higher.\r
250                                 Windows 98, Windows ME, Windows NT4, Windows 2000, Windows XP and Windows Vista are no longer supported.\r
251                                 If you are running such an old system, you can still use older, however unsupported, releases of TortoiseGit.\r
252                                 Those can be found on the <ulink url="https://download.tortoisegit.org/">download server</ulink> (TortoiseGit 1.7 dropped support for Windows 2000; TortoiseGit 1.9 dropped support for Windows XP, TortoiseGit 2.5 dropped support for Windows Vista).\r
253                         </para>\r
254                         <para>\r
255                                 If you encounter any problems during or after installing\r
256                                 TortoiseGit please refer to\r
257                                 <xref linkend="tgit-faq"/>\r
258                                 first.\r
259                         </para>\r
260                 </sect2>\r
261                 <sect2>\r
262                         <title>Installation</title>\r
263                         <indexterm>\r
264                                 <primary>install</primary>\r
265                         </indexterm>\r
266                         <para>\r
267                                 TortoiseGit comes with an easy to use installer. Double click on\r
268                                 the installer file and follow the instructions. The installer\r
269                                 will take care of the rest.\r
270                         </para>\r
271                         <para>\r
272                                 One prerequisite of TortoiseGit is that it requires an already installed (command line) Git client which provides a <filename>git.exe</filename>.\r
273                                 <ulink url="https://git-for-windows.github.io/">Git for Windows</ulink> is recommended (Cygwin and MSYS2 Git also work, see <xref linkend="tgit-dug-settings-main"/> for configuration. Please note that Cygwin and MSYS2 Git are not officially supported by TortoiseGit as the developers only use Git for Windows. Bug reports, however, are welcome).\r
274                                 Installation of Git for Windows can be done with preselected options, however, no need to install the "Windows Explorer integration".\r
275                                 If you know about CRLF and LF line endings and you have editors coping with that, you should select "Checkout as-is, commit as-is" in order to prevent automatic translations.\r
276                         </para>\r
277                         <important>\r
278                                 <para>\r
279                                         You need Administrator privileges to install TortoiseGit.\r
280                                 </para>\r
281                         </important>\r
282                 </sect2>\r
283                 <sect2 id="tgit-intro-install-lang">\r
284                         <title>Language Packs</title>\r
285                         <?dbhh topicname="HIDD_FIRSTSTARTWIZARD_LANGUAGE"?>\r
286                         <indexterm>\r
287                                 <primary>language packs</primary>\r
288                         </indexterm>\r
289                         <indexterm>\r
290                                 <primary>translations</primary>\r
291                         </indexterm>\r
292                         <para>\r
293                                 The TortoiseGit user interface has been translated into many\r
294                                 different languages, so you may be able to download a language\r
295                                 pack to suit your needs.\r
296                                 You can find the language packs on our\r
297                                 <ulink url="https://tortoisegit.org/download">\r
298                                         <citetitle>translation status page</citetitle>\r
299                                 </ulink>.\r
300                                 And if there is no language pack available yet, why not join\r
301                                 the team and <ulink url="https://tortoisegit.org/translate">submit your own translation</ulink> ;-)\r
302                         </para>\r
303                         <para>\r
304                                 Each language pack is packaged as a <filename>.msi</filename> installer.\r
305                                 Just run the install program after the installation of the main TortoiseGit package and follow the instructions.\r
306                                 After the installation finishes, the translation will be available and can be selected in settings dialog (cf. <xref linkend="tgit-dug-settings-main"/>).\r
307                         </para>\r
308                 </sect2>\r
309                 <sect2 id="tgit-intro-instalsl-spell">\r
310                         <title>Spell checker</title>\r
311                         <indexterm>\r
312                                 <primary>spell checker</primary>\r
313                         </indexterm>\r
314                         <indexterm>\r
315                                 <primary>dictionary</primary>\r
316                         </indexterm>\r
317                         <para>\r
318                                 TortoiseGit includes a spell checker which allows you to check your\r
319                                 commit log messages. This is especially useful if the project language\r
320                                 is not your native language.\r
321                                 By default the spell checker uses the same dictionary files as\r
322                                 <ulink url="https://www.libreoffice.org/">\r
323                                         <citetitle>LibreOffice</citetitle>\r
324                                 </ulink>,\r
325                                 <ulink url="https://www.openoffice.org/">\r
326                                         <citetitle>OpenOffice.org</citetitle>\r
327                                 </ulink>\r
328                                 and\r
329                                 <ulink url="https://mozilla.org">\r
330                                         <citetitle>Mozilla</citetitle>\r
331                                 </ulink>.\r
332                                 TortoiseGit can also use the spell checker shipped with Windows 8+. However, this needs to be enabled manually in advanced settings (key "Win8SpellChecker") at the moment.\r
333                         </para>\r
334                         <para>\r
335                                 The installer by default automatically adds the US English dictionary.\r
336                                 If you want other languages, the easiest option is simply to\r
337                                 install one of TortoiseGit's language packs (see <xref linkend="tgit-intro-install-lang"/>). This will install\r
338                                 the appropriate dictionary files as well as the TortoiseGit local\r
339                                 user interface.\r
340                                 After the installation finishes, the translation will be available.\r
341                                 When using the Windows spell checker, you need to install the dictionary in Windows first.\r
342                         </para>\r
343                         <para>\r
344                                 Or you can install the dictionaries yourself. If you have OpenOffice.org, LibreOffice or\r
345                                 Mozilla installed, you can copy those dictionaries, which are located\r
346                                 in the installation folders for those applications.\r
347                                 Otherwise, you need to download the required dictionary files from\r
348                                 <ulink url="https://cgit.freedesktop.org/libreoffice/dictionaries/">\r
349                                         <citetitle>https://cgit.freedesktop.org/libreoffice/dictionaries/</citetitle>\r
350                                 </ulink>\r
351                                 or\r
352                                 <ulink url="https://wiki.openoffice.org/wiki/Dictionaries">\r
353                                         <citetitle>https://wiki.openoffice.org/wiki/Dictionaries</citetitle>\r
354                                 </ulink>\r
355                         </para>\r
356                         <para>\r
357                                 Once you have got the dictionary files, you\r
358                                 probably need to rename them so that the filenames only have\r
359                                 the locale chars in it.\r
360                                 Example:\r
361                                 <itemizedlist>\r
362                                         <listitem>\r
363                                                 <para>\r
364                                                         <filename>en_US.aff</filename>\r
365                                                 </para>\r
366                                         </listitem>\r
367                                         <listitem>\r
368                                                 <para>\r
369                                                         <filename>en_US.dic</filename>\r
370                                                 </para>\r
371                                         </listitem>\r
372                                 </itemizedlist>\r
373                                 Then just copy them into the <filename>%APPDATA%\TortoiseGit\dic</filename> folder. If that folder isn't\r
374                                 there, you have to create it first.\r
375                                 TortoiseGit will also search the <filename>Languages</filename> sub-folder of\r
376                                 the TortoiseGit installation folder (normally this will be <filename>C:\Program Files\TortoiseGit\Languages</filename>);\r
377                                 this is the place where the language packs put their files.\r
378                                 However, the <filename>%APPDATA%</filename>-folder doesn't require administrator privileges and, thus, has higher priority.\r
379                                 The next time you start TortoiseGit, the spell checker will be available.\r
380                         </para>\r
381                         <para>\r
382                                 If you install multiple dictionaries, TortoiseGit uses these rules\r
383                                 to select which one to use.\r
384                                 <orderedlist>\r
385                                         <listitem>\r
386                                                 <para>\r
387                                                 Check the <literal>tgit.projectlanguage</literal> setting. This setting can be set using TortoiseGit Settings <guilabel>Dialogs 3</guilabel> page (<xref linkend="tgit-dug-settings-dialogs3"/>).\r
388                                                 Refer to <xref linkend="git-config(1)"/> for information\r
389                                                 about setting properties (use the <literal>LCID Dec</literal> value as <ulink url="https://docs.microsoft.com/openspecs/windows_protocols/ms-lcid/a9eac961-e77d-41a6-90a5-ce1a8b0cdb9c">assigned by Microsoft</ulink>).\r
390                                                 </para>\r
391                                         </listitem>\r
392                                         <listitem>\r
393                                                 <para>\r
394                                                 If no project language is set, or that language is not\r
395                                                 installed, try the language corresponding to the Windows locale.\r
396                                                 </para>\r
397                                         </listitem>\r
398                                         <listitem>\r
399                                                 <para>\r
400                                                 If the exact Windows locale doesn't work, try the\r
401                                                 <quote>Base</quote> language, e.g.\r
402                                                 <literal>de_CH</literal> (Swiss-German) falls back to\r
403                                                 <literal>de_DE</literal> (German).\r
404                                                 </para>\r
405                                         </listitem>\r
406                                         <listitem>\r
407                                                 <para>\r
408                                                 If none of the above works, then the default language\r
409                                                 is English, which is included by default with the standard installation.\r
410                                                 </para>\r
411                                         </listitem>\r
412                                 </orderedlist>\r
413                                 When using the Windows spell checker, this is tried first. If no Windows dictionary, based on these fallback-rules, could be found then the "old" spell checker is used as a fallback.\r
414                         </para>\r
415                 </sect2>\r
416         </sect1>\r
417 </chapter>\r
418 <!--\r
419 local variables:\r
420 sgml-parent-document: ("book.xml" "chapter")\r
421 end:\r
422 -->\r