Путешествие во времени вместе с Subversion

Как уже было сказано в «Правки», правка представляет собой «фотографию» хранилища в конкретный момент времени. Однако то, что делает Subversion — или любую другую систему управления версиями — по настоящему полезной заключается не в том, что она хранит все версии файлов и директорий. Полезность заключается в том, что вы реально можете что-то делать с этими старыми версиями! А для того, чтобы совершать подобные путешествия во времени, нужен механизм идентификации этих фотографий.

Номера правок в Subversion довольно-таки простая штука — обычные монотонно увеличивающиеся целые числа. При создании хранилища Subversion, оно начинает свое существование с правки 0 и каждая последующая фиксация увеличивает номер правки на единицу. Subversion не прячет эти номера — они являются неотъемлемой частью истории версионированной информации. К примеру, после выполнения фиксации клиент Subversion информирует вас о новом номере правки:

$ svn commit --message "Corrected number of cheese slices."
Sending        sandwich.txt
Transmitting file data .
Committed revision 3.

В будущем, в любой момент времени, если вам нужно будет сослаться на эту правку сделать это можно обратившись к ней как к «3». Некоторые причины, по которым может возникнуть такая необходимость, будут приведены в этой главе позже.

Клиент для командной строки svn предлагает на выбор две опции для указания правок, которые вы хотите использовать. Более общей из них является --revision (-r) которая принимает в качестве параметра как одиночный указатель правки (-r REV) так и пару правок, разделенную двоеточием (-r REV1:REV2). Второй вариант используется указания диапазона правок, что в свою очередь полезно для команд, сравнивающих два снимка или обрабатывающих включительно все правки между двумя указанными пределами.

В Subversion 1.4 была введена вторая опция для указания диапазона правок --change (-c). Эта опция является просто сокращением для указания диапазона правок, границами которого являются последовательные целые числа. Другими словами, -cREV является тем же самым, что и -r REV-1:REV. Кроме того, так же можно просто указать реверсивный диапазон поместив дефис перед номером правки, -c -REV.