source: general/prog/git.xml@ 55af6ce

lazarus trunk
Last change on this file since 55af6ce was abfacaf, checked in by Xi Ruoyao <xry111@…>, 4 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
RevLine 
[ab4fdfc]1<?xml version="1.0" encoding="UTF-8"?>
[800f6b1]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
[8dfc5c3]7 <!ENTITY git-root "&kernel-dl;/software/scm/git" >
[a79f8e7]8
[dba6b4e0]9 <!ENTITY git-download-http "&git-root;/git-&git-version;.tar.xz">
[faa68e4a]10 <!ENTITY git-download-ftp " ">
[d370aa2]11 <!ENTITY git-md5sum "7e4eb7c45e9ba7c90fa51deeea49732f">
[6f0a3e2a]12
[b9954a86]13 <!ENTITY git-size "7.1 MB">
[feb043a]14 <!-- but people keep forgetting that an install not only needs the net build
[5d20400]15 space, it also needs the install space (or DESTDIR) -->
[d370aa2]16 <!ENTITY git-buildsize "307 MB (with downloaded documentation; add 18 MB for building docs)">
[6030130]17 <!-- With 2.23.0, there was a large increase in time for tests. Possibly disk related? -->
[25ff6d5]18 <!-- Confirmed that it is disk related.-->
[d370aa2]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)">
[800f6b1]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">
[32696a4]29 <primary sortas="a-Git">Git</primary>
[800f6b1]30 </indexterm>
31
32 <sect2 role="package">
33 <title>Introduction to Git</title>
34
[32696a4]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
[bdf19997]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
[9276b6ee]43 files, much like tools such as <xref linkend="mercurial"/>,
[32696a4]44 <application>Bazaar</application>, <xref linkend="subversion"/>,
[80106051]45 <ulink url="https://www.nongnu.org/cvs/">CVS</ulink>,
[d1c51434]46 <application>Perforce</application>, and
[32696a4]47 <application>Team Foundation Server</application>.
48 </para>
[800f6b1]49
[b9874725]50 &lfs121_checked;
[800f6b1]51
52 <bridgehead renderas="sect3">Package Information</bridgehead>
53 <itemizedlist spacing="compact">
54 <listitem>
[32696a4]55 <para>
56 Download (HTTP): <ulink url="&git-download-http;"/>
57 </para>
[800f6b1]58 </listitem>
59 <listitem>
[32696a4]60 <para>
61 Download (FTP): <ulink url="&git-download-ftp;"/>
62 </para>
[800f6b1]63 </listitem>
64 <listitem>
[32696a4]65 <para>
66 Download MD5 sum: &git-md5sum;
67 </para>
[800f6b1]68 </listitem>
69 <listitem>
[32696a4]70 <para>
71 Download size: &git-size;
72 </para>
[800f6b1]73 </listitem>
74 <listitem>
[32696a4]75 <para>
76 Estimated disk space required: &git-buildsize;
77 </para>
[800f6b1]78 </listitem>
79 <listitem>
[32696a4]80 <para>
81 Estimated build time: &git-time;
82 </para>
[800f6b1]83 </listitem>
84 </itemizedlist>
85
[435934c]86 <bridgehead renderas="sect3">Additional Downloads</bridgehead>
87 <itemizedlist spacing="compact">
88 <listitem>
[32696a4]89 <para>
[a79f8e7]90 <ulink url="&git-root;/git-manpages-&git-version;.tar.xz">
[7053ca8]91 &git-root;/git-manpages-&git-version;.tar.xz</ulink>
[2bbb3379]92 (not needed if you've installed <xref linkend="asciidoc"/>,
93 <xref linkend="xmlto"/>, and prefer to rebuild them)
[32696a4]94 </para>
[435934c]95 </listitem>
96 <listitem>
[32696a4]97 <para>
[a79f8e7]98 <ulink url="&git-root;/git-htmldocs-&git-version;.tar.xz">
[7053ca8]99 &git-root;/git-htmldocs-&git-version;.tar.xz</ulink>
[2bbb3379]100 and other docs (not needed if you've installed
101 <xref linkend="asciidoc"/> and want to rebuild the documentation).
[32696a4]102 </para>
[435934c]103 </listitem>
104 </itemizedlist>
105
[800f6b1]106 <bridgehead renderas="sect3">Git Dependencies</bridgehead>
107
108 <bridgehead renderas="sect4">Recommended</bridgehead>
[1b2d41b]109 <para role="recommended">
[4f8ca94]110 <xref linkend="curl"/> (needed to use <application>Git</application> over
111 http, https, ftp or ftps)
[1b2d41b]112 </para>
[800f6b1]113
114 <bridgehead renderas="sect4">Optional</bridgehead>
[1b2d41b]115 <para role="optional">
[d98ca85]116 <xref linkend="apache"/> (for some tests),
[0b50bdd1]117 <xref role='runtime' linkend='fcron'/> (runtime, for scheduling
118 <command>git maintenance</command> jobs),
[6e5b09c0]119 <xref role="runtime" linkend="gnupg2"/> (runtime, may be used to sign
[f5524b6]120 <application>Git</application> commits or tags, or verify the signatures
[6e5b09c0]121 of them),
[4992564]122 <xref role="runtime" linkend="openssh"/> (runtime, needed to use
123 <application>Git</application> over ssh),
[abfacaf]124 <xref linkend="pcre2"/>,
[f1c6a8a]125 <xref role="runtime" linkend="subversion"/> with Perl bindings
126 (runtime, for <command>git svn</command>),
[572553b]127 <xref role="runtime" linkend="tk"/>
128 (gitk, a simple <application>Git</application>
[bc0c417]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>
[694f194]133 (both runtime, for <command>git send-email</command>),
[0b50bdd1]134 <phrase revision='sysv'>and </phrase><xref
135 linkend='perl-io-socket-ssl'/> (runtime, for
[694f194]136 <command>git send-email</command> to connect to a SMTP server with
[dce8206]137 SSL encryption)<phrase revision='systemd'>, and
138 <xref role='runtime' linkend='systemd'/>
[0b50bdd1]139 (runtime, rebuilt with <xref role='nodep' linkend='linux-pam'/>, for
140 scheduling <command>git maintenance</command> jobs)</phrase>
[1b2d41b]141 </para>
142
[28814022]143 <bridgehead renderas="sect4">Optional (to create the man pages, html docs
144 and other docs)</bridgehead>
[464f030]145 <para role="optional">
[fad8db2]146 <xref linkend="xmlto"/> and
[b1c3841]147 <xref linkend="asciidoc"/>
148 <!-- or xref linkend="asciidoctor", doesn't work now because it needs docbook-xsl-ns -->,
149 and also
[17aa21c]150 <ulink url="https://dblatex.sourceforge.net/">dblatex</ulink>
[28814022]151 (for the PDF version of the user manual), and
[17aa21c]152 <ulink url="https://docbook2x.sourceforge.net/">docbook2x</ulink> to
[28814022]153 create info pages
[1b2d41b]154 </para>
[800f6b1]155
156 </sect2>
157
158 <sect2 role="installation">
159 <title>Installation of Git</title>
160
[32696a4]161 <para>
162 Install <application>Git</application> by running the following
163 commands:
164 </para>
[800f6b1]165
[7e81406]166<screen><userinput>./configure --prefix=/usr \
167 --with-gitconfig=/etc/gitconfig \
168 --with-python=python3 &amp;&amp;
[800f6b1]169make</userinput></screen>
170
[6e08e9c0]171 <para>
172 You can build the man pages and/or html docs, or
[3ec1600]173 use downloaded ones. If you choose to build them, use the next two
[6e08e9c0]174 instructions.
175 </para>
176
[32696a4]177 <para>
[9faa23b6]178 If you have installed <xref linkend="asciidoc"/> you can
[32696a4]179 create the html version of the man pages and other docs:
180 </para>
[800f6b1]181
[a42c273]182<screen remap="doc"><userinput>make html</userinput></screen>
[800f6b1]183
[32696a4]184 <para>
[9faa23b6]185 If you have installed <xref linkend="asciidoc"/> and
[32696a4]186 <xref linkend="xmlto"/> you can create the man pages:
187 </para>
[435934c]188
[a42c273]189<screen remap="doc"><userinput>make man</userinput></screen>
[435934c]190
[32696a4]191 <para>
[28814022]192 The test suite can be run in parallel mode. To run the test suite, issue:
[0b50bdd1]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>.
[d9142ec4]196 <!-- It looks like I'd misdiagnosed the issue. -->
197 <!--phrase revision='systemd'>One test named <literal>start and stop
[0b50bdd1]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
[d9142ec4]202 with <option>UsePAM</option> enabled.</phrase-->
[32696a4]203 </para>
[800f6b1]204
[32696a4]205 <para>
206 Now, as the <systemitem class="username">root</systemitem>
207 user:
208 </para>
[800f6b1]209
[eacfe160]210<screen role="root"><userinput>make perllibdir=/usr/lib/perl5/&lfs-perl-version;/site_perl install</userinput></screen>
[800f6b1]211
[6e08e9c0]212<!-- ==== Method 1 for docs ====== -->
213 <bridgehead renderas="sect3">If you created the man pages and/or html docs</bridgehead>
214
[32696a4]215 <para>
[3ec1600]216 Install the man pages as the
[32696a4]217 <systemitem class="username">root</systemitem> user:
218 </para>
[800f6b1]219
[06908bf6]220<screen role="root"
221 remap="doc"><userinput>make install-man</userinput></screen>
[435934c]222
[32696a4]223 <para>
[3ec1600]224 Install the html docs as the
[32696a4]225 <systemitem class="username">root</systemitem> user:
226 </para>
[435934c]227
[06908bf6]228<screen role="root"
229 remap="doc"><userinput>make htmldir=/usr/share/doc/git-&git-version; install-html</userinput></screen>
[6e08e9c0]230
231<!-- ==== Method 2 for docs ====== -->
232 <bridgehead renderas="sect3">If you downloaded the man pages and/or html docs</bridgehead>
[435934c]233
[32696a4]234 <para>
[6e08e9c0]235 If you downloaded the man pages untar them as the
[32696a4]236 <systemitem class="username">root</systemitem> user:
237 </para>
[435934c]238
[64419b7]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>
[435934c]241
[32696a4]242 <para>
243 If you downloaded the html docs untar them as the
244 <systemitem class="username">root</systemitem> user:
245 </para>
[435934c]246
[78a00a4e]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;
[0524804]250
[78a00a4e]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>
[c4ab33b5]253
[6e08e9c0]254<!-- ==== Reorganize docs ====== -->
[28814022]255 <bridgehead renderas="sect3">Reorganize text and html in the html-docs (both methods)</bridgehead>
[6e08e9c0]256
257 <para>
[28814022]258 For both methods, the html-docs include a lot of plain text files.
259 Reorganize the files as the
[6e08e9c0]260 <systemitem class="username">root</systemitem> user:
261 </para>
262
[78a00a4e]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;
[64419b7]266
[78a00a4e]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;
[6da25cc8]273mv /usr/share/doc/git-&git-version;/howto/{*.,}html &amp;&amp;
274
[d86a91f]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>
[32696a4]277
[800f6b1]278 </sect2>
279
280 <sect2 role="commands">
281 <title>Command Explanations</title>
282
[5e5a8d5]283 <para>
[35943a41]284 <parameter>--with-gitconfig=/etc/gitconfig</parameter>: This sets
[5e5a8d5]285 <filename>/etc/gitconfig</filename> as the file that stores
286 the default, system wide, <application>Git</application>
287 settings.
288 </para>
289
[32696a4]290 <para>
[8ff2771]291 <parameter>--with-python=python3</parameter>: Use this switch to use
[7e81406]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.
[32696a4]296 </para>
[435934c]297
[32696a4]298 <para>
[d86a91f]299 <option>--with-libpcre2</option>: Use this switch if
[abfacaf]300 <application>PCRE2</application> is installed.
[32696a4]301 </para>
[0524804]302
[32696a4]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>
[0524804]314
[32696a4]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>
[435934c]320
[c4ab33b5]321 <para>
[49ee8357]322 <command>find ... chmod ...</command>: These commands correct the
[c4ab33b5]323 permissions in the shipped documentation tar file.
324 </para>
325
[800f6b1]326 </sect2>
327
328 <sect2 role="configuration">
329 <title>Configuring Git</title>
330
331 <sect3 id="git-config">
332 <title>Config Files</title>
[32696a4]333 <para>
334 <filename>~/.gitconfig</filename> and
335 <filename>/etc/gitconfig</filename>
336 </para>
[800f6b1]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>
[32696a4]345
[800f6b1]346 </sect3>
347
348 </sect2>
349
350 <sect2 role="content">
351 <title>Contents</title>
352
353 <segmentedlist>
354 <segtitle>Installed Programs</segtitle>
[c3c56b2]355 <segtitle>Installed Libraries</segtitle>
[800f6b1]356 <segtitle>Installed Directories</segtitle>
357
358 <seglistitem>
[32696a4]359 <seg>
[21b1ead]360 git, git-receive-pack, git-upload-archive, and
361 git-upload-pack (hardlinked to each
[be5298b4]362 other), git-cvsserver, git-shell, gitk, and scalar
[32696a4]363 </seg>
364 <seg>
365 None
366 </seg>
367 <seg>
[72d9cebb]368 /usr/libexec/git-core,
369 /usr/lib/perl5/&lfs-perl-version;/site_perl/Git, and
[5a04ffa]370 /usr/share/{doc/git-&git-version;,git-core,git-gui,gitk,gitweb}
[32696a4]371 </seg>
[800f6b1]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>
[32696a4]383 <para>
[4c24eb0a]384 is the stupid content tracker
[32696a4]385 </para>
[800f6b1]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>
[32696a4]395 <para>
[4c24eb0a]396 is a CVS server emulator for <application>Git</application>
[32696a4]397 </para>
[800f6b1]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>
[32696a4]407 <para>
[a79f8e7]408 is a graphical <application>Git</application> repository browser
[4c24eb0a]409 (needs <xref linkend="tk"/>)
[32696a4]410 </para>
[800f6b1]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>
[32696a4]420 <para>
421 is invoked by <command>git send-pack</command> and updates the
[4c24eb0a]422 repository with the information fed from the remote end
[32696a4]423 </para>
[800f6b1]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>
[32696a4]433 <para>
434 is a login shell for SSH accounts to provide restricted Git
[4c24eb0a]435 access
[32696a4]436 </para>
[800f6b1]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>
[32696a4]446 <para>
447 is invoked by <command>git archive --remote</command> and sends
[4c24eb0a]448 a generated archive to the other end over the git protocol
[32696a4]449 </para>
[800f6b1]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>
[32696a4]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
[4c24eb0a]462 packing
[32696a4]463 </para>
[800f6b1]464 <indexterm zone="git git-upload-pack">
465 <primary sortas="b-git-upload-pack">git-upload-pack</primary>
466 </indexterm>
467 </listitem>
468 </varlistentry>
[32696a4]469
[be5298b4]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>
[800f6b1]482 </variablelist>
[32696a4]483
[800f6b1]484 </sect2>
[32696a4]485
[800f6b1]486</sect1>
Note: See TracBrowser for help on using the repository browser.