Пример работы с git.toiit.sgu.ru

Пример работы с Git.
Опубликовано из справки по курсу "Технологии программирования".

ПроВеряем работоспособность git
[sin@base ~]$ git --version
git version 1.5.6.5.GIT

# Входим каталог проекта или создём его
[sin@base ~]$ mkdir test_project
[sin@base ~]$ cd test_project

Инициализируем репозитарий
[sin@base test_project]$ git init
Initialized empty Git repository in /home/sin/tst/.git/

# Добавляем файлы, выполняем первый коммит
[sin@base test_project]$ git add file.cpp
[sin@base test_project]$ git commit -a

Пример генерации SSH-ключей:


Генерация ключей с помощью консольной утилиты
[sin@base ~]$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Documents and Settings/sin/.ssh/id_rsa):

Created directory '/c/Documents and Settings/sin/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /c/Documents and Settings/sin/.ssh/id_rsa.

Your public key has been saved in /c/Documents and Settings/sin/.ssh/id_rsa.pub.

The key fingerprint is:
c6:46:d2:d4:3c:c8:ce:ca:db:10:cd:45:63:dc:8b:0e sin@W12-418-10

Теперь для регистрации на сервере git.toiit.sgu.ru достаточно:
# 1) скопировать и сохранить ключи (файлы i
d_rsa и id_rsa.pub, которые были созданы в каталоге .ssh);
# 2) отправить три основных параметра регистрации:
# * Публичный ключ (
файл id_rsa.pub);
# * Предполагаемый логин
 (свободное имя пользователя) ;
# * Имя Фамилия латинским символами, например "Evgeny Sinelnikov";
Параметры регистрации необходимо отправлять администраторам сервера

Пример создания файла конфигурации:

Создание псевдонима имени сервера в домашнем каталоге,
# где USERNAME - имя пользователя.
[sin@base ~]$ cat > ~/.ssh/config
Host git.toi
HostName git.toiit.sgu.ru
User git_USERNAME

Пример создания создания удалённого репозитория на сервере git.toiit.sgu.ru:

Проверяем наличие ssh-ключей (требуется, как аутентификационная информация
# для удалённого подключения) - должны быть в файлах id_rsa* или id_dsa*
[sin@base ~]$ ls ~/.ssh/id_*
/home/sin/.ssh/id_dsa /home/sin/.ssh/id_dsa.pub /home/sin/.ssh/id_rsa /home/sin/.ssh/id_rsa.pub

Проверяем файл конфигурации
[sin@base ~]$ cat ~/.ssh/config
Host git.toi
HostName git.toiit.sgu.ru
User git_
USERNAME

Проверяем доступ к серверу
[sin@base ~]$ ssh git.toi
Enter passphrase for key '/home/sin/.ssh/id_dsa':
ssh: PTY allocation request failed on channel 0
-girar-sh: Not enough arguments.
-girar-sh: Try `help' command for more information.
Connection to git.toiit.sgu.ru closed.

[sin@base ~]$ ssh git.toi help
Enter passphrase for key '/home/sin/.ssh/id_dsa':
Available commands:
help
charset <path to git repository> [<charset>]
clone <path to git repository> [<path to directory>]
config-db <path to directory> <config> [<value>]
default-branch <path to git repository> [<branch>]
find-package <pattern>
init-db <path to directory>
ls [<path to directory>]
mv-db <path to source directory> <path to destination directory>
quota
repack <path to git repository> [<value>]
rm-db <path to git repository>
task {--help|ls|show|new|add|delsub|run|share|approve|rm|genbases} ...
build [-b <binary_repository_name>] <gear_repo_1> <gear_tag_1> ...
genbases [-b <binary_repository_name>]
pocket--help|create|delete|show|list| ...
acl {--help|<binary_repository_name> ...}

Добавляем ключи в ssh-agent, чтобы не повторять ввод пароля
# в течении сессии клиента:
[sin@base ~]$ ssh-add
Enter passphrase for /home/sin/.ssh/id_rsa:
Identity added: /home/sin/.ssh/id_rsa (/home/sin/.ssh/id_rsa)
Enter passphrase for /home/sin/.ssh/id_dsa:
Identity added: /home/sin/.ssh/id_dsa (/home/sin/.ssh/id_dsa)
# В случае, если у вас не запущен ssh агент, может быть выдана ошибка:
[sin@base ~]$ ssh-add
Could not open a connection to your authentication agent.
# Для использования ssh агента нужно запустить утилиту ssh-agent.
# Если отказаться от использования ssh агента, Ы
Ы

Создаём на сервере удлаённый репозиторий (команда init-db) к серверу:
[sin@base ~]$ ssh git.toi init-db public/test
girar-init-db: /people/sin/public/test.git

Проверяем, созданный на сервере, удлаённый репозиторий (команда ls) к серверу:
[sin@base ~]$ ssh git.toi ls public/test.git
total 12
-rw-r--r-- 1 23 Dec 8 19:50 HEAD
-rw-r--r-- 1 66 Dec 8 19:50 config
-rw-r--r-- 1 12 Dec 8 19:50 description
-rw------- 1 0 Dec 8 19:50 git-daemon-export-ok
lrwxrwxrwx 1 22 Dec 8 19:50 hooks -> /usr/share/girar/hooks
drwxr-sr-x 4 28 Dec 8 19:50 objects
drwxr-sr-x 4 29 Dec 8 19:50 refs

Полный путь доступен также через web-интерфейс:
# http://git.toiit.sgu.ru/
people/USERNAME/public/test.git
[sin@base ~]$ ssh git.toi ls /people/sin/public/test.git
total 12
-rw-r--r-- 1 23 Dec 8 19:50 HEAD
-rw-r--r-- 1 66 Dec 8 19:50 config
-rw-r--r-- 1 12 Dec 8 19:50 description
-rw------- 1 0 Dec 8 19:50 git-daemon-export-ok
lrwxrwxrwx 1 22 Dec 8 19:50 hooks -> /usr/share/girar/hooks
drwxr-sr-x 4 28 Dec 8 19:50 objects
drwxr-sr-x 4 29 Dec 8 19:50 refs

# Список публичных репозиториев
доступен  также через web-интерфейс:
# http://git.toiit.sgu.ru/people/sin/public/
[sin@base ~]$ ssh git.toi ls /people/sin/public/
total 0
drwxr-sr-x 5 146 Sep 12 17:12 qkicker.git
drwxr-sr-x 5 146 Apr 25 2009 simple-mmc.git
drwxr-sr-x 5 146 Jun 3 2009 supertask3.git
drwxr-sr-x 4 112 Dec 8 19:50 test.git
drwxr-sr-x 5 146 Nov 19 20:21 toiit.git

Пример публикации проекта на удалённом репозитории:

# Для публикации нужно указать имя удалённого репозитория:
# - git_sin@git.toiit.sgu.ru:public/test
# - git.toi:public/test
# - toi
# второй вариант будет иметь смысл при указании псевдонима
# в файле конфигурации ~/.ssh/config

# третий вариант будет иметь если, если для задать псевдоним
# удалённого репозитория следующим образом:
[sin@base test_project]$ git remote add toi git.toi:public/test

# Команда для публикации на удалённом репозитории toi ветки master
[sin@base test_project]$ git push toi master
Counting objects: 3, done.
Writing objects: 100% (3/3), 208 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)
Repacking repository... done
Updating committer date cache... done
To git.toi:public/test
* [new branch] master -> master
Comments