Git.alt/Краткое руководство: различия между версиями
Нет описания правки |
м (→Совместная работа над существующим репозиторием: syntax fix) |
||
Строка 59: | Строка 59: | ||
наложением их: | наложением их: | ||
$ git merge someuser/master | $ git merge someuser/master | ||
и отправкой в <tt>git.alt<tt>: | и отправкой в <tt>git.alt</tt>: | ||
$ git push | $ git push | ||
Версия от 13:47, 19 августа 2008
Введение
ALT Linux Team использует для работы над пакетами Sisyphus систему контроля версий git, сборочную систему gear и хостинг git.alt.
Эта страница приводит примеры использования git.alt для работы над пакетами, но не является справочником по git.alt или учебником по git.
Настройка
Убедитесь, что ваш SSH-ключ зарегистрирован принимающими в команду и проведите настройку как описано в справочнике.
Совместная работа над существующим репозиторием
Совместная работа над пакетами в git строится по следующей схеме:
[ user A ] [ user B ] | [repo A/X] | | | | | |----------+-->[repo B/X] -- B клонирует репозиторий A/X в свой B/X | | | | | | |------>| -- B работает над содержимым репозитория | | |------>| | | |------>| -- B решает, что результат ему нравится |<-----------------| | -- B оповещает A о том, что в B/X | | | | имеется что-то новое |-------+<-----------------| -- A добавляет (pull/push) содержимое | | | | B/X в A/X
При дальнейшей работе сценарий повторяется, за исключением того, что B не клонирует репозиторий A/X, а подтягивает (pull) из него новые изменения.
Как это реализуется на практике?
Для поиска репозитория для клонирования используется команда find-package:
$ ssh git.alt find-package bugzilla /people/vvk/packages/bugzilla.git 1168522087 $
Склонировать репозиторий можно с помощью команды clone:
$ ssh git.alt clone /people/vvk/packages/bugzilla.git Initialized empty Git repository in /people/dottedmag/packages/bugzilla.git/ $
Эта команда создаст вашу копию репозитория на сервере git.alt. Для работы с ним необходимо склонировать этот репозиторий на локальную машину:
$ git clone ssh://git.alt/people/dottedmag/packages/bugzilla.git Initialized empty Git repository in /home/dottedmag/bugzilla/.git/ .... $
С этим git-репозиторием можно работать как обычно: править, делать commit и так далее. Поскольку для склонированного репозитория создаётся remote с названием origin, то git-push тоже работает:
$ git push ... $
Нотификации производятся вручную - почтой или через bugzilla. Аналога pull request из github или gitorious на git.alt пока что нет.
Втягивание чужих изменений производится стандартными git-средствами: добавлением remote
$ git remote add someuser ssh://git.alt/people/someuser/bugzilla.git
засасыванием изменений:
$ git fetch someuser master
наложением их:
$ git merge someuser/master
и отправкой в git.alt:
$ git push
Создание нового репозитория и работа над ним
Создать свой репозиторий на git.alt очень просто:
$ ssh git.alt init-db test Initialized empty Git repository in ./ girar-init-db: /people/dottedmag/public/test.git $
Поскольку в созданном репозитории нет ни одного коммита, то git clone будет ругаться при попытке склонировать. Вместо создадим пустой локальный репозиторий:
$ mkdir test; cd test; git-init Initialized empty Git repository in /home/dottedmag/test/.git/ $
Закоммитим в него нужное содержимое и отправим на git.alt:
$ git remote add origin ssh://git.alt/people/dottedmag/packages/test.git $ git push origin master ... $
Указание remote и бранча в команде push необходимо только в первый раз - для создания бранча master в удалённом репозитории.