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

Материал из ALT Linux Wiki
Нет описания правки
Строка 4: Строка 4:


== Введение ==
== Введение ==
ALT Linux Team использует для работы над пакетами Sisyphus систему контроля версий [[git]], сборочную систему [[gear]] и хостинг [[git.alt]].


Эта страница приводит примеры использования <tt>git.alt</tt> для работы над пакетами, но не является [[Справочник по git.alt|справочником по git.alt]] или учебником по [[git]].
Эта страница приводит примеры использования <tt>git.alt</tt> для работы над пакетами, но не является [[Справочник по git.alt|справочником по git.alt]] или учебником по [[git]].
Строка 13: Строка 11:
Убедитесь, что ваш SSH-ключ зарегистрирован [[Join|принимающими в команду]] и проведите настройку как описано в [[Справочник по git.alt#SSH-доступ|справочнике]].
Убедитесь, что ваш SSH-ключ зарегистрирован [[Join|принимающими в команду]] и проведите настройку как описано в [[Справочник по git.alt#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) из него новые изменения.
Для поиска репозитория используется команда <tt>find-package</tt>:
 
Как это реализуется на практике?
 
Для поиска репозитория для клонирования используется команда <tt>find-package</tt>:
  $ ssh git.alt find-package bugzilla
  $ ssh git.alt find-package bugzilla
  /people/vvk/packages/bugzilla.git 1168522087
  /people/vvk/packages/bugzilla.git 1168522087
Строка 51: Строка 30:
  ...
  ...
  $
  $
Нотификации производятся вручную - почтой или через bugzilla. Аналога pull request из github или gitorious на <tt>git.alt</tt> пока что нет.
Втягивание чужих изменений производится стандартными git-средствами: добавлением remote
$ git remote add someuser ssh://git.alt/people/someuser/bugzilla.git
засасыванием изменений:
$ git fetch someuser master
наложением их:
$ git merge someuser/master
и отправкой в <tt>git.alt</tt>:
$ git push


== Создание нового репозитория и работа над ним ==
== Создание нового репозитория и работа над ним ==
Строка 69: Строка 38:
  girar-init-db: /people/dottedmag/public/test.git
  girar-init-db: /people/dottedmag/public/test.git
  $
  $
Поскольку в созданном репозитории нет ни одного коммита, то <tt>git clone</tt> будет ругаться при попытке склонировать. Вместо создадим пустой локальный репозиторий:
Поскольку в созданном репозитории нет ни одного коммита, то <tt>git clone</tt> будет ругаться при попытке его склонировать. Вместо необходимо создать пустой локальный репозиторий:
  $ mkdir test; cd test; git-init
  $ mkdir test; cd test; git-init
  Initialized empty Git repository in /home/dottedmag/test/.git/
  Initialized empty Git repository in /home/dottedmag/test/.git/
  $
  $
Закоммитим в него нужное содержимое и отправим на <tt>git.alt</tt>:
Закоммитить в него нужное содержимое и отправить на <tt>git.alt</tt>:
  $ git remote add origin ssh://git.alt/people/dottedmag/packages/test.git
  $ git remote add origin ssh://git.alt/people/dottedmag/packages/test.git
  $ git push origin master
  $ git push origin master

Версия от 10:51, 19 августа 2008

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


Введение

Эта страница приводит примеры использования git.alt для работы над пакетами, но не является справочником по git.alt или учебником по git.

Настройка

Убедитесь, что ваш SSH-ключ зарегистрирован принимающими в команду и проведите настройку как описано в справочнике.

Клонирование чужого репозитория для работы над ним

Для поиска репозитория используется команда 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
...
$

Создание нового репозитория и работа над ним

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