Git.alt/Краткое руководство: различия между версиями

Материал из ALT Linux Wiki
Нет описания правки
Строка 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

Stub.png
Данная страница находится в разработке.
Эта страница ещё не закончена. Информация, представленная здесь, может оказаться неполной или неверной.


Введение

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 в удалённом репозитории.