source: general/prog/git.xml@ c28dcdf1

lazarus trunk
Last change on this file since c28dcdf1 was abfacaf, checked in by Xi Ruoyao <xry111@…>, 2 months ago

Remove most references to PCRE1

Some notes:

  • proftpd has been supporting PCRE2 since 1.3.8a.
  • bluefish actually invokes PCRE via Glib, so since Glib was ported from PCRE1 to PCRE2 bluefish has been using PCRE2 in fact.
  • zsh and rasqal will support PCRE2 in the next release. For zsh pcre is not used with book instruction anyway, and for rasqal the maintainer suggests just relying on Glibc regex.h before the next release.
  • The other distros (Fedora for eg) are already disabling PCRE for slang.
  • Property mode set to 100644
File size: 17.3 KB
Line 
1<?xml version="1.0" encoding="UTF-8"?>
2<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
3 "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
4 <!ENTITY % general-entities SYSTEM "../../general.ent">
5 %general-entities;
6
7 <!ENTITY git-root "&kernel-dl;/software/scm/git" >
8
9 <!ENTITY git-download-http "&git-root;/git-&git-version;.tar.xz">
10 <!ENTITY git-download-ftp " ">
11 <!ENTITY git-md5sum "7e4eb7c45e9ba7c90fa51deeea49732f">
12
13 <!ENTITY git-size "7.1 MB">
14 <!-- but people keep forgetting that an install not only needs the net build
15 space, it also needs the install space (or DESTDIR) -->
16 <!ENTITY git-buildsize "307 MB (with downloaded documentation; add 18 MB for building docs)">
17 <!-- With 2.23.0, there was a large increase in time for tests. Possibly disk related? -->
18 <!-- Confirmed that it is disk related.-->
19 <!ENTITY git-time "0.3 SBU (with parallelism=4; add 0.4 SBU for building doc, and up to 5 SBU (disk speed dependent) for tests)">
20]>
21
22<sect1 id="git" xreflabel="git-&git-version;">
23 <?dbhtml filename="git.html"?>
24
25
26 <title>Git-&git-version;</title>
27
28 <indexterm zone="git">
29 <primary sortas="a-Git">Git</primary>
30 </indexterm>
31
32 <sect2 role="package">
33 <title>Introduction to Git</title>
34
35 <para>
36 <application>Git</application> is a free and open source, distributed
37 version control system designed to handle everything from small to very
38 large projects with speed and efficiency. Every
39 <application>Git</application> clone is a full-fledged repository with
40 complete history and full revision tracking capabilities, not dependent
41 on network access or a central server. Branching and merging are fast and
42 easy to do. <application>Git</application> is used for version control of
43 files, much like tools such as <xref linkend="mercurial"/>,
44 <application>Bazaar</application>, <xref linkend="subversion"/>,
45 <ulink url="https://www.nongnu.org/cvs/">CVS</ulink>,
46 <application>Perforce</application>, and
47 <application>Team Foundation Server</application>.
48 </para>
49
50 &lfs121_checked;
51
52 <bridgehead renderas="sect3">Package Information</bridgehead>
53 <itemizedlist spacing="compact">
54 <listitem>
55 <para>
56 Download (HTTP): <ulink url="&git-download-http;"/>
57 </para>
58 </listitem>
59 <listitem>
60 <para>
61 Download (FTP): <ulink url="&git-download-ftp;"/>
62 </para>
63 </listitem>
64 <listitem>
65 <para>
66 Download MD5 sum: &git-md5sum;
67 </para>
68 </listitem>
69 <listitem>
70 <para>
71 Download size: &git-size;
72 </para>
73 </listitem>
74 <listitem>
75 <para>
76 Estimated disk space required: &git-buildsize;
77 </para>
78 </listitem>
79 <listitem>
80 <para>
81 Estimated build time: &git-time;
82 </para>
83 </listitem>
84 </itemizedlist>
85
86 <bridgehead renderas="sect3">Additional Downloads</bridgehead>
87 <itemizedlist spacing="compact">
88 <listitem>
89 <para>
90 <ulink url="&git-root;/git-manpages-&git-version;.tar.xz">
91 &git-root;/git-manpages-&git-version;.tar.xz</ulink>
92 (not needed if you've installed <xref linkend="asciidoc"/>,
93 <xref linkend="xmlto"/>, and prefer to rebuild them)
94 </para>
95 </listitem>
96 <listitem>
97 <para>
98 <ulink url="&git-root;/git-htmldocs-&git-version;.tar.xz">
99 &git-root;/git-htmldocs-&git-version;.tar.xz</ulink>
100 and other docs (not needed if you've installed
101 <xref linkend="asciidoc"/> and want to rebuild the documentation).
102 </para>
103 </listitem>
104 </itemizedlist>
105
106 <bridgehead renderas="sect3">Git Dependencies</bridgehead>
107
108 <bridgehead renderas="sect4">Recommended</bridgehead>
109 <para role="recommended">
110 <xref linkend="curl"/> (needed to use <application>Git</application> over
111 http, https, ftp or ftps)
112 </para>
113
114 <bridgehead renderas="sect4">Optional</bridgehead>
115 <para role="optional">
116 <xref linkend="apache"/> (for some tests),
117 <xref role='runtime' linkend='fcron'/> (runtime, for scheduling
118 <command>git maintenance</command> jobs),
119 <xref role="runtime" linkend="gnupg2"/> (runtime, may be used to sign
120 <application>Git</application> commits or tags, or verify the signatures
121 of them),
122 <xref role="runtime" linkend="openssh"/> (runtime, needed to use
123 <application>Git</application> over ssh),
124 <xref linkend="pcre2"/>,
125 <xref role="runtime" linkend="subversion"/> with Perl bindings
126 (runtime, for <command>git svn</command>),
127 <xref role="runtime" linkend="tk"/>
128 (gitk, a simple <application>Git</application>
129 repository viewer, uses <application>Tk</application> at runtime),
130 <xref linkend="valgrind"/>,
131 <ulink url="https://metacpan.org/pod/Authen::SASL">Authen::SASL</ulink> and
132 <ulink url="https://metacpan.org/pod/MIME::Base64">MIME::Base64</ulink>
133 (both runtime, for <command>git send-email</command>),
134 <phrase revision='sysv'>and </phrase><xref
135 linkend='perl-io-socket-ssl'/> (runtime, for
136 <command>git send-email</command> to connect to a SMTP server with
137 SSL encryption)<phrase revision='systemd'>, and
138 <xref role='runtime' linkend='systemd'/>
139 (runtime, rebuilt with <xref role='nodep' linkend='linux-pam'/>, for
140 scheduling <command>git maintenance</command> jobs)</phrase>
141 </para>
142
143 <bridgehead renderas="sect4">Optional (to create the man pages, html docs
144 and other docs)</bridgehead>
145 <para role="optional">
146 <xref linkend="xmlto"/> and
147 <xref linkend="asciidoc"/>
148 <!-- or xref linkend="asciidoctor", doesn't work now because it needs docbook-xsl-ns -->,
149 and also
150 <ulink url="https://dblatex.sourceforge.net/">dblatex</ulink>
151 (for the PDF version of the user manual), and
152 <ulink url="https://docbook2x.sourceforge.net/">docbook2x</ulink> to
153 create info pages
154 </para>
155
156 </sect2>
157
158 <sect2 role="installation">
159 <title>Installation of Git</title>
160
161 <para>
162 Install <application>Git</application> by running the following
163 commands:
164 </para>
165
166<screen><userinput>./configure --prefix=/usr \
167 --with-gitconfig=/etc/gitconfig \
168 --with-python=python3 &amp;&amp;
169make</userinput></screen>
170
171 <para>
172 You can build the man pages and/or html docs, or
173 use downloaded ones. If you choose to build them, use the next two
174 instructions.
175 </para>
176
177 <para>
178 If you have installed <xref linkend="asciidoc"/> you can
179 create the html version of the man pages and other docs:
180 </para>
181
182<screen remap="doc"><userinput>make html</userinput></screen>
183
184 <para>
185 If you have installed <xref linkend="asciidoc"/> and
186 <xref linkend="xmlto"/> you can create the man pages:
187 </para>
188
189<screen remap="doc"><userinput>make man</userinput></screen>
190
191 <para>
192 The test suite can be run in parallel mode. To run the test suite, issue:
193 <command>make test -k |&amp; tee test.log</command>. If some test
194 fails, the list of failed tests can be shown via
195 <command>grep '^not ok' test.log | grep -v TODO</command>.
196 <!-- It looks like I'd misdiagnosed the issue. -->
197 <!--phrase revision='systemd'>One test named <literal>start and stop
198 Linux/systemd maintenance</literal> is known to fail if the current
199 login session is not started after rebuilding
200 <xref linkend='systemd'/> with <xref linkend='linux-pam'/>
201 support, or it's a SSH session but the SSH server is not configured
202 with <option>UsePAM</option> enabled.</phrase-->
203 </para>
204
205 <para>
206 Now, as the <systemitem class="username">root</systemitem>
207 user:
208 </para>
209
210<screen role="root"><userinput>make perllibdir=/usr/lib/perl5/&lfs-perl-version;/site_perl install</userinput></screen>
211
212<!-- ==== Method 1 for docs ====== -->
213 <bridgehead renderas="sect3">If you created the man pages and/or html docs</bridgehead>
214
215 <para>
216 Install the man pages as the
217 <systemitem class="username">root</systemitem> user:
218 </para>
219
220<screen role="root"
221 remap="doc"><userinput>make install-man</userinput></screen>
222
223 <para>
224 Install the html docs as the
225 <systemitem class="username">root</systemitem> user:
226 </para>
227
228<screen role="root"
229 remap="doc"><userinput>make htmldir=/usr/share/doc/git-&git-version; install-html</userinput></screen>
230
231<!-- ==== Method 2 for docs ====== -->
232 <bridgehead renderas="sect3">If you downloaded the man pages and/or html docs</bridgehead>
233
234 <para>
235 If you downloaded the man pages untar them as the
236 <systemitem class="username">root</systemitem> user:
237 </para>
238
239<screen role="root"><userinput>tar -xf ../git-manpages-&git-version;.tar.xz \
240 -C /usr/share/man --no-same-owner --no-overwrite-dir</userinput></screen>
241
242 <para>
243 If you downloaded the html docs untar them as the
244 <systemitem class="username">root</systemitem> user:
245 </para>
246
247<screen role="root"><userinput>mkdir -vp /usr/share/doc/git-&git-version; &amp;&amp;
248tar -xf ../git-htmldocs-&git-version;.tar.xz \
249 -C /usr/share/doc/git-&git-version; --no-same-owner --no-overwrite-dir &amp;&amp;
250
251find /usr/share/doc/git-&git-version; -type d -exec chmod 755 {} \; &amp;&amp;
252find /usr/share/doc/git-&git-version; -type f -exec chmod 644 {} \;</userinput></screen>
253
254<!-- ==== Reorganize docs ====== -->
255 <bridgehead renderas="sect3">Reorganize text and html in the html-docs (both methods)</bridgehead>
256
257 <para>
258 For both methods, the html-docs include a lot of plain text files.
259 Reorganize the files as the
260 <systemitem class="username">root</systemitem> user:
261 </para>
262
263<screen role="root"><userinput>mkdir -vp /usr/share/doc/git-&git-version;/man-pages/{html,text} &amp;&amp;
264mv /usr/share/doc/git-&git-version;/{git*.txt,man-pages/text} &amp;&amp;
265mv /usr/share/doc/git-&git-version;/{git*.,index.,man-pages/}html &amp;&amp;
266
267mkdir -vp /usr/share/doc/git-&git-version;/technical/{html,text} &amp;&amp;
268mv /usr/share/doc/git-&git-version;/technical/{*.txt,text} &amp;&amp;
269mv /usr/share/doc/git-&git-version;/technical/{*.,}html &amp;&amp;
270
271mkdir -vp /usr/share/doc/git-&git-version;/howto/{html,text} &amp;&amp;
272mv /usr/share/doc/git-&git-version;/howto/{*.txt,text} &amp;&amp;
273mv /usr/share/doc/git-&git-version;/howto/{*.,}html &amp;&amp;
274
275sed -i '/^&lt;a href=/s|howto/|&amp;html/|' /usr/share/doc/git-&git-version;/howto-index.html &amp;&amp;
276sed -i '/^\* link:/s|howto/|&amp;html/|' /usr/share/doc/git-&git-version;/howto-index.txt</userinput></screen>
277
278 </sect2>
279
280 <sect2 role="commands">
281 <title>Command Explanations</title>
282
283 <para>
284 <parameter>--with-gitconfig=/etc/gitconfig</parameter>: This sets
285 <filename>/etc/gitconfig</filename> as the file that stores
286 the default, system wide, <application>Git</application>
287 settings.
288 </para>
289
290 <para>
291 <parameter>--with-python=python3</parameter>: Use this switch to use
292 <application>Python 3</application>, instead of the EOL'ed
293 <application>Python 2</application>. Python is used for the
294 <command>git p4</command> interface to Perforce repositories,
295 and also used in some tests.
296 </para>
297
298 <para>
299 <option>--with-libpcre2</option>: Use this switch if
300 <application>PCRE2</application> is installed.
301 </para>
302
303 <para>
304 <command>tar -xf ../git-manpages-&git-version;.tar.gz -C
305 /usr/share/man --no-same-owner</command>: This untars
306 <filename>git-manpages-&git-version;.tar.gz</filename>. The
307 <option>-C</option> option makes tar change directory to
308 <filename class="directory">/usr/share/man</filename> before
309 it starts to decompress the docs. The <option>--no-same-owner</option>
310 option stops tar from preserving the user and group details of the
311 files. This is useful as that user or group may not exist on your
312 system; this could (potentially) be a security risk.
313 </para>
314
315 <para>
316 <command>mv /usr/share/doc/git-&git-version; ...</command>: These
317 commands move some of the files into subfolders to make it easier to sort
318 through the docs and find what you're looking for.
319 </para>
320
321 <para>
322 <command>find ... chmod ...</command>: These commands correct the
323 permissions in the shipped documentation tar file.
324 </para>
325
326 </sect2>
327
328 <sect2 role="configuration">
329 <title>Configuring Git</title>
330
331 <sect3 id="git-config">
332 <title>Config Files</title>
333 <para>
334 <filename>~/.gitconfig</filename> and
335 <filename>/etc/gitconfig</filename>
336 </para>
337
338 <indexterm zone="git git-config">
339 <primary sortas="e-AA.gitconfig">~/.gitconfig</primary>
340 </indexterm>
341
342 <indexterm zone="git git-config">
343 <primary sortas="e-etc-gitconfig">/etc/gitconfig</primary>
344 </indexterm>
345
346 </sect3>
347
348 </sect2>
349
350 <sect2 role="content">
351 <title>Contents</title>
352
353 <segmentedlist>
354 <segtitle>Installed Programs</segtitle>
355 <segtitle>Installed Libraries</segtitle>
356 <segtitle>Installed Directories</segtitle>
357
358 <seglistitem>
359 <seg>
360 git, git-receive-pack, git-upload-archive, and
361 git-upload-pack (hardlinked to each
362 other), git-cvsserver, git-shell, gitk, and scalar
363 </seg>
364 <seg>
365 None
366 </seg>
367 <seg>
368 /usr/libexec/git-core,
369 /usr/lib/perl5/&lfs-perl-version;/site_perl/Git, and
370 /usr/share/{doc/git-&git-version;,git-core,git-gui,gitk,gitweb}
371 </seg>
372 </seglistitem>
373 </segmentedlist>
374
375 <variablelist>
376 <bridgehead renderas="sect3">Short Descriptions</bridgehead>
377 <?dbfo list-presentation="list"?>
378 <?dbhtml list-presentation="table"?>
379
380 <varlistentry id="git-prog">
381 <term><command>git</command></term>
382 <listitem>
383 <para>
384 is the stupid content tracker
385 </para>
386 <indexterm zone="git git-prog">
387 <primary sortas="b-git">git</primary>
388 </indexterm>
389 </listitem>
390 </varlistentry>
391
392 <varlistentry id="git-cvsserver">
393 <term><command>git-cvsserver</command></term>
394 <listitem>
395 <para>
396 is a CVS server emulator for <application>Git</application>
397 </para>
398 <indexterm zone="git git-cvsserver">
399 <primary sortas="b-git-cvsserver">git-cvsserver</primary>
400 </indexterm>
401 </listitem>
402 </varlistentry>
403
404 <varlistentry id="gitk">
405 <term><command>gitk</command></term>
406 <listitem>
407 <para>
408 is a graphical <application>Git</application> repository browser
409 (needs <xref linkend="tk"/>)
410 </para>
411 <indexterm zone="git gitk">
412 <primary sortas="b-gitk">gitk</primary>
413 </indexterm>
414 </listitem>
415 </varlistentry>
416
417 <varlistentry id="git-receive-pack">
418 <term><command>git-receive-pack</command></term>
419 <listitem>
420 <para>
421 is invoked by <command>git send-pack</command> and updates the
422 repository with the information fed from the remote end
423 </para>
424 <indexterm zone="git git-receive-pack">
425 <primary sortas="b-git-receive-pack">git-receive-pack</primary>
426 </indexterm>
427 </listitem>
428 </varlistentry>
429
430 <varlistentry id="git-shell">
431 <term><command>git-shell</command></term>
432 <listitem>
433 <para>
434 is a login shell for SSH accounts to provide restricted Git
435 access
436 </para>
437 <indexterm zone="git git-shell">
438 <primary sortas="b-git-shell">git-shell</primary>
439 </indexterm>
440 </listitem>
441 </varlistentry>
442
443 <varlistentry id="git-upload-archive">
444 <term><command>git-upload-archive</command></term>
445 <listitem>
446 <para>
447 is invoked by <command>git archive --remote</command> and sends
448 a generated archive to the other end over the git protocol
449 </para>
450 <indexterm zone="git git-upload-archive">
451 <primary sortas="b-git-upload-archive">git-upload-archive</primary>
452 </indexterm>
453 </listitem>
454 </varlistentry>
455
456 <varlistentry id="git-upload-pack">
457 <term><command>git-upload-pack</command></term>
458 <listitem>
459 <para>
460 is invoked by <command>git fetch-pack</command>, it discovers
461 what objects the other side is missing, and sends them after
462 packing
463 </para>
464 <indexterm zone="git git-upload-pack">
465 <primary sortas="b-git-upload-pack">git-upload-pack</primary>
466 </indexterm>
467 </listitem>
468 </varlistentry>
469
470 <varlistentry id="scalar">
471 <term><command>scalar</command></term>
472 <listitem>
473 <para>
474 is a repository management tool that optimizes Git for use in
475 large repositories
476 </para>
477 <indexterm zone="git scalar">
478 <primary sortas="b-scalar">scalar</primary>
479 </indexterm>
480 </listitem>
481 </varlistentry>
482 </variablelist>
483
484 </sect2>
485
486</sect1>
Note: See TracBrowser for help on using the repository browser.