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

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

Что же произдойдёт, если мы попробуем получить или передать изменения, а в принимающем репозитории они уже есть? Ничего особенного.

$ hg push ../hello-push pushing to ../hello-push searching for changes no changes found

2.8.4. Размещение по умолчанию

Когда мы клонируем репозиторий, Mercurial записывает расположение репозитория из которого мы делали клон в файле .hg/hgrc нового репозитория. Если мы не будем указывать место для hg pull (откуда) или для hg push (куда), эти команды будут использовать это место в качестве репозитория по умолчанию. Команды hg incoming и hg outgoing делают то же самое.

Если вы откроете файл .hg/hgrc в текстовом редакторе, вы увидите содержимое похожее на следующее.

[paths]

default = http://www.selenic.com/repo/hg

Возможно — и часто полезно — чтобы путь по умолчанию для hg push и hg outgoing, отличался от пути для hg pull и hg incoming. Мы можем так сделать, добавив запись default-push в секцию [paths] файла .hg/hgrc.

[paths]

default = http://www.selenic.com/repo/hg default-push = http://hg.example.com/hg

2.8.5. Распространение изменений по сети

Команды, которые мы затронули в нескольких предыдущих разделах, не ограничиваются работой с локальными репозиториями. Любая из них работает таким же способом и через сеть — просто укажите команде URL вместо локального пути.

$ hg outgoing http://hg.serpentine.com/tutorial/hello comparing with http://hg.serpentine.com/tutorial/hello searching for changes

changeset:

5:c3e3be994861

tag:

tip

user:

Bryan O'Sullivan <bos@serpentine.com>

date:

Thu Feb 02 14:10:17 2012 +0000

summary:

Added an extra line of output

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

$ hg push http://hg.serpentine.com/tutorial/hello pushing to http://hg.serpentine.com/tutorial/hello searching for changes

remote: ssl required

2.9. Начало нового проекта

Начать новый проект так же просто, как и использовать уже существующий. Команда hg init создает новый, пустой репозиторий Mercurial.

$ hg init myproject

Это просто создаст репозиторий с именем myproject в текущем каталоге.

$ ls -l total 8

-rw-r----- 1 slava slava 47 Feb 2 14:09 goodbye.c -rw-r----- 1 slava slava 45 Feb 2 14:09 hello.c drwxr-x--- 3 slava slava 60 Feb 2 14:09 myproject

23

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

Можно сказать, что myproject это репозиторий Mercurial, потому что он содержит каталог .hg.

$ ls -al myproject

total 0

 

 

 

 

 

 

drwxr-x--- 3

slava slava

60

Feb

2

14:09 .

drwx------ 3

slava

slava 140

Feb

2

14:09 ..

drwxr-x--- 3

slava

slava

100

Feb

2

14:09 .hg

Если мы хотим добавить существующие файлы в репозиторий, мы копируем их внутрь рабочей директории, и с помощью команды hg add сообщаем Mercurial, что нужно начинать за ними следить.

$ cd myproject

$ cp ../hello.c .

$ cp ../goodbye.c . $ hg add

adding goodbye.c adding hello.c

$ hg status

A goodbye.c A hello.c

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

$ hg commit -m 'Initial commit'

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

24

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