#language ru == Учебник - Просмотр истории изменений == ''(Это третья 3-я из 9 частей [[RussianTutorial|Учебника]]. Предыдущая - [[RussianTutorialClone|Клонирование репозитория]], Следующая - [[RussianTutorialFirstChange|Создание первых изменений]])'' На данный момент мы прошли RussianTutorialClone - клонировали репозиторий. Наша локальная копия находится в {{{my-hello}}}. Давайте взглянем на историю этого [[RussianRepository|репозитория]]. Для этого мы используем команду {{{log}}}. Она выводит резюме о каждом событии, которое произошло в хранилище, начиная с последнего. {{{ $ hg log changeset: 1:82e55d328c8c tag: tip user: mpm@selenic.com date: Fri Aug 26 01:21:28 2005 -0700 summary: Create a makefile changeset: 0:0a04b987be5a user: mpm@selenic.com date: Fri Aug 26 01:20:50 2005 -0700 summary: Create a standard "hello, world" program }}} * Каждый параграф описывает отдельный [[ChangeSet|changeset]] (набор изменений). Changeset - это модификация одного или нескольких файлов, сгруппированных логически. * В нашем случае, мы видим историю репозитория, состоящую из двух changeset'ов. * {{{changeset}}} идентификатор changeset'а. * Первое число перед двоеточием - это [[RevisionNumber|номер ревизии]]; это локальный метод идентификации changeset'ов. Он действует только внутри этого репозитория. * Шестнадцатиричная строка после двоеточия - это [[ChangeSetID|changeset ID]]; это идентификатор changeset'а и он неизменен во всех репозиториях, содержащих этот changeset. Если Вы обсуждаете с кем-нибудь changeset'ы, используйте ChangeSetID, а не номер ревизии. * {{{tag}}} - это [[Tag|тег]], произвольное символическое имя changeset'а. * Вы можете привязать к changeset'у один или несколько тегов. На самом деле, теги привязывают к очень немногим changeset'ам, так что строка {{{tag}}} присутствует редко. * Специальный тег {{{tip}}} всегда обозначает [[Tip|tip]] - новейший changeset в репозитории. Если Вы создадите ещё один changeset (и мы это вскоре сделаем), то тег {{{tip}}} будет удалён из этого changeset'а и добавлен к новому changeset'у. * {{{user}}} показывает пользователя, создавшего changeset. Эта строка имеет свободный формат; обычно она содержит email, а иногда также и имя пользователя. * {{{date}}} показывает, когда changeset был создан. Время выводится в локальной зоне создателя changeset'а. * {{{summary}}} - это первая строка описания changeset'а. Описание вводится при создании changeset'а как напоминание о его назначении (см. ChangeSetComments). * {{{parent}}} идентификаторы родительских changeset'ов ([[Parent|parent]]) в случае, если их больше чем один (когда вы объединили ([[Merge|merge]]) изменения из нескольких репозиториев). * В большинстве случаев родительский changeset только один, и он предшествует рассматриваемому. Именно этот случай мы имеем в вышестоящем примере. Мы можем получить более детализированный лог, запросив подробный вывод с опцией {{{-v}}} или с глобальной опцией {{{--debug}}} - абсолютно полный: {{{ $ hg log -v changeset: 1:82e55d328c8c tag: tip user: mpm@selenic.com date: Fri Aug 26 01:21:28 2005 -0700 files: Makefile description: Create a makefile (...) $ hg log --debug changeset: 1:82e55d328c8ca4ee16520036c0aaace03a5beb65 tag: tip parent: 0:0a04b987be5ae354b710cefeba0e2d9de7ad41a9 parent: -1:0000000000000000000000000000000000000000 manifest: 1:0c7c1d435e6703e03ac6634a7c32da3a082d1600 user: mpm@selenic.com date: Fri Aug 26 01:21:28 2005 -0700 files+: Makefile extra: branch=default description: Create a makefile (...) }}} Подробный вывод содержит несколько больше полей, чем обычный. * {{{files}}} - список файлов модифицированных в changeset'е. * {{{description}}} содержит полное многострочное описание changeset'а, а не только первую строчку. * В нашем случае описание не отличается от предыдущего примера, так как его длина - только одна строка. Опция `--debug` добавляет следующие поля к подробному выводу (см. DebuggingFeatures): * {{{changeset}}} содержит несокращённый changeset ID. * Второе поле {{{parent}}} содержит changeset ID обоих родительских changeset'ов, где значение {{{-1:0000000000000000000000000000000000000000}}} указывает на отсутствие родителя. * {{{manifest}}} содержит [[Manifest|manifest]] ID changeset'а. * {{{file+}}} список файлов добавленных в changeset. * {{{file-}}} список файлов удалённых из changeset'а. Команда {{{log}}} с опцией {{{-r}}} возвращает информацию о конкретном changeset'е. {{{ $ hg log -r1 changeset: 1:82e55d328c8c tag: tip user: mpm@selenic.com date: Fri Aug 26 01:21:28 2005 -0700 summary: Create a makefile }}} У опции {{{-r}}} очень гибкий синтаксис выбора диапазона changeset'ов. Но на нашем демонстрационном репозитарии с ограниченным количеством changeset'ов это сложно продемонстрировать. Узнать больше Вы сможете из руководства: [[http://www.selenic.com/mercurial/hg.1.html#log|manpage]]. Команда {{{log}}} с опцией {{{-p}}} отображает патч changeset'а, то есть изменение в его файлах: {{{ $ hg log -r1 -p changeset: 1:82e55d328c8c tag: tip user: mpm@selenic.com date: Fri Aug 26 01:21:28 2005 -0700 summary: Create a makefile diff -r 0a04b987be5a -r 82e55d328c8c Makefile --- /dev/null Fri Aug 26 01:20:50 2005 -0700 +++ b/Makefile Fri Aug 26 01:21:28 2005 -0700 @@ -0,0 +1,1 @@ +all: hello }}} Вы можете использовать команду {{{tip}}}, чтобы просмотреть ''tip'', то есть последний changeset. Команду {{{tip}}} можно рассматривать как сокращение от {{{log -r tip}}}. {{{ $ hg tip changeset: 1:82e55d328c8c tag: tip user: mpm@selenic.com date: Fri Aug 26 01:21:28 2005 -0700 summary: Create a makefile $ hg log -r tip changeset: 1:82e55d328c8c tag: tip user: mpm@selenic.com date: Fri Aug 26 01:21:28 2005 -0700 summary: Create a makefile }}} Теперь, когда мы имеем некоторое представление о том, как и что происходит, давайте пойдем дальше и внесём некоторые изменения! Вперед, к [[RussianTutorialFirstChange|Созданиию первых изменений]]! ---- CategoryTutorial