|
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