Предыдущий ролик Следующий ролик  

Видео урок: Внесение, получение изменений и возврат

Принципы контроля версий

Итак, у нас установлен Perforce и все инструменты для него, но в отличие от других инструментов, которые мы используем в этом курсе, Perforce работает напрямую с файловой системой, для него нет интегрированного GUI-клиента, из которого можно автоматически создавать папки и файлы. Сейчас нам нужно открыть Проводник Windows и перейти в каталог Work. Внутри него мы создадим в рабочей области каталог под названием p1.

Теперь, если мы перейдем обратно в клиент Perforce, вы еще не видите его, но как только мы нажмем Refresh, здесь появится наш каталог p1. Perforce управляет файлами, а не папками, то есть мы должны фактически создать файл для того, чтобы Perforce добавил эту папку в нашу рабочую область. Поэтому мы вернемся сюда, кликнем правой кнопкой мыши, выберем Создать - Текстовый файл и назовем его ReadMe.txt. Он не должен что-либо содержать. В нашем случае, давайте вернемся к Perforce, обновим его снова, и если мы откроем p1, то вы увидите ReadMe.txt.

Вы можете заметить, что рядом с ним есть пустой значок, который означает, что Perforce понимает, что этот файл не находится в хранилище. Чтобы добавить его в хранилище, мы кликнем по нему правой кнопкой мыши и выберем Mark for Add. Perforce может создавать различные списки ожидающих изменений. Вы можете что-то поместить в один список, еще что-то в другой список, а еще у вас будет список изменений по умолчанию. Для всего, что мы будем делать в этом курсе, мы собираемся использовать список изменений по умолчанию, так что я просто нажму Don't show this dialog again. Но вы можете создать несколько списков изменений, если вы хотите работать над какими-либо функциями и придержать изменения, не внося их, пока не будете готовы.

В нашем случае мы будем вносить изменения каждый раз, когда они будут появляться. Хорошо, теперь, когда мы отметили файл для добавления, мы можем увидеть несколько новых элементов. Прежде всего, внизу экрана вы можете увидеть то, что файл в самом деле был отмечен для добавления. На самом деле это версия этой команды для командной строки, и теперь вы можете понять, что в Perforce требуется много сложных флагов для того, чтобы просто добавить файл в хранилище. Здесь, на панели Details, вы также можете увидеть, где находится сам файл, где он будет находиться в хранилище, какое это изменение, дата и время, тип файла и то, к какому типу файла относит его Perforce.

Perforce нужно знать, является ли файл текстовым или бинарным, чтобы определить, что с ним делать при дифференциации и слиянии. Итак, у нас есть файл, он получил иконку текста и плюс, что значит, что он отмечен для добавления. Давайте продолжим и добавим его в в хранилище, нажимаем Submit. В диалоговом окне Changelist Submit мы введем Create folder p1 with ReadMe. Нажмем Submit, и теперь файл будет отмечен зеленой точкой, которая означает, что он обновлен в хранилище, и в нашем рабочем наборе находится последняя версия.

Теперь давайте добавим какой-нибудь код и разберемся с рабочим циклом в Perforce. Мы будем использовать содержимое страницы с сообщениями об ошибках из нового проекта о хайку. Это не настоящее хайку, но оно выглядит почти как хайку. Мы выберем ошибку, с которой сталкивались мы все, прежде чем начали использовать контроль версий. Опять же, мы создаем файлы с помощью Проводника Windows или нашего текстового редактора, а не Perforce. Итак, мы возвращаемся сюда, вызываем контекстное меню и выбираем создать - текстовый документ, и я назову его f1.c.

Windows вежливо просит нас убедиться, что мы создали правильный тип файла, потому что она откроет Visual Studio, когда мы дважды кликнем по нему для редактирования, и мы подтверждаем. В этом случае, в f1.c мы введем main () printf With searching comes loss, and the presence of absence, My Novel\" not found. В Visual Studio мы можем просто нажать Сохранить все, чтобы сохранить файл, и теперь мы можем вернуться в Perforce и добавить его в хранилище. Затем мы вернемся к нашей рабочей области, обновим ее еще раз, и теперь мы можем увидеть файл.

Опять же, рядом с ним находится пустая иконка, мы вызываем контекстное меню, выбираем Mark for Add, а затем нажимаем Submit и вводим Initial Commit of f1.c. Мы можем видеть все операции командной строки здесь в логах. Теперь, чтобы увидеть историю того, что мы до сих пор сделали, мы можем кликнуть правой кнопкой мыши на папке p1 в рабочей области и выбрать Folder History. Теперь вы можете увидеть ряд списков изменений, которые мы делали в этой папке.

В списке изменений 1 мы создали папку p1, добавив ReadMe. В списке изменений 2 мы выполнили первоначальную фиксацию p1. В отличие от SVN, Git и Mercurial, Perforce является блокирующей системой контроля версий, поэтому перед тем, как мы сможем изменить этот файл, мы должны извлечь его из системы. Как видите, здесь у нас есть зеленая точка, но нет ничего, что говорит нам, что мы можем изменить файл. В Perforce вы должны кликнуть по нему правой кнопкой мыши и выбрать Check Out. Вы можете также выбрать Check Out and Open, если вы хотите открыть файл с помощью инструментов по умолчанию, так что мы просто выберем Check Out and Open.

Опять же, он открывается в Visual Studio. Теперь давайте изменим My Novel на более современное сообщение об ошибке. Мы введем Website not found. Теперь мы его сохраним, выйдем из Visual Studio, и вы можете увидеть, что здесь в истории появилось ожидающее изменение для f1.c; давайте сохраним этот файл и снова внесем его в систему. Итак, еще раз, мы нажмем Submit, введем Change My Novel to Website и отправим изменение.

Теперь мы хотим просмотреть историю файла, поэтому из контекстного меню мы выбираем File History, и, так как у нас открыто окно истории, в нем мы видим историю файла. Если мы выберем обе эти строки и выберем Diff Selected, откроется инструмент дифференциации и покажет нам изменения, которые мы только что сделали. В Perforce есть такой замечательный инструмент, как Time-lapse View.

Сейчас он покажет только две разные версии, вот версия 1, вот версия 2, но если бы у нас было больше версий (мы увидим это позже) мы смогли бы увидеть, как файл изменялся с течением времени. ОК, теперь мы сделаем еще одно изменение. Опять же, мы нажмем Check Out and Open и изменим Website на Webpage, сохраним файл и выйдем из Visual Studio. И теперь мы выберем Diff Аgainst Have Revision, имеется в виду против последней версии из хранилища, и с этой стороны вы можете увидеть, что находится в хранилище. На этой стороне с фиолетовым треугольником - содержимое хранилища со словом Website, и содержимое, которое мы еще не внесли в систему - web page.

Как вы помните, мы его сохранили, так что теперь мы собираемся восстановить файл. Мы кликнем здесь правой кнопкой мыши и выберем Revert. Теперь диалоговое окно Revert сообщает нам, какие изменения будут отменены. В этом случае, мы отменяем редактирование. Теперь если мы выполним дифференциацию против имеющейся версии, вы увидите, что в обоих версиях есть слово Website, потому что мы обновили нашу рабочую область содержимым, которое в нем было первоначально. ОК, теперь мы выполним возврат.

Если мы хотим вернуться к конкретной версии, например, в первоначальной версии, мы вызываем для нее контекстное меню и выбираем Rollback to Revision. Эта функция позволит нам вернуться ко всему, к чему мы захотим. Например, мы можем вернуться к предыдущей версии или к определенной версии, мы можем вернуться к конкретному списку изменений, дате, времени или метке. Таким образом, Perforce позволяет очень гибко манипулировать файлами. В этом случае, мы собираемся вернуться к изменению 1, и система выводит предопределенное описание списка изменений. Мы выполняем возврат, возвращаемся к файлу, открываем его и видим, что мы вернулись к My Novel.

Помните, что все версии файла по-прежнему находятся в хранилище. Вы ничего не потеряли. Так, например, если мы захотим сделать еще один возврат, мы можем вернуться к списку изменений, найти Change My Novel to Website, и вернуться к нему. И теперь, когда мы откроем файл, вы можете видеть, что мы вернулись к слову Website.

Итак, это базовый рабочий процесс для внесения изменений, извлечения файлов из системы и возврата в Perforce. Теперь давайте перейдем к созданию тегов, или, как они называются в Perforce, меток, и посмотрим, как мы можем использовать эту функцию.