GitUM: различия между версиями

Материал из Etersoft wiki
Перейти к навигацииПерейти к поиску
(Import from wiki.etersoft.ru)
 
Строка 1: Строка 1:
[[Category:ImportedPlugIn6]]
{{MovedFromWikiEterSoftRu|GitUM}}
[http://wiki.etersoft.ru/GitUm GitUm] - Git Upstream Manager - инструмент для совместной работы над Git репозиторием при активной сторонней разработке.


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




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


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 ]




gitum remove [ --full | --branches | --configfiles ]
== Исходный код ==
 
 
 
 
 
----
 
 


Просьба ко всем, кому интересен данный проект его попробовать и
* http://git.etersoft.ru/people/piastry/packages/?p=gitum.git


написать свой отзыв в багу:
== Заключение ==


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


Просьба ко всем, кому интересен данный проект его попробовать и написать свой отзыв в багу: 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.


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