Слияние директорий (продолжение)

advertisement
Глава 11
Конфигурационное
управление с
применением ClearCase
Merging
Глава 11
1
Цели
Изучив эту главу, вы сможете:
• Понимать, как в ClearCase работает
алгоритм слияния
• Сливать файловые элементы
• Выполнять специальные типы слияний
• Использовать Merge Manager для
автоматизированного слияния
Глава 11
2
Слияние - обзор
• Изменения, производимые над элементами,
легко распространяются от ветви к ветви.
• ClearCase обеспечивает богатый набор
возможностей, чтобы сделать процесс
слияния более автоматизированным.
• Если слияние выполнено, разработка может
продолжаться вдоль ветви
• Отсутствуют какие-либо ограничения для
возможных слияний, как по частоте, так и по
направлениям
Глава 11
3
Алгебра слияния
base
contrib 1
A
A
B
B
C
contrib 2
merge result
A
A
n/c
B
B
deleted
C
C
C
n/c
D
D
Z
changed
Z
changed
E
Q
changed
R
changed
?
conflict
X
inserted
X
inserted
deleted
Глава 11
4
Определение базовой участника (Base
Contributor)
•Если все участники – версии одного и того же
элемента, то ClearCase определяет ближайшего
базового участника для
= contributor versions
сравнения и позволяет
= base
автоматическое слияние
foo.c
foo.c
bar.c
• Если все участники – не
версии одного и того же
=?
элемента, то базовый
участники не определяется. Автоматическое
слияние невозможно. Вам предлагается ручное
слияние файлов
11-5
Глава 11
5
Возможности слияния
• Графические средства позволяют c
использовать как опции из меню так и
«мышь»
• Командная строка поддерживает различные
опции слияния
• Можно сливать до 32 участников
• Утилита Merge Manager просматривает
определенную пользователем
последовательность версий и сообщает какие
слияния требуется произвести
Глава 11
6
Возможности слияния (продолжение)
• Диалоговое окно позволяет Вам:
 Просматривать содержимое базового файла и
файлов-участников слияния
 Просматривать и редактировать результаты
слияния
 Определять, когда ClearCase запросит
вмешательства пользователья (Navigate в
контекстном меню)
 Перезапускать процесс слияния (при выходе из
контекстного меню выберите Restart Merge).
• Процесс слияния не завершается и не
записывается полностью, пока Вы не выйдете
из окна слияния
Глава 11
7
Пример слияния:
• В этом примере:
База - Hello.txt@@\main\2.
Участники - Hello.txt@@\main\3 и Hello.txt@@\CHECKEDOUT
Глава 11
8
Начало слияния
Глава 11
9
Проверка результатов слияния
• После выполнения Diff Merge проверьте
результаты слияния через Version Tree Browser
и выполните check in по окончании
Глава 11
10
Подтверждение слияния
Глава 11
11
Результат слияния
• Необходимо принятие, удаление или
редактирование строк слияния
Глава 11
12
Результаты слияния
• В результате слияния ClearCase:
 Переименовывает существующий
файл в file.contrib
 Размещает результаты слияния в
checked-out версию файла
 Записывает слияние в базу данных
VOB с гиперссылкой
Глава 11
13
Слияние Unreserved Checkout
• Если имеются наследственные версии, то над
Unreserved Checkout нельзя сделать
операцию checkin. В окне checkin
отобразится:
• Unreserved Checkout должны быть слиты с
LATEST до того, как над ним быдет
произведена операция checkin.
Глава 11
14
Слияние Unreserved Checkout
(продолжение)
• Утилита Diff Merge сливает версии,
остающегося unreserved файла, над которыми
должна быть совершена операция checkin
Глава 11
15
Слияние директорий – обзор
• Каждая версия директории содержит
файловые элементы, элементы-директории,
символические связи VOB.
• Слияние директории может использовать 2
или более версии одной и той же директории.
Результат слияния – новая версия директории,
отражающая содержание всех участников
слияния.
• Слияние директории не может обрабатывать
2 различные директории-элемента (т.е. src и
include не могут быть слиты).
• При слиянии директорий не остается .contribдиректории.
Глава 11
16
Слияние директорий – примеры.
• Перед слиянием 2 ветви src директории
имеют различное содержание.
I:dcrowe_hw\cleartool ls src
Src@@\main\LATEST
Src@@\main\LATEST\date.c@@
Src@@\main\LATEST\hello.c@@
Src@@\main\LATEST\hello.h@@
Src@@\main\LATEST\Makefile@@
Src@@\main\LATEST\sys.c@@
Src@@\main\LATEST\util.c@@
J:dcrowe_hw\cleartool ls src
Src@@\main\LATEST
Src@@\main\LATEST\clock.c@@
Src@@\main\LATEST\ date.c@@
Src@@\main\LATEST\hello.c@@
Src@@\main\LATEST\time.c@@
Src@@\main\LATEST\util.c@@
Глава 11
\main
Contents of
\scr@@\main\LATEST
date.c
hello.c
hello.h
Makefile
sys.c
util.c
\enhance
Contents of
scr@@
\main\enhance\LATEST
clock.c
date.c
hello.c
time.c
util.c
17
Слияние директорий (продолжение)
• Чтобы выполнить слияние директории надо:
 Удостовериться, что Config spec выбирает нужную версию.
 Убедитесь, что все участвующие версии в состоянии
checked in
 Извлечь результирующую версию директории.
 Начинайте слияние незамедлительно, без каких-либо
изменений проверенных версий.
Пример:
В этом примере последняя версия «улучшенной» ветви будет
слита с основной ветвью.
Check in src@@\main\enhance\LATEST
Формирование View по умолчанию:
Element * checkout
Element * \main\LATEST
Check out src@@\main\enhance\LATEST
Глава 11
18
Слияние директорий (продолжение)
• В окне Diff Merge, выберите изменения для
директории слияния
Глава 11
19
Слияние директорий (продолжение)
•Содержание директории может быть просмотрено
через Windows Explorer или Cleartool ls.
I: \dcrowe_hw > Cleartool ls src
src@@\main\enhance\LATEST
src@@\main\enhance\LATEST\clock.c@@
src@@\main\enhance\LATEST\date.c@@
src@@\main\enhance\LATEST\hello.c@@
src@@\main\enhance\LATEST\Makefile.c@@
\main
src@@\main\enhance\LATEST\sys.c@@
Contents of
src@@\main\enhance\LATEST\time.c@@
\scr@@
\main\LATEST
src@@\main\enhance\LATEST\util.c@@
clock.c
date.c
hello.c
Makefile
sys.c
time.c
util.c
Глава 11
\enhance
20
Merge Manager– обзор
•Когда требуется большое число исходных
файлов для частого ветвления и слияния,
Manager слияния требует много ручной
работы, несвязанной с параллельной
разработкой.
• Manager слияния обеспечивает графический
интерфейс, для определения файла, который
будет слит и представления слияния.
Глава 11
21
Использование Merge Manager
• Выберите View, который Вы хотите слить. Это
может быть как Динамический, так и
Snapshot View.
Глава 11
22
Использование Manager слияния
(продолжение)
Выберите особые элементы, которые Вы
хотели бы слить
Глава 11
23
Использование Manager слияния
(продолжение)
Выберите метод выбора версии каждого
элемента для слияния
Глава 11
24
Использование Manager слияния
(продолжение)
Укажите дополнительную информацию
Глава 11
25
Использование FindWizard
Кликнете на Find, когда сформируете свой
выбор критериев слияния.
Глава 11
26
Слияние с помощью CLI
• Команда Cleartool merge поддерживает
задание опций слияния в командной строке.
• Выполнение слияния из командной строки:
 Команда Cleartool merge поддерживает богатый
набор опций для выполнения слияния из командной
строки
 Сделайте Checkout для результирующей версии
 Выполните слияние
Пример:
I:\dcrowe_hr\src>cleartool cats
Element * CHECKOUT
Element * \main\LATEST
I:\dcrowe_hr\src>cleartool checkout –nc util.c
I:\dcrowe_hr\src>cleartool marge –to util.c –qall –version
\main\qa\LATEST
Глава 11
27
Слияние с помощью CLI
• Команда –out в Cleartool merge используется
для слияния 2-х версионных файлов во Viewprivate файл.
Пример:
Слияние последней версии на ветви bugfix с
версией в Вашем View. Результат кладется во
View-private файл, называющийся mrgtst.c:
I:\dcrowe_hr\src>cleartool marge out mrgtst.c util.c
util.c@@\main\rel2_ bugfix \LATEST
******************************************************************
<<< file 1: I:\dcrowe_hr\src\util.c@@\main\1
>>> file 2: util.c
>>> file 1: util.c@@\main\rel2_ bugfix \LATEST
------[after 15 file]----------|----------------[inserted 16-17 file
2]------…
Output of marge in is “mrgtat.c”.
Глава 11
28
Контроль результатов слияния.
• Всегда полезно проверять результат слияния
перед операцией checkin
I: \dcrowe_hw\src > clearmake hello.exe
I: \dcrowe_hw\src > hello
Hello, dcrowe!
Your home directory is ‘default’ in the
standard area.
It is now Thu Feb 25 11:12:03 1999.
I: \dcrowe_hw\src > cleartool checkin util.c
Глава 11
29
Просмотр результата слияния
• В версионном окне Properties/ Custom
отображается информация о гиперссылке
слияния
Глава 11
30
Selective Merge
\main
\branch
4
0
5
1
6
2
7
3
8
4
9
5
• Обычно merge использует
совокупную
последовательность
изменений
• С помощью опции –insert,
можно явно указать версию
из ветви для слияния
• Для этого типа merge
стрелки слияния не
создаются, в отличие от
обычного типа слияния.
6
Глава 11
31
Subtractive Merge
\main
4
5
6
7
8
•Разностное слияние удаляет из checkedout версии изменения, сделанные в одной
или более ее предшественниц.
•Используйте –delete для пометки
версии или нескольких версий для
вычитания.
Пример:
I: \dcrowe_hw\src > cleartool checkout hello.c
I: \dcrowe_hw\src > cleartool merge to hello.c –
delete –version \main\branch\5 \
main\branch\7
9
Глава 11
32
Аннотированные отчеты – обзор
• Показывает содержание версии и аннотирует
каждую строку с указанием в какой версии
строка была добавлена
• Только text_files или compressed_text_files
могут быть аннотированы.
• Вывод по умолчанию во View-Private файл:
filename.ann.
• Если генерация происходит с помощью
Cleartool annotate, то вывод может быть
сформатирован несколькими путями с
использованием опции –fmt.
Глава 11
33
Аннотированные сообщения – пример
• По умолчанию, выходная строка команды
Cleartool annotate включает только текстовые
строки
• Чтобы изменить формат, заданный по
умолчанию:
 Используйте опцию –rm, чтобы включить
строки, перенесенные в одну или несколько верси
по нисходящей ветви.
 Используйте опцию –all, чтобы включить строки
из всех версий, кроме тех, которые расположены по
нисходящей ветви.
I:\dcrowe_hw\src > cleartool annotate hello.c
Annotated result written to “hello.c.ann”
Глава 11
34
Формат отчета
Глава 11
35
Контрольные вопросы
• Как в ClearCase осуществляется ручное
слияние?
• Что такое базовый участник слияния?
• Какая процедура GUI используется для
осуществления слияния нескольких файлов
одновременно?
• Что такое subtractive merge и selective
merge?
Глава 11
36
Download