Освойте системы контроля версий

Если у вас есть пара дней на то, чтобы освоить один какой-нибудь продвинутый инструмент из мира технарей, освойте системы контроля версий (Mercurial или Git – под Windows я точно советую Mercurial). О программистах я даже не говорю, но если вы пишете книги, переводите (тем более вместе с другими), храните какие-то заметки, короче говоря, работаете с текстом, регулярно обновляя его, вы ещё этого не знаете, но вы без Mercurial как без рук.

Что скрывается за страшными словами “система контроля версий”?

Вы ставите на компьютер специальную программу, TortoiseHg.

Щёлкаете правой клавишей по папке – “Создать репозиторий”.

Дальше вы кладёте в эту папку какие-то текстовые файлы – например, исходники программы или книгу, которую пишете. И каждый раз, когда вы что-то в них исправили, щёлкаете по папке правой клавишей и говорите “Commit”. И пишете пояснение: “Переписал драку героя с инопланетянами”.

Через некоторое время вам кажется, что прежняя драка с инопланетянами была лучше. Вы щёлкаете по папке правой клавишей и говорите: “История изменений”. Программа показывает вам, каким был ваш текст вчера, позавчера, в самом начале, и как он менялся. Как у страницы в Википедии. К любой версии можно вернуться.

(Но это не всё.)

Но это не всё. Пока вы переписывали драку с инопланетянами, ваш редактор у себя дома исправлял по всему тексту орфографические ошибки. Если вы пользуетесь чем-то вроде Dropbox, то у вас теперь два файла и нужно вручную копировать куски из одного в другой, и дай бог, ничего не забыть.

С Mercurial всё проще. Во-первых, он показывает вам, что поменялось в каждом варианте. Во-вторых, он сам умеет их объединять. Вы щёлкаете правой клавишей по папке, говорите “Отправить на сервер”. Редактор у себя дома щёлкает по своей папке, говорит “Получить с сервера”. И видит, что от последней версии на сервере растут два хвоста: ваш и его. Он щёлкает по вашему, выбирает “совместить” и Mercurial сам совмещает правки. На случай, если он сам не сможет, он предложит вам – подсветив каждое разногласие и дав выбрать.

Даже если что-то совместить не получилось, или редактор напортачил, всегда можно вернуться к любой из прошлых версий. Можно посмотреть, какие правки внёс редактор. Системы контроля версий снимают с души огромные камни:

  • Камень “а вдруг я изменю, а получится хуже”. Если получится хуже, вернётесь к старой версии.
  • Камень “а вдруг я не все чужие исправления заметил”. Mercurial показывает все исправления.
  • Камень “сейчас я поправлю, а он там какую-нибудь старую версию редактирует и всё затрётся”. Mercurial следит, объединяет, и главное – никогда не даст затереть. Однажды внесённая в него версия остаётся в нём навсегда.

Мало того!

Системы контроля версий дают работать сразу над разными вариантами развития. Вы написали так, товарищ по-другому, не обязательно сливать ваши варианты сразу же. Вы можете продолжать пилить свою главу, напарник – свою, каждый со своим редактором. Когда ваши главы будут готовы, только тогда вы сольёте их воедино и из двух веток образуется общее будущее.

В одной ветке может храниться TV-версия сериала, в другой – получившаяся из неё BD-версия. Пока BD-версию допиливают, в ТВ-версии исправляют опечатки, наконец, BD-версию пора выпускать, и тут вы берёте все наборы исправлений, которые наслоили на TV-версию со времени её отпочкования, и переносите их на ветку BD.

Вы можете скопировать всю папку с файлами как обычную папку. Можете создать четыре копии, в каждой исправить что-нибудь своё, каждую закоммитить, а потом всё слить. Можете положить папку на флешку, сходить с ней к другу, вернуться и влить в домашнюю версию правки. Можете в одной копии папки отмотать на ноябрьскую версию, а в другой текущую, приделать к ноябрьской хвост.

Чтобы освоить системы контроля версий нужно некоторое время, но это такой могущественный молоток, что когда вы им овладеете, гвозди будут торчать из каждого косяка, вы будете ходить по всему дому и заколачивать, и заколачивать. А благодаря TortoiseHg / TortoiseGit, работа с ними уже стала достаточно простой даже для обычного пользователя.

Скажу, что Git по функциям не сильно отличается от Mercurial, но я советую последний, поскольку у него удобнее интерфейс под Windows. Если вы работаете из консоли, то совершенно неважно – выбирайте любой (Git сейчас популярнее).

Напишите комментарий:

Если хотите, можно залогиниться.

*