GitUM: различия между версиями
(Import from wiki.etersoft.ru) |
|||
Строка 1: | Строка 1: | ||
GitUm (Git Upstream Manager) — инструмент для совместной работы над Git-репозиторием при активной сторонней разработке. | |||
== Краткое руководство == | == Краткое руководство == | ||
Gitum имеет 5 рабочих веток: | Gitum имеет 5 рабочих веток: | ||
Строка 28: | Строка 16: | ||
5. Ветка с конфигурационным файлом, где содержатся имена 4-х предыдущих веток. Носит всегда название gitum-config. Может отсутствовать - используются имена веток по умолчанию. | 5. Ветка с конфигурационным файлом, где содержатся имена 4-х предыдущих веток. Носит всегда название gitum-config. Может отсутствовать - используются имена веток по умолчанию. | ||
У gitum есть опция --repo ПУТЬ, которая указывает путь до gitum-репозитория. Если опция не указана, то поиск ведётся в текущем каталоге. | У gitum есть опция --repo ПУТЬ, которая указывает путь до gitum-репозитория. Если опция не указана, то поиск ведётся в текущем каталоге. | ||
== 1) Создадим конфигурационный файл gitum == | == 1) Создадим конфигурационный файл gitum == | ||
* gitum create --remote origin/master --upstream upstream --rebased rebased --current mainline --patches patches | |||
* origin/master - апстрим репозиторий/ветка (или просто любая локальная ветка - тогда без /), из которой будем тянуть изменения; | |||
gitum create --remote origin/master --upstream upstream --rebased rebased --current mainline --patches patches | * upstream - наша копия ветки origin/master; | ||
* rebased - ветка с нашими патчами наверху; | |||
* mainline - отображает последовательную историю; | |||
* patches - ветка с нашими патчами в виде отдельных файлов. | |||
origin/master - апстрим репозиторий/ветка (или просто любая локальная ветка - тогда без /), из которой будем тянуть изменения; | |||
upstream - наша копия ветки origin/master; | |||
rebased - ветка с нашими патчами наверху; | |||
mainline - отображает последовательную историю; | |||
patches - ветка с нашими патчами в виде отдельных файлов. | |||
Три последние ветки создаются сами. То есть на момент выполнения команды, нужно чтобы существовала ветка master, в которой сейчаснаходится последняя копия удалённой ветки, с которой мы будем вытягивать изменения. Так же, если в качестве remote мы указываем локальную ветку, то она тоже должна существовать. (Указанные значения являются значениями по умолчанию в случае, когда create явно не указывает параметр.) | Три последние ветки создаются сами. То есть на момент выполнения команды, нужно чтобы существовала ветка master, в которой сейчаснаходится последняя копия удалённой ветки, с которой мы будем вытягивать изменения. Так же, если в качестве remote мы указываем локальную ветку, то она тоже должна существовать. (Указанные значения являются значениями по умолчанию в случае, когда create явно не указывает параметр.) | ||
== 2) Перенесём изменения из апстрим репозитория == | == 2) Перенесём изменения из апстрим репозитория == | ||
gitum merge [ --track ] | |||
gitum merge [ --track ] | |||
В процессе merge могут возникать конфликты слияния. Нужно разрешить очередной конфликт, добавить исправленные файлы командой | В процессе merge могут возникать конфликты слияния. Нужно разрешить очередной конфликт, добавить исправленные файлы командой | ||
git add | |||
git add | |||
и продолжить процесс: | и продолжить процесс: | ||
gitum merge --continue | |||
gitum merge --continue | |||
Если же вы передумали делать pull, то можно вернуть изначальное состояние актуальных веток с помощью команды: | Если же вы передумали делать pull, то можно вернуть изначальное состояние актуальных веток с помощью команды: | ||
gitum merge --abort | |||
gitum merge --abort | |||
Либо пропустить тeкущий патч и продолжить процесс: | Либо пропустить тeкущий патч и продолжить процесс: | ||
gitum merge --skip | |||
В результате в ветке разработки mainline у нас появятся копии коммитов из удалённой ветки (сохранено описание, авторство и, по возможности,функционал). Так же вы сможете заметить, что история остаётся непрерывной и отсутствие коммитов вида: "Merge remote into local". Так же можно указать вручную с какой веткой проводить слияние, указав вначале: | |||
В результате в ветке разработки mainline у нас появятся копии коммитов из удалённой ветки (сохранено описание, авторство и, по возможности,функционал).Так же вы сможете заметить, что история | |||
gitum merge --branch local_branch | |||
или | или | ||
gitum merge --branch remote1/branch1 | |||
gitum merge --branch remote1/branch1 | |||
Опция --track позволяет сохранить указанную ветку для использования по умолчанию. | Опция --track позволяет сохранить указанную ветку для использования по умолчанию. | ||
== 3) Сохраним изменения в gitum репозиторий == | == 3) Сохраним изменения в gitum репозиторий == | ||
После того, как мы изменили ветку rebased (добавили коммиты или изменили старые), надо обновить ветки mainline и patches: | После того, как мы изменили ветку rebased (добавили коммиты или изменили старые), надо обновить ветки mainline и patches: | ||
gitum update | |||
gitum update | |||
добавит результирующий diff между ветками rebased и mainline. | добавит результирующий diff между ветками rebased и mainline. | ||
== 4) Восстановим исходное состояние рабочей ветки == | == 4) Восстановим исходное состояние рабочей ветки == | ||
Если после модификации ветки rebased решено вернуть её в предыдущее состояние, то используется команда | Если после модификации ветки rebased решено вернуть её в предыдущее состояние, то используется команда | ||
gitum restore | |||
gitum restore | |||
которая так же принимает опцию --commit из ветки patches (по умолчанию - HEAD из patches) . | которая так же принимает опцию --commit из ветки patches (по умолчанию - HEAD из patches) . | ||
В случае потери всех веток используется опция --full. | В случае потери всех веток используется опция --full. | ||
== 5) Склонируем удалённый gitum репозиторий == | == 5) Склонируем удалённый gitum репозиторий == | ||
gitum clone GITUM-REPO DIR | |||
gitum clone GITUM-REPO DIR | |||
что склонирует репозиторий по адресу GITUM-REPO в директорию DIR. | что склонирует репозиторий по адресу GITUM-REPO в директорию DIR. | ||
== 6) Вытянем изменения из удалённого gitum репозитория == | == 6) Вытянем изменения из удалённого gitum репозитория == | ||
gitum pull [ --remote REMOTE ] [ --track ] | |||
gitum pull [ --remote REMOTE ] [ --track ] | |||
при этом наши локальные патчи расположатся поверх новых изменений - история сохраняется. | при этом наши локальные патчи расположатся поверх новых изменений - история сохраняется. | ||
Если в процессе наложения возникли проблемы, то нужно их исправить, сделать git add и дать команду | Если в процессе наложения возникли проблемы, то нужно их исправить, сделать git add и дать команду | ||
gitum pull --resolved | |||
gitum pull --resolved | |||
или пропустить текущий патч (--skip), или прервать процесс и вернуть первоначальное состояние репозитория с помощью | или пропустить текущий патч (--skip), или прервать процесс и вернуть первоначальное состояние репозитория с помощью | ||
gitum pull --abort. | |||
gitum pull --abort. | |||
Опция --track позволяет сохранить указанный удалённый репозиторий для использования по умолчанию. | Опция --track позволяет сохранить указанный удалённый репозиторий для использования по умолчанию. | ||
== 7) Сохраним изменения в удалённый gitum репозиторий == | == 7) Сохраним изменения в удалённый gitum репозиторий == | ||
gitum push [ --remote REMOTE ] [ --track ] | |||
gitum push [ --remote REMOTE ] [ --track ] | |||
Опция --track позволяет сохранить указанный удалённый репозиторий для использования по умолчанию. | Опция --track позволяет сохранить указанный удалённый репозиторий для использования по умолчанию. | ||
== 8) Удалим gitum файлы из репозитория == | == 8) Удалим gitum файлы из репозитория == | ||
gitum remove [ --full | --branches | --configfiles ] | |||
== Исходный код == | |||
* http://git.etersoft.ru/people/piastry/packages/?p=gitum.git | |||
== Заключение == | |||
Просьба ко всем, кому интересен данный проект его попробовать и написать свой отзыв в багу: http://bugs.etersoft.ru/show_bug.cgi?id=7690. | |||
Приветствуются любые замечания и пожелания с вашей стороны! | Приветствуются любые замечания и пожелания с вашей стороны! |
Версия 14:33, 10 июля 2012
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.
Приветствуются любые замечания и пожелания с вашей стороны!