|
5 | 5 | Система контроля версий -- это система, записывающая изменения в файл или набор файлов в течение времени и позволяющая вернуться позже к определённой версии. |
6 | 6 | Для контроля версий файлов в этой книге в качестве примера будет использоваться исходный код программного обеспечения, хотя на самом деле вы можете использовать контроль версий практически для любых типов файлов. |
7 | 7 |
|
8 | | -Если вы графический или web-дизайнер и хотите сохранить каждую версию изображения или макета (скорее всего, захотите), система контроля версий (далее СКВ) -- как раз то, что нужно. |
| 8 | +Если вы графический или web-дизайнер и хотите сохранить каждую версию изображения или макета (скорее всего, захотите), система контроля версий (далее VCS) -- как раз то, что нужно. |
9 | 9 | Она позволяет вернуть файлы к состоянию, в котором они были до изменений, вернуть проект к исходному состоянию, увидеть изменения, увидеть, кто последний менял что-то и вызвал проблему, кто поставил задачу и когда и многое другое. |
10 | | -Использование СКВ также значит в целом, что, если вы сломали что-то или потеряли файлы, вы спокойно можете всё исправить. |
| 10 | +Использование VCS также значит в целом, что, если вы сломали что-то или потеряли файлы, вы спокойно можете всё исправить. |
11 | 11 | В дополнение ко всему вы получите всё это без каких-либо дополнительных усилий. |
12 | 12 |
|
13 | 13 | ==== Локальные системы контроля версий |
|
17 | 17 | Данный подход очень распространён из-за его простоты, однако он невероятно сильно подвержен появлению ошибок. |
18 | 18 | Можно легко забыть в каком каталоге вы находитесь и случайно изменить не тот файл или скопировать не те файлы, которые вы хотели. |
19 | 19 |
|
20 | | -Для того, чтобы решить эту проблему, программисты давным-давно разработали локальные СКВ с простой базой данных, которая хранит записи о всех изменениях в файлах, осуществляя тем самым контроль ревизий. |
| 20 | +Для того, чтобы решить эту проблему, программисты давным-давно разработали локальные VCS с простой базой данных, которая хранит записи о всех изменениях в файлах, осуществляя тем самым контроль ревизий. |
21 | 21 |
|
22 | 22 | .Локальный контроль версий |
23 | 23 | image::images/local.png["Диаграмма локального контроля версий"] |
24 | 24 |
|
25 | | -Одной из популярных СКВ была система RCS, которая и сегодня распространяется со многими компьютерами. |
| 25 | +Одной из популярных VCS была система RCS, которая и сегодня распространяется со многими компьютерами. |
26 | 26 | https://www.gnu.org/software/rcs/[RCS^] хранит на диске наборы патчей (различий между файлами) в специальном формате, применяя которые она может воссоздавать состояние каждого файла в заданный момент времени. |
27 | 27 |
|
28 | 28 | ==== Централизованные системы контроля версий |
29 | 29 |
|
30 | 30 | (((контроль версий,централизованный))) |
31 | 31 | Следующая серьёзная проблема, с которой сталкиваются люди, -- это необходимость взаимодействовать с другими разработчиками. |
32 | | -Для того, чтобы разобраться с ней, были разработаны централизованные системы контроля версий (ЦСКВ). |
| 32 | +Для того, чтобы разобраться с ней, были разработаны централизованные системы контроля версий (Centralized Version Control System, далее CVCS). |
33 | 33 | Такие системы, как CVS, Subversion и Perforce, используют единственный сервер, содержащий все версии файлов, и некоторое количество клиентов, которые получают файлы из этого централизованного хранилища. (((CVS)))(((Subversion)))(((Perforce))) |
34 | | -Применение ЦСКВ являлось стандартом на протяжении многих лет. |
| 34 | +Применение CVCS являлось стандартом на протяжении многих лет. |
35 | 35 |
|
36 | 36 | .Централизованный контроль версий |
37 | 37 | image::images/centralized.png["Диаграмма централизованного контроля версий"] |
38 | 38 |
|
39 | | -Такой подход имеет множество преимуществ, особенно перед локальными СКВ. |
| 39 | +Такой подход имеет множество преимуществ, особенно перед локальными VCS. |
40 | 40 | Например, все разработчики проекта в определённой степени знают, чем занимается каждый из них. |
41 | | -Администраторы имеют полный контроль над тем, кто и что может делать, и гораздо проще администрировать ЦСКВ, чем оперировать локальными базами данных на каждом клиенте. |
| 41 | +Администраторы имеют полный контроль над тем, кто и что может делать, и гораздо проще администрировать CVCS, чем оперировать локальными базами данных на каждом клиенте. |
42 | 42 |
|
43 | 43 | Несмотря на это, данный подход тоже имеет серьёзные минусы. |
44 | 44 | Самый очевидный минус -- это единая точка отказа, представленная централизованным сервером. |
45 | 45 | Если этот сервер выйдет из строя на час, то в течение этого времени никто не сможет использовать контроль версий для сохранения изменений, над которыми работает, а также никто не сможет обмениваться этими изменениями с другими разработчиками. |
46 | 46 | Если жёсткий диск, на котором хранится центральная БД, повреждён, а своевременные бэкапы отсутствуют, вы потеряете всё -- всю историю проекта, не считая единичных снимков репозитория, которые сохранились на локальных машинах разработчиков. |
47 | | -Локальные СКВ страдают от той же самой проблемы: когда вся история проекта хранится в одном месте, вы рискуете потерять всё. |
| 47 | +Локальные VCS страдают от той же самой проблемы: когда вся история проекта хранится в одном месте, вы рискуете потерять всё. |
48 | 48 |
|
49 | 49 | ==== Распределённые системы контроля версий |
50 | 50 |
|
51 | 51 | (((контроль версий,распределённый))) |
52 | | -Здесь в игру вступают распределённые системы контроля версий (РСКВ). |
53 | | -В РСКВ (таких как Git, Mercurial, Bazaar или Darcs) клиенты не просто скачивают снимок всех файлов (состояние файлов на определённый момент времени) -- они полностью копируют репозиторий. |
| 52 | +Здесь в игру вступают распределённые системы контроля версий (Distributed Version Control System, далее DVCS). |
| 53 | +В DVCS (таких как Git, Mercurial, Bazaar или Darcs) клиенты не просто скачивают снимок всех файлов (состояние файлов на определённый момент времени) -- они полностью копируют репозиторий. |
54 | 54 | В этом случае, если один из серверов, через который разработчики обменивались данными, умрёт, любой клиентский репозиторий может быть скопирован на другой сервер для продолжения работы. |
55 | 55 | Каждая копия репозитория является полным бэкапом всех данных. |
56 | 56 |
|
57 | 57 | .Распределённый контроль версий |
58 | 58 | image::images/distributed.png["Диаграмма распределённого контроля версий"] |
59 | 59 |
|
60 | | -Более того, многие РСКВ могут одновременно взаимодействовать с несколькими удалёнными репозиториями, благодаря этому вы можете работать с различными группами людей, применяя различные подходы единовременно в рамках одного проекта. |
| 60 | +Более того, многие DVCS могут одновременно взаимодействовать с несколькими удалёнными репозиториями, благодаря этому вы можете работать с различными группами людей, применяя различные подходы единовременно в рамках одного проекта. |
61 | 61 | Это позволяет применять сразу несколько подходов в разработке, например, иерархические модели, что совершенно невозможно в централизованных системах. |
0 commit comments