GitUM

Материал из Etersoft wiki
Версия от 21:50, 13 мая 2012; PavelShilovsky (обсуждение | вклад) (Import from wiki.etersoft.ru)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к навигацииПерейти к поиску
Wackowiki-logo.png Blue Glass Arrow.svg MediaWiki logo.png
Эта страница была автоматически перемещена с old.wiki.etersoft.ru.
Эта страница наверняка требует чистки и улучшения — смело правьте разметку и ссылки.
Просьба по окончанию убрать этот шаблон со страницы.


GitUm - Git Upstream Manager - инструмент для совместной работы над Git репозиторием при активной сторонней разработке.



Краткое руководство



Gitum имеет 5 рабочих веток:

1. Ветка апстрим репозитория.

2. Ветка с патчами наверху - рабочая ветка, создаётся локально.

3. Ветка с непрерывной историей изменений.

4. Ветка с патчами в виде отдельных файлов - каждый коммит это состояние репозитория.

5. Ветка с конфигурационным файлом, где содержатся имена 4-х предыдущих веток. Носит всегда название gitum-config. Может отсутствовать - используются имена веток по умолчанию.


У gitum есть опция --repo ПУТЬ, которая указывает путь до gitum-репозитория. Если опция не указана, то поиск ведётся в текущем каталоге.



1) Создадим конфигурационный файл gitum

gitum create --remote origin/master --upstream upstream --rebased rebased --current mainline --patches patches


origin/master - апстрим репозиторий/ветка (или просто любая локальная ветка - тогда без /), из которой будем тянуть изменения;

upstream - наша копия ветки origin/master;

rebased - ветка с нашими патчами наверху;

mainline - отображает последовательную историю;

patches - ветка с нашими патчами в виде отдельных файлов.


Три последние ветки создаются сами. То есть на момент выполнения команды, нужно чтобы существовала ветка master, в которой сейчаснаходится последняя копия удалённой ветки, с которой мы будем вытягивать изменения. Так же, если в качестве remote мы указываем локальную ветку, то она тоже должна существовать. (Указанные значения являются значениями по умолчанию в случае, когда create явно не указывает параметр.)



2) Перенесём изменения из апстрим репозитория

gitum merge [ --track ]


В процессе merge могут возникать конфликты слияния. Нужно разрешить очередной конфликт, добавить исправленные файлы командой


git add


и продолжить процесс:


gitum merge --continue


Если же вы передумали делать pull, то можно вернуть изначальное состояние актуальных веток с помощью команды:


gitum merge --abort


Либо пропустить тeкущий патч и продолжить процесс:


gitum merge --skip


В результате в ветке разработки mainline у нас появятся копии коммитов из удалённой ветки (сохранено описание, авторство и, по возможности,функционал).Так же вы сможете заметить, что история остаётсянепрерывной и отсутствие коммитов вида: "Merge remote into local". Так же можно указать вручную с какой веткой проводить слияние, указав вначале:


gitum merge --branch local_branch


или


gitum merge --branch remote1/branch1


Опция --track позволяет сохранить указанную ветку для использования по умолчанию.



3) Сохраним изменения в gitum репозиторий

После того, как мы изменили ветку rebased (добавили коммиты или изменили старые), надо обновить ветки mainline и patches:


gitum update


добавит результирующий diff между ветками rebased и mainline.



4) Восстановим исходное состояние рабочей ветки

Если после модификации ветки rebased решено вернуть её в предыдущее состояние, то используется команда


gitum restore


которая так же принимает опцию --commit из ветки patches (по умолчанию - HEAD из patches) .


В случае потери всех веток используется опция --full.



5) Склонируем удалённый gitum репозиторий

gitum clone GITUM-REPO DIR


что склонирует репозиторий по адресу GITUM-REPO в директорию DIR.



6) Вытянем изменения из удалённого gitum репозитория

gitum pull [ --remote REMOTE ] [ --track ]


при этом наши локальные патчи расположатся поверх новых изменений - история сохраняется.


Если в процессе наложения возникли проблемы, то нужно их исправить, сделать git add и дать команду


gitum pull --resolved


или пропустить текущий патч (--skip), или прервать процесс и вернуть первоначальное состояние репозитория с помощью


gitum pull --abort.


Опция --track позволяет сохранить указанный удалённый репозиторий для использования по умолчанию.



7) Сохраним изменения в удалённый gitum репозиторий

gitum push [ --remote REMOTE ] [ --track ]


Опция --track позволяет сохранить указанный удалённый репозиторий для использования по умолчанию.



8) Удалим gitum файлы из репозитория

gitum remove [ --full | --branches | --configfiles ]





Просьба ко всем, кому интересен данный проект его попробовать и

написать свой отзыв в багу:

http://bugs.etersoft.ru/show_bug.cgi?id=7690.


Приветствуются любые замечания и пожелания с вашей стороны!