Различия
Показаны различия между двумя версиями страницы.
— | gitosis [2025/07/06 12:38] (текущий) – создано - внешнее изменение 127.0.0.1 | ||
---|---|---|---|
Строка 1: | Строка 1: | ||
+ | ====== gitosis ====== | ||
+ | {{htmlmetatags> | ||
+ | metatag-description=(Gitosis — удобное средство, | ||
+ | }} | ||
+ | {{ :: | ||
+ | |||
+ | [[Git]] - децентрализованной система управления версиями файлов. [[https:// | ||
+ | |||
+ | ====== Git и Gitosis ====== | ||
+ | OS: Ubuntu 9.10 Server x86_64. Установка git- сервера и gitosis. | ||
+ | |||
+ | gitosis – удобное средство, | ||
+ | * **Настройка сервера**: | ||
+ | < | ||
+ | # aptitude install git-core git-doc gitosis | ||
+ | ... | ||
+ | Настраивается пакет gitosis (0.2+20080825-15) ... | ||
+ | Warning: The home dir / | ||
+ | Adding system user `gitosis' | ||
+ | Adding new group `gitosis' | ||
+ | Adding new user `gitosis' | ||
+ | Not creating home directory `/ | ||
+ | |||
+ | Please read / | ||
+ | for information about how to use gitosis. | ||
+ | ... | ||
+ | </ | ||
+ | Изменим домашнюю директорию для пользователя gitosis, который будет владельцем репозиториев. Пользователь не должен иметь возможности для логина (т.е. пользователю gitosis нельзя устанавливать пароль), | ||
+ | < | ||
+ | # mkdir /home/git | ||
+ | # chown -R gitosis: | ||
+ | # vipw | ||
+ | You have modified / | ||
+ | </ | ||
+ | При помощи утилиты ssh-keygen необходимо сгенерировать [[ssh]] ключ для пользователя, | ||
+ | < | ||
+ | # su - gitosis | ||
+ | $ mkdir .ssh | ||
+ | $ cd .ssh | ||
+ | $ ssh-keygen -t rsa -f gitosiskey -q | ||
+ | Enter passphrase (empty for no passphrase): | ||
+ | Enter same passphrase again: | ||
+ | $ | ||
+ | </ | ||
+ | Теперь создадим репозитарий с настройками и добавим наш ключ: | ||
+ | < | ||
+ | $ cd .. | ||
+ | $ gitosis-init < .ssh/ | ||
+ | Initialized empty Git repository in / | ||
+ | Reinitialized existing Git repository in / | ||
+ | $ exit | ||
+ | </ | ||
+ | Скопируйте ключ gitosiskey (генерированный выше, без приставки ' | ||
+ | < | ||
+ | # chown -R gitosis: | ||
+ | # chmod 755 / | ||
+ | </ | ||
+ | Разрешим пользователю gitosis доступ по SSH | ||
+ | < | ||
+ | # nano / | ||
+ | ... | ||
+ | # Authentication: | ||
+ | PermitRootLogin no | ||
+ | AllowUsers noroot gitosis | ||
+ | ... | ||
+ | # / | ||
+ | </ | ||
+ | * **Настройка локального компьютера**: | ||
+ | < | ||
+ | $ .ssh/ | ||
+ | $ cat gitosiskey >> id_rsa | ||
+ | $ chmod 600 id_rsa | ||
+ | # aptitude install git-core git-doc | ||
+ | </ | ||
+ | |||
+ | ===== Настройка gitosis' | ||
+ | * **Создание тестового репозитория** | ||
+ | Выкачаем с сервера репозаторий gitosis-admin: | ||
+ | < | ||
+ | $ cd gittest | ||
+ | $ git clone gitosis@example.ru: | ||
+ | $ cd gitosis-admin | ||
+ | </ | ||
+ | Редактируем gitosis.conf. Создаем новый репозиторий для нашего проекта, | ||
+ | < | ||
+ | $ nano gitosis.conf | ||
+ | [gitosis] | ||
+ | |||
+ | [group gitosis-admin] | ||
+ | writable = gitosis-admin | ||
+ | members = gitosis@keep | ||
+ | |||
+ | [group test2-write] | ||
+ | writable = test2 | ||
+ | members = mainwriteuser | ||
+ | |||
+ | [group test2-read] | ||
+ | readonly = test2 | ||
+ | members = onlyreadusr1 onlyreadusr2 | ||
+ | </ | ||
+ | **P.S.**:< | ||
+ | $ git push origin master | ||
+ | ERROR: | ||
+ | fatal: The remote end hung up unexpectedly | ||
+ | </ | ||
+ | |||
+ | Этими строками мы создали непосредственно сам проект test2 и трех пользователей для работы с проектом test2. Пользователь mainwriteuser@write имеет права на запись изменений в проект test2, остальные два (onlyreadusr1@read, | ||
+ | |||
+ | Создадим ключи для пользователей проекта test2. | ||
+ | < | ||
+ | $ ssh-keygen -t rsa -N "" | ||
+ | $ ssh-keygen -t rsa -N "" | ||
+ | $ ssh-keygen -t rsa -N "" | ||
+ | $ ls | ||
+ | mainwriteuser | ||
+ | </ | ||
+ | Открытые ключи формата имя_пользователя.pub (mainwriteuser.pub, | ||
+ | |||
+ | После правки gitosis.conf и копирования ключей нужно закоммитить изменения в локальный репозиторий и командой git push отправить коммит в центральный репозиторий: | ||
+ | < | ||
+ | $ git add . | ||
+ | $ git commit -am 'Added project Test2; Added group Test2' | ||
+ | $ git push | ||
+ | warning: You did not specify any refspecs to push, and the current remote | ||
+ | warning: has not configured any push refspecs. The default action in this | ||
+ | warning: case is to push all matching refspecs, that is, all branches | ||
+ | warning: that exist both locally and remotely will be updated. | ||
+ | warning: not necessarily be what you want to happen. | ||
+ | warning: | ||
+ | warning: You can specify what action you want to take in this case, and | ||
+ | warning: avoid seeing this message again, by configuring ' | ||
+ | warning: | ||
+ | warning: | ||
+ | warning: | ||
+ | warning: | ||
+ | Counting objects: 10, done. | ||
+ | Delta compression using up to 4 threads. | ||
+ | Compressing objects: 100% (7/7), done. | ||
+ | Writing objects: 100% (7/7), 1.57 KiB, done. | ||
+ | Total 7 (delta 0), reused 0 (delta 0) | ||
+ | .... | ||
+ | </ | ||
+ | Теперь git- сервер репозиториев настроен. Нужные репозитории будут созданы автоматически при первом коммите. | ||
+ | ===== Первичная загрузка проекта в репозиторий ===== | ||
+ | Первичную загрузку проекта может делать только пользователь с правом писать в главный репозиторий, | ||
+ | |||
+ | В каталоге проекта (пусть весть проект test2 состоит из одного файла README) создадим локальный репозиторий и добавим в проект файл(-ы): | ||
+ | < | ||
+ | $ cd directory/ | ||
+ | $ git init | ||
+ | $ touch README | ||
+ | $ git add . | ||
+ | $ git commit -am 'First local commit!' | ||
+ | [master (root-commit) 316810b] First local commit! | ||
+ | 6 files changed, 622 insertions(+), | ||
+ | ... | ||
+ | </ | ||
+ | Укажем локальному репозиторию, | ||
+ | < | ||
+ | $ git remote add origin gitosis@example.ru: | ||
+ | </ | ||
+ | Отправим коммит в главный репозиторий: | ||
+ | < | ||
+ | $ git push origin master | ||
+ | </ | ||
+ | **Enjoy!** Если ошибок нет, значит наш проект сохранен в главном репозитории. Теперь старый проект можно полностью удалить и начать работу в новом каталоге под управлением git' |
📌 Удобный подбор VPS по параметрам доступен на DIEGfinder.com - официальном инструменте проекта DIEG. Это часть единой экосистемы, созданной для того, чтобы помочь быстро найти подходящий VPS/VDS сервер для любых задач хостинга.
📌 Для тестирования скриптов, установщиков VPN и Python-ботов рекомендуем использовать надежные VPS на короткий срок. Подробнее о быстрой аренде VPS для экспериментов - читайте здесь.
💥 Подпишись в Телеграм 💥 и задай вопрос по сайтам и хостингам бесплатно!7 Самых Популярных Статей
- Как запустить скрипты и веб-приложения на Python
- Что такое страны TIER 1,2,3
- 7 способов сравнения файлов по содержимому в Windows или Linux
- Установка и тестирование веб-панели HestiaCP
- Nginx простые примеры конфигурации
- top, htop, atop определение загрузки ОС (Load average, LA)
- Использование rsync в примерах
7 Самых Популярных Обзоров
- Хостинг для Python-скриптов и приложений
- ТОП 4 лучших антидетект браузеров (Бесплатные & Платные)
- Подборка купонов (промокоды) на хостинг, антидетект браузеры
- Обзор THE.Hosting (PQ Hosting): надежный хостинг с профессиональной поддержкой
- Хостинг в России
- Хостинг в Европе
- Обзор браузера Dolphin {anty} для мультиаккаунтинга