Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«ΠžΡΠ½ΠΎΠ²Ρ‹ программирования Π² LinuxΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 172

Автор ΠœΡΡ‚ΡŒΡŽ НСйл

done

$

ΠžΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ Ρ„Π°ΠΉΠ» Π² соотвСтствии с ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΌ Π΄Π°Π»Π΅Π΅ ΠΊΠΎΠ΄ΠΎΠΌ:

#include <stdlib.h>

#include <stdio.h>

/*

Β Π­Ρ‚ΠΎ Π²Π°ΠΆΠ½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» для управлСния Π΄Π°Π½Π½Ρ‹ΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ.

Β Π’ Π½Π΅ΠΌ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° каноничСская ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° "Hello World".

Β Filename: $RCSfile$

*/

static char *RCSinfo = "$Id$";

int main() {

Β printf ("Hello World\n");

Β printf("This is an extra line added later\n");

Β printf("This file is under RCS control. Its ID is\n%s\n", RCSinfo);

Β exit(EXIT_SUCCESS);

}

Π’Π΅ΠΏΠ΅Ρ€ΡŒ сохранитС эту Π²Π΅Ρ€ΡΠΈΡŽ ΠΈ посмотритС, ΠΊΠ°ΠΊ RCS управляСт ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ строками:

$ <b>ci important.с</b>

important.с,v &lt;-- important.c

new revision: 1.3;

previous revision: 1.2

enter log message, terminated with single '.' or end of file:

&gt;&gt; <b>Added $RCSfile$ and $Id$ strings</b>

&gt;&gt; <b>.</b>

done

$

Если заглянСтС Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³, Ρ‚ΠΎ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ RCS-Ρ„Π°ΠΉΠ».

$ <b>ls -l</b>

-r--r--r-- 1 neil users 907 2007-07-09 08:07 important.с,v

$

Если Π²Ρ‹ ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Ρ‚Π΅ Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ исходного Ρ„Π°ΠΉΠ»Π° (с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹

со
) ΠΈ просмотритС Π΅Π³ΠΎ, Ρ‚ΠΎ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ макросы раскрыты:

#include &lt;stdlib.h&gt;

#include &lt;stdio.h&gt;

/*

Β Π­Ρ‚ΠΎ Π²Π°ΠΆΠ½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» для управлСния Π΄Π°Π½Π½Ρ‹ΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ.

Β Π’ Π½Π΅ΠΌ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° каноничСская ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° &quot;Hello World&quot;.

 Filename: $RCSfile: important.с,v $

<i>*/</i>

static char *RCSinfo = &quot;$Id: important.c,v 1.3 2007/07/09. 07:07:08 neil Exp $&quot;;

int main() {

Β printf(&quot;Hello World\n&quot;);

Β printf(&quot;This is an extra line added later\n&quot;);

Β printf(&quot;This file is under RCS control. Its ID is\n%s\n&quot;, RCSinfo);

Β exit(EXIT_SUCCESS);

}

А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡƒΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ 9.6.

Π£ΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ 9.6. GNU-вСрсия
make
с RCS

Π£ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹

make
вСрсии GNU Π΅ΡΡ‚ΡŒ нСсколько встроСнных ΠΏΡ€Π°Π²ΠΈΠ» для управлСния RCS-Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ. Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ исходным Ρ„Π°ΠΉΠ»ΠΎΠΌ.

$ <b>rm -f important.с</b>

$ <b>make important</b>

со important.с,v important.c

important.с,v --&gt; important.c

revision 1.3

done

сс -c important.c -o important.о сс important.о -о important

rm important.о important.с

$

Как это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚

Π£ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹

make
Π΅ΡΡ‚ΡŒ стандартноС ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ для создания Ρ„Π°ΠΉΠ»Π° Π±Π΅Π· Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ компиляции Ρ„Π°ΠΉΠ»Π° с Ρ‚Π΅ΠΌ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ с. Π’Ρ‚ΠΎΡ€ΠΎΠ΅ стандартноС ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅Ρ‚
make
ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» important.c ΠΈΠ· Ρ„Π°ΠΉΠ»Π° important.c,v, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ RCS. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π½Π΅Ρ‚ Ρ„Π°ΠΉΠ»Π° с ΠΈΠΌΠ΅Π½Π΅ΠΌ important.c, ΠΊΠΎΠΌΠ°Π½Π΄Π°
make
создала Ρ„Π°ΠΉΠ» с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ с, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ² послСднюю Π²Π΅Ρ€ΡΠΈΡŽ Ρ„Π°ΠΉΠ»Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹
со
. ПослС компиляции ΠΎΠ½Π° Π½Π°Π²Π΅Π»Π° порядок, ΡƒΠ΄Π°Π»ΠΈΠ² Ρ„Π°ΠΉΠ» important.c.

Команда ident

ΠšΠΎΠΌΠ°Π½Π΄Ρƒ

ident
ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ для поиска вСрсии Ρ„Π°ΠΉΠ»Π°, которая содСрТит строку
$Id$
. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π²Ρ‹ сохранили строку Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΎΠ½Π° появляСтся ΠΈ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰Π΅ΠΌ исполняСмом Ρ„Π°ΠΉΠ»Π΅. ΠœΠΎΠΆΠ΅Ρ‚ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ, Ссли Π²Ρ‹ Π²ΠΊΠ»ΡŽΡ‡ΠΈΠ»ΠΈ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ строки Π² исходный ΠΊΠΎΠ΄, Π½ΠΎ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΎΠ±Ρ€Π°Ρ‰Π°Π΅Ρ‚Π΅ΡΡŒ ΠΊ Π½ΠΈΠΌ, компилятор ΠΈΠ· сообраТСний ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΡƒΠ΄Π°Π»ΠΈΡ‚ ΠΈΡ…. Π­Ρ‚Ρƒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΠΎΠΉΡ‚ΠΈ, Π΄ΠΎΠ±Π°Π²ΠΈΠ² Π² исходный ΠΊΠΎΠ΄ нСсколько Ρ„ΠΈΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΉ ΠΊ Π½ΠΈΠΌ, хотя ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ компиляторов Π΄Π΅Π»Π°Ρ‚ΡŒ это становится всС Ρ‚Ρ€ΡƒΠ΄Π½Π΅Π΅!

Π”Π°Π»Π΅Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ простой ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ

ident
для Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ RCS-вСрсии исходного Ρ„Π°ΠΉΠ»Π°, примСняСмого для формирования исполняСмого Ρ„Π°ΠΉΠ»Π° (ΡƒΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ 9.7).

Π£ΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ 9.7. Команда
ident

$ <b>./important</b>

Hello World

This is an extra line added later

This file is under RCS control. Its ID is

$Id: important.c,v 1.3 2007/07/09 07:07:08 neil Exp $

$ <b>ident important</b>

important:

$Id: important.c,v 1.3 2007/07/09 07 :07 :08 neil Exp $

$

Как это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚

Выполняя ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, Π²Ρ‹ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚Π΅ строку, Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΡƒΡŽ Π² исполняСмый Ρ„Π°ΠΉΠ». Π”Π°Π»Π΅Π΅ Π²Ρ‹ дСмонстрируСтС, ΠΊΠ°ΠΊ ΠΊΠΎΠΌΠ°Π½Π΄Π°

ident
ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ ΠΈΠ· исполняСмого Ρ„Π°ΠΉΠ»Π° строки Π²ΠΈΠ΄Π°
$Id$
.

Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ примСнСния RCS ΠΈ строк Π²ΠΈΠ΄Π°

$Id$
, Π²ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΡ‹Ρ… Π² исполняСмыС Ρ„Π°ΠΉΠ»Ρ‹, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠΎΡ‰Π½Ρ‹ΠΌ срСдством опрСдСлСния вСрсии Ρ„Π°ΠΉΠ»Π°, содСрТащСй ΠΎΡˆΠΈΠ±ΠΊΡƒ, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ сообщил ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ. RCS-Ρ„Π°ΠΉΠ»Ρ‹ (ΠΈΠ»ΠΈ SCCS) ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΊΠ°ΠΊ Ρ‡Π°ΡΡ‚ΡŒ срСдства отслСТивания Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… сообщаСтся, ΠΈ способов ΠΈΡ… устранСния. Если Π²Ρ‹ ΠΏΡ€ΠΎΠ΄Π°Π΅Ρ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ ΠΎΡ‚Π΄Π°Π΅Ρ‚Π΅ Π΅Π³ΠΎ бСсплатно, ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ измСнилось ΠΌΠ΅ΠΆΠ΄Ρƒ двумя Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½Π½Ρ‹ΠΌΠΈ вСрсиями.