Совместная работа с документами в git

В связи с тем, что для совместной разработки Sisyphus организована совместная разработка в git, работа над документ Кучи также теперь будет перемещаться на эту платформу.

В настоящий момент на git.altlinux.org импортирован полный архив документов Кучи с историей изменений, каждому модулю Кучи соответствует отдельный git-репозиторий. Подробности см. ниже. Репозитории с документами Кучи называются так же, как и пакеты с этими документами в Sisyphus: docs-*.

Сценарии работы с документами Кучи в git несколько отличаются для тех, у кого есть учетная запись на git.altlinux.org и для тех, у кого ее нет.

Регистрация на git.alt

На сегодняшний день учетную запись на git.alt автоматически получили все разработчики Sisyphus, у которых есть опубликованные в течение прошлого года пакеты в Sisyphus. Для получения учетной записи обращайтесь на <joindocs AT СПАМУ НЕТ altlinux DOT ru>.

Настройка

Настроить ssh. В ~/.ssh/config нужно добавить:

Host    git.alt
        HostName git.altlinux.org
        Port 222
        User git_ID

Где ID -- ваш идентификатор при доступе к ресурсам ALT, тот же, что и в incoming. Доступ осуществляется по тому же ssh-ключу, что и к прочим ресурсам ALT.

Настроить свое имя/e-mail, которыми будут подписываться ваши изменения в репозиториях:

Создать файл $HOME/.gitconfig следующего содержания:

[user]
        name = Your Name
        email = ID@altlinux.org

Поиск репозитория на git.alt

Просмотреть список всех репозиториев с документами:

$ ssh git.alt find-package "docs-*"
/people/azol/packages/docs-distributed_sisyphus_development-azol.git
/people/kirill/packages/docs-issue-textbooks.git
 . . .
/people/kirill/packages/docs-distributed_sisyphus_development-azol.git
 . . .

Обратите внимание, один и тот же репозиторий может присутствовать у нескольких разработчиков --

Внесение изменений в существующий документ

Рассмотрим случай, когда нужно внести изменения в документ, для которого уже существует репозиторий на git.alt.

Для этого нужно перенести к себе интересующий нас репозиторий.

Допустим, нам нужно работать с репозиторием docs-migrationbook в версии kirill. Ваш ID на git.alt -- abc.

$ ssh git.alt find-package docs-migrationbook
/people/kirill/packages/docs-migrationbook

Прежде всего склонируем интересующий нас репозиторий в свой собственный каталог на git.alt:

$ ssh git.alt git-clone /people/kirill/packages/docs-migrationbook packages/docs-migrationbook

Теперь следует склонировать этот репозиторий уже из своего каталога на git.alt:

$ mkdir src; cd src
$ git-clone git.alt:packages/docs-migrationbook
$ cd docs-migrationbook

Обратите внимание на отсутствие / после git.alt: таким образом можно ссылаться на свои каталоги на git.alt по "относительному пути", т. е. ваш относительный путь packages/docs-migrationbook эквивалентен абсолютному /people/abc/packages/docs-migrationbook, где abc -- ваш ID.

Создание нового репозитория с документом

Если нужно создать свой собственный репозиторий для совместной работы и опубликовать его на git.alt:

Создаём локальный репозиторий:

$ mkdir docs-newdocument; cd docs-newdocument
$ git-init-db
defaulting to local storage area

Готовим почву на git.alt: создаём там пустой репозиторий, в который будем помещать сделанные нами локально изменения:

$ ssh git.alt git-init-db packages/docs-newdocument

Настраиваем свой локальный репозиторий на публикацию изменений на git.alt:

$ cat > .git/remotes/origin <<EOF
URL: git.alt:packages/docs-newdocument.git
Push: refs/heads/master:refs/heads/master
EOF

Работа с git-репозиторием

Главная задача git в самом простом случае -- хранить историю изменений в файлах и при необходимости получать файл в любом из сохранённых состояний или сумму различий между двумя заданными состояниями (diff).

В простейшем случае история в git-репозитории представляет собой последовательную цепочку сохранённых состояний (всего репозитория, т. е. всех файлов сразу) -- комиттов.

Простейший сценарий по сохранению истории изменений в git-репозитории:

$ oowriter file.odt
<создаём документ>
$ git-add file.odt
$ git-commit
$ oowriter file.odt
<редактируем>
$ git-add file.odt
<указываем, что нужно закомиттить изменения>
$ git-commit

При работе с git ваши друзья:

Cуть совместной работы в git: каждый работает над своей версией документа и ее публикует в своем репозитории на git.alt. После этого разработчики обмениваются патчами между репозиториями. Подробнее об этом см. в руководстве по git, раздел "Working with others".

Публикация своих изменений

Сделанные Вами изменения нужно опубликовать на git.alt (чтобы другие могли их оттуда потом забрать).

Опубликовать свои изменения:

$ git push origin

Дальнейшая совместная работа

TODO

ALTLinuxHeap: Heap/GitCollaboration (last edited 2007-03-02 12:41:08 by KirillMaslinsky)