Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
hgbook.pdf
Скачиваний:
50
Добавлен:
17.03.2015
Размер:
3.15 Mб
Скачать

Экскурсия по Mercurial: основы

4.Если у вас установлена переменная окружения EMAIL, то будет использована она.

5.Mercurial использует локальное имя пользователя и хоста в системе, чтобы создать конечное имя. Так как часто полученное имя малополезно, то будет выведено предупреждение.

Если все варианты поиска завершились неудачно, Mercurial выведет сообщение об ошибке и не позволит создать коммит, пока вы не укажете имя пользователя.

Переменная HGUSER и опция -u в команде hg commit должны использоватся для изменения стандартного способа выбора имени. Для нормальной эксплуатации наиболее простой и надежный путь: установить имя в файле .hgrc. Подробности смотри ниже.

2.7.1.1. Создание файла конфигурации Mercurial

Чтобы установить имя пользователя откройте свой любимый текстовый редактор и создайте файла .hgrc в домашней директории. Mercurial будет использовать этот файл для поиска персональных настроек. Первоначальное содержание этого файла должно выглядить примерно так.

«Домашняя директория» в Windows

Домашний каталог, на английской установке Windows это, как правило, папка C:\Documents and Settings\<имя пользователя>. Вы можете узнать точное название вашей домашней директории, открыв окно командной строки и выполнив следующую команду.

C:\> echo %UserProfile%

# This is a Mercurial configuration file. [ui]

username = Firstname Lastname <email.address@example.net>

Строка «[ui]» обьявляет секцию конфигурационного файла. Вы можете прочитать «username = ...» как «установить значение переменной username в секции ui». Секции продолжаются до начала новых секций. Пустые строки и строки, начинаюшиеся с «#» игнорируются.

2.7.1.2. Выбор имени пользователя

Вы можете использовать любой текст в качестве значения username, так как эта информация предназначена для других людей, а не для интерпретации Mercurial'ом. В примере выше для этого использовалось распространенное соглашение: комбинация имени и адреса электронной почты.

Примечание

Встроенный веб-сервер Mercurial обфускцирует адреса электронной почты для затруднения работы утилит сбора адресов, которые используют спамеры. Это уменьшает вероятность того, что вы начнете получать больше спама, если опубликуете репозиторий Mercurial в сети.

2.7.2. Описание ревизии

Когда мы фиксируем изменения, Mercurial переводит нас в текстовый редактор, чтобы ввести комментарий, описывающее модификации, которые мы внесли в этом наборе изменений. Такое описание называется сообщением об изменениях (описанием изменений, описанием ревизии). Это будет записью для читателей о том, что мы сделали и почему, и будет выводиться при выполнении команды hg log после того, как мы закончим публикацию ревизии.

$ hg commit

Редактор, который откроется при выполнении команды hg commit, будет содержать пустую строку и несколько строк, начинающихся с «HG:».

This is where I type my commit comment.

18

Экскурсия по Mercurial: основы

HG: Enter commit message. Lines beginning with 'HG:' are removed.

HG: --

HG: user: Bryan O'Sullivan <bos@serpentine.com>

HG: branch 'default'

HG: changed hello.c

Mercurial игнорирует строки, начинающиеся с «HG:». Он использует их только для того, чтобы сообщить нам, изменения в каких файлах он запишет. Редактирование или удаление этих строк ни на что не повлияет.

2.7.3. Написание хорошего сообщения к коммиту ревизии

Команда hg log по умолчанию выводит только первую строку описания изменений. Поэтому комментарий лучше написать так, чтобы первая строка была отделена. Вот хороший пример плохого комментария:

changeset:

73:584af0e231be

user:

Censored Person <censored.person@example.org>

date:

Tue Sep

26 21:37:07 2006 -0700

summary:

include

buildmeister/commondefs. Add exports.

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

Моё личное предпочтение — короткие, но содержательные комментарии, которые сообщают мне то, чего я не могу выяснить при беглом взгляде на вывод команды hg log --patch.

Если мы выполним команду hg commit без каких-либо аргументов, запишутся все изменения, которые мы сделали,

как сообщил hg status и hg diff.

Сюрприз для пользователей Subversion

Если мы явно не укажем имена файлов для ревизии, hg commit как и любая другая команда Mercurial будет действовать для всего рабочего каталога репозитория. Учтите это, если вы переходите из мира Subversion или CVS, где подобная команда работает только для текущего каталога и его подкаталогов.

2.7.4. Отмена публикации ревизии

Если вы передумаете публиковать изменения во время редактирования комментария, просто выйдите из редактора без сохранения изменяемого файла. Это не вызовет изменений ни в репозитории, ни в рабочем каталоге.

2.7.5. Полюбуемся на наше творение

Закончив публикацию ревизии, мы можем воспользоваться командой hg tip для показа только что созданного набора изменений. Вывод этой команды похож на вывод команды hg log, но отображает только последнюю версию в репозитории.

$ hg tip -vp

 

changeset:

5:c3e3be994861

tag:

tip

user:

Bryan O'Sullivan <bos@serpentine.com>

date:

Thu Feb 02 14:10:17 2012 +0000

files:

hello.c

description:

Added an extra line of output

diff -r 2278160e78d4 -r c3e3be994861 hello.c

--- a/hello.c Sat Aug 16 22:16:53 2008 +0200

+++ b/hello.c Thu Feb 02 14:10:17 2012 +0000 @@ -8,5 +8,6 @@

int main(int argc, char **argv)

19

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]