Skip to content

Commit 4d55d23

Browse files
authored
Merge pull request #200 from Menelion/fix-01-01
Правка раздела 1 главы 1
2 parents eaeea9e + 2dc94d7 commit 4d55d23

File tree

1 file changed

+61
-62
lines changed

1 file changed

+61
-62
lines changed
Lines changed: 61 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -1,62 +1,61 @@
1-
=== О системе контроля версий
2-
3-
(((version control)))
4-
Что такое "система контроля версий", и почему это важно?
5-
Система контроля версий — это система, записывающая изменения в файл или набор файлов в течение времени и позволяющая вернуться позже к определённой версии.
6-
Для контроля версий файлов в этой книге в качестве примера будет использоваться исходный код программного обеспечения, хотя на самом деле вы можете использовать контроль версий практически для любых типов файлов.
7-
8-
Если вы графический или web-дизайнер и хотите сохранить каждую версию изображения или макета (скорее всего, захотите), система контроля версий (далее СКВ) — как раз то, что нужно.
9-
Она позволяет вернуть файлы к состоянию, в котором они были до изменений, вернуть проект к исходному состоянию, увидеть изменения, увидеть, кто последний менял что-то и вызвал проблему, кто поставил задачу и когда, и многое другое.
10-
Использование СКВ также значит в целом, что, если вы сломали что-то или потеряли файлы, вы спокойно можете всё исправить.
11-
В дополнение ко всему вы получите всё это без каких-либо дополнительных усилий.
12-
13-
==== Локальные системы контроля версий
14-
15-
(((version control,local)))
16-
Многие люди в качестве метода контроля версий применяют копирование файлов в отдельную директорию (возможно даже, директорию с отметкой по времени, если они достаточно сообразительны).
17-
Данный подход очень распространён из-за его простоты, однако он невероятно сильно подвержен появлению ошибок.
18-
Можно легко забыть, в какой директории вы находитесь, и случайно изменить не тот файл или скопировать не те файлы, которые вы хотели.
19-
20-
Для того, чтобы решить эту проблему, программисты давным-давно разработали локальные СКВ с простой базой данных, которая хранит записи о всех изменениях в файлах, осуществляя тем самым контроль ревизий.
21-
22-
.Локальный контроль версий.
23-
image::images/local.png[Диаграмма локального контроля версий]
24-
25-
Одной из популярных СКВ была система RCS, которая и сегодня распространяется со многими компьютерами.
26-
Даже популярная операционная система Mac OS X предоставляет команду `rcs`, после установки Developer Tools.
27-
RCS хранит на диске наборы патчей (различий между файлами) в специальном формате, применяя которые она может воссоздавать состояние каждого файла в заданный момент времени.
28-
29-
==== Централизованные системы контроля версий
30-
31-
(((version control,centralized)))
32-
Следующая серьёзная проблема, с которой сталкиваются люди, — это необходимость взаимодействовать с другими разработчиками.
33-
Для того, чтобы разобраться с ней, были разработаны централизованные системы контроля версий (ЦСКВ).
34-
Такие системы, как: CVS, Subversion и Perforce, имеют единственный сервер, содержащий все версии файлов, и некоторое количество клиентов, которые получают файлы из этого централизованного хранилища. (((CVS)))(((Subversion)))(((Perforce)))
35-
Применение ЦСКВ являлось стандартом на протяжении многих лет.
36-
37-
.Централизованный контроль версий.
38-
image::images/centralized.png[Диаграмма централизованного контроля версий]
39-
40-
Такой подход имеет множество преимуществ, особенно перед локальными СКВ.
41-
Например, все разработчики проекта в определённой степени знают, чем занимается каждый из них.
42-
Администраторы имеют полный контроль над тем, кто и что может делать, и гораздо проще администрировать ЦСКВ, чем оперировать локальными базами данных на каждом клиенте.
43-
44-
Несмотря на это, данный подход тоже имеет серьёзные минусы.
45-
Самый очевидный минус — это единая точка отказа, представленная централизованным сервером.
46-
Если этот сервер выйдет из строя на час, то в течение этого времени никто не сможет использовать контроль версий для сохранения изменений, над которыми он работает, а также никто не сможет обмениваться этими изменениями с другими разработчиками.
47-
Если жёсткий диск, на котором хранится центральная БД, повреждён, а своевременные бэкапы отсутствуют, вы потеряете всё — всю историю проекта, не считая единичных снимков репозитория, которые сохранились на локальных машинах разработчиков.
48-
Локальные СКВ страдают от той же самой проблемы — когда вся история проекта хранится в одном месте, вы рискуете потерять всё.
49-
50-
==== Децентрализованные системы контроля версий
51-
52-
(((version control,distributed)))
53-
Здесь в игру вступают децентрализованные системы контроля версий (ДСКВ).
54-
В ДСКВ (таких как Git, Mercurial, Bazaar или Darcs), клиенты не просто скачивают снимок всех файлов (состояние файлов на определённый момент времени): они полностью копируют репозиторий.
55-
В этом случае, если один из серверов, через который разработчики обменивались данными, умрёт, любой клиентский репозиторий может быть скопирован на другой сервер для продолжения работы.
56-
Каждая копия репозитория является полным бэкапом всех данных.
57-
58-
.Децентрализованный контроль версий.
59-
image::images/distributed.png[Диаграмма распределённого контроля версий]
60-
61-
Более того, многие ДСКВ могут одновременно взаимодействовать с несколькими удалёнными репозиториями, благодаря этому вы можете работать с различными группами людей, применяя различные подходы единовременно, в рамках одного проекта.
62-
Это позволяет применять сразу несколько подходов в разработке, например, иерархические модели, что совершенно невозможно в централизованных системах.
1+
=== О системе контроля версий
2+
3+
(((version control)))
4+
Что такое «система контроля версий» и почему это важно?
5+
Система контроля версий — это система, записывающая изменения в файл или набор файлов в течение времени и позволяющая вернуться позже к определённой версии.
6+
Для контроля версий файлов в этой книге в качестве примера будет использоваться исходный код программного обеспечения, хотя на самом деле вы можете использовать контроль версий практически для любых типов файлов.
7+
8+
Если вы графический или web-дизайнер и хотите сохранить каждую версию изображения или макета (скорее всего, захотите), система контроля версий (далее СКВ) — как раз то, что нужно.
9+
Она позволяет вернуть файлы к состоянию, в котором они были до изменений, вернуть проект к исходному состоянию, увидеть изменения, увидеть, кто последний менял что-то и вызвал проблему, кто поставил задачу и когда и многое другое.
10+
Использование СКВ также значит в целом, что, если вы сломали что-то или потеряли файлы, вы спокойно можете всё исправить.
11+
В дополнение ко всему вы получите всё это без каких-либо дополнительных усилий.
12+
13+
==== Локальные системы контроля версий
14+
15+
(((version control,local)))
16+
Многие люди в качестве метода контроля версий применяют копирование файлов в отдельную директорию (возможно даже, директорию с отметкой по времени, если они достаточно сообразительны).
17+
Данный подход очень распространён из-за его простоты, однако он невероятно сильно подвержен появлению ошибок.
18+
Можно легко забыть, в какой директории вы находитесь, и случайно изменить не тот файл или скопировать не те файлы, которые вы хотели.
19+
20+
Для того, чтобы решить эту проблему, программисты давным-давно разработали локальные СКВ с простой базой данных, которая хранит записи о всех изменениях в файлах, осуществляя тем самым контроль ревизий.
21+
22+
.Локальный контроль версий.
23+
image::images/local.png[Диаграмма локального контроля версий]
24+
25+
Одной из популярных СКВ была система RCS, которая и сегодня распространяется со многими компьютерами.
26+
RCS хранит на диске наборы патчей (различий между файлами) в специальном формате, применяя которые она может воссоздавать состояние каждого файла в заданный момент времени.
27+
28+
==== Централизованные системы контроля версий
29+
30+
(((version control,centralized)))
31+
Следующая серьёзная проблема, с которой сталкиваются люди, — это необходимость взаимодействовать с другими разработчиками.
32+
Для того, чтобы разобраться с ней, были разработаны централизованные системы контроля версий (ЦСКВ).
33+
Такие системы, как CVS, Subversion и Perforce, используют единственный сервер, содержащий все версии файлов, и некоторое количество клиентов, которые получают файлы из этого централизованного хранилища. (((CVS)))(((Subversion)))(((Perforce)))
34+
Применение ЦСКВ являлось стандартом на протяжении многих лет.
35+
36+
.Централизованный контроль версий.
37+
image::images/centralized.png[Диаграмма централизованного контроля версий]
38+
39+
Такой подход имеет множество преимуществ, особенно перед локальными СКВ.
40+
Например, все разработчики проекта в определённой степени знают, чем занимается каждый из них.
41+
Администраторы имеют полный контроль над тем, кто и что может делать, и гораздо проще администрировать ЦСКВ, чем оперировать локальными базами данных на каждом клиенте.
42+
43+
Несмотря на это, данный подход тоже имеет серьёзные минусы.
44+
Самый очевидный минус — это единая точка отказа, представленная централизованным сервером.
45+
Если этот сервер выйдет из строя на час, то в течение этого времени никто не сможет использовать контроль версий для сохранения изменений, над которыми работает, а также никто не сможет обмениваться этими изменениями с другими разработчиками.
46+
Если жёсткий диск, на котором хранится центральная БД, повреждён, а своевременные бэкапы отсутствуют, вы потеряете всё — всю историю проекта, не считая единичных снимков репозитория, которые сохранились на локальных машинах разработчиков.
47+
Локальные СКВ страдают от той же самой проблемы: когда вся история проекта хранится в одном месте, вы рискуете потерять всё.
48+
49+
==== Распределённые системы контроля версий
50+
51+
(((version control,distributed)))
52+
Здесь в игру вступают распределённые системы контроля версий (РСКВ).
53+
В РСКВ (таких как Git, Mercurial, Bazaar или Darcs) клиенты не просто скачивают снимок всех файлов (состояние файлов на определённый момент времени) — они полностью копируют репозиторий.
54+
В этом случае, если один из серверов, через который разработчики обменивались данными, умрёт, любой клиентский репозиторий может быть скопирован на другой сервер для продолжения работы.
55+
Каждая копия репозитория является полным бэкапом всех данных.
56+
57+
.Распределённый контроль версий.
58+
image::images/distributed.png[Диаграмма распределённого контроля версий]
59+
60+
Более того, многие РСКВ могут одновременно взаимодействовать с несколькими удалёнными репозиториями, благодаря этому вы можете работать с различными группами людей, применяя различные подходы единовременно в рамках одного проекта.
61+
Это позволяет применять сразу несколько подходов в разработке, например, иерархические модели, что совершенно невозможно в централизованных системах.

0 commit comments

Comments
 (0)