Это старая версия документа!
Советуют установку доп компонентов
yum install curl policycoreutils-python postfix apt install curl openssh-server ca-certificates
# Установка репозитория через скрипт # Отличаются **gitlab-ce** и **gitlab-еe**- бесплатная и коммерческая с-но curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash # Далее ставим из пакета apt install gitlab-ce # Такой вариант тоже должен работать, чтобы не пересобирать после задания адреса # EXTERNAL_URL="http://gitlab.mysite.ru" yum install gitlab-ee
Для указания адреса по которому будет доступен сервис
external_url 'http://gitlab.mysite.ru' => /etc/gitlab/gitlab.rb
Утилита управления gitlab-ctl, (status/start/restart/stop/kill/service-list…)
GitLab ставится с целым набором нужного себе софта, в т.ч. postgres, prometheus, nginx и т.д.
Процедура описана здесь
Рассматриваем использование Apache
В файле /etc/gitlab/gitlab.rb
nginx['enable'] = false web_server['external_users'] = ['www-data'] gitlab_workhorse['listen_network'] = "tcp" gitlab_workhorse['listenUmask'] = "0" gitlab_workhorse['listen_addr'] = "127.0.0.1:8181" gitlab_workhorse['authBackend'] = "http://127.0.0.1:8080"
Включаем модули apache a2enmod proxy, rewrite, proxy_http
Создаем и включаем виртуальный хост
# This configuration has been tested on GitLab 8.2 # Note this config assumes unicorn is listening on default port 8080 and # gitlab-workhorse is listening on port 8181. To allow gitlab-workhorse to # listen on port 8181, edit /etc/gitlab/gitlab.rb and change the following: # # gitlab_workhorse['listen_network'] = "tcp" # gitlab_workhorse['listen_addr'] = "127.0.0.1:8181" # #Module dependencies # mod_rewrite # mod_proxy # mod_proxy_http <VirtualHost *:80> ServerName <my-site> ServerSignature Off ProxyPreserveHost On # Ensure that encoded slashes are not decoded but left in their encoded state. # http://doc.gitlab.com/ce/api/projects.html#get-single-project AllowEncodedSlashes NoDecode <Location /> # New authorization commands for apache 2.4 and up # http://httpd.apache.org/docs/2.4/upgrading.html#access Require all granted #Allow forwarding to gitlab-workhorse ProxyPassReverse http://127.0.0.1:8181 ProxyPassReverse http://<my-site>/ </Location> # Apache equivalent of nginx try files # http://serverfault.com/questions/290784/what-is-apaches-equivalent-of-nginxs-try-files # http://stackoverflow.com/questions/10954516/apache2-proxypass-for-rails-app-gitlab RewriteEngine on #Forward all requests to gitlab-workhorse except existing files like error documents RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f [OR] RewriteCond %{REQUEST_URI} ^/uploads/.* RewriteRule .* http://127.0.0.1:8181%{REQUEST_URI} [P,QSA,NE] # needed for downloading attachments DocumentRoot /opt/gitlab/embedded/service/gitlab-rails/public #Set up apache error documents, if back end goes down (i.e. 503 error) then a maintenance/deploy page is thrown up. ErrorDocument 404 /404.html ErrorDocument 422 /422.html ErrorDocument 500 /500.html ErrorDocument 502 /502.html ErrorDocument 503 /503.html # Debian and CentOS distribution defaults provided below LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b" common_forwarded #For CentOS distributions use #ErrorLog /var/log/httpd/logs/<my-site>_error.log #CustomLog /var/log/httpd/logs/<my-site>_forwarded.log common_forwarded #CustomLog /var/log/httpd/logs/<my-site>_access.log combined env=!dontlog #CustomLog /var/log/httpd/logs/<my-site>.log combined #For Debian distributions use ErrorLog /var/log/apache2/<my-site>_error.log CustomLog /var/log/apache2/<my-site>_forwarded.log common_forwarded CustomLog /var/log/apache2/<my-site>_access.log combined env=!dontlog CustomLog /var/log/apache2/<my-site>.log combined </VirtualHost>
Git как таковой opensource-софт, вся работа выполняется непосредственно в нем, системы типа github / gitlab это общедоступные хранилища, в которых можно размещать репозитории для внешнего хранения, софт так или иначе работает прежде всего с локальным репозиторием и уже отдельным действием отправляет данные на внешку.
# Установка apt git install # Инициализация проекта cd /'project' && git init # Добавление файлов к проекту git add . (file1 file2 ...) # Фиксация изменений (-m коммент, -a применить ко всем либо к указанным файлам) git commit -m "Text comment" -a (or changed-file1) # Добавить удаленный репозиторий git remote add origin <site>.git # Отправка на удаленный репозиторий git push origin master
master главная ветка по умолчанию, создается первым коммитом
# Cостояние файлов git status # Менеджер веток git branch # Переключение веток и загрузка из в рабочий каталог git checkout <существующая ветка> git checkout -b <новая ветка> # Постоянная метка, например для релиза git tag # История коммитов git log <имя ветки> <--all> git log --oneline --decorate --graph --all
Коммит это слепок, содержит blob (большой бинарный) объект, и хеш сумму каждого файла, в т.ч. дерево каталогов.
Каждый коммит содержит ссылку на предыдущий так формируется цепочка.
Ветка это ничто иное как условный указатель на последний коммит, который будет указан родителем следующему. Master абсолютно обычная ветка, просто умолчательная и по наитию используется как основная
HEAD это указатель на текущую, локальную ветку, используемую сейчас, увидеть ее можно в команде git log
При переходе между ветками, заменяется все содержимое рабочего каталога, файлы автоматически подменяются
Общее
Есть 4 основных элемента: Рабочий каталог, Промежуточная область, Локальный репозиторий, Удаленный репозиторий
Установка
Нормальный клиент здесь- https://gitforwindows.org/
После установки делаем подпись, в «git bash» пишем:
$ git config --global user.name "YourName" $ git config --global user.mail "YourMail" $ git config --global -- list
Доступ SSH
Затем настраиваем сертификат, для без парольного доступа.
git bash:
# Генерация ключевой пары (можно: -t rsa -b 4096 -C) $ ssh-keygen -t ed25519 -C "YourEMail"
Вводим имя файла, парольную фразу можно не вводить, чтобы не вводить ее при каждом обращении в git
После завершения, файлы будут в домашней директории пользователя, помещаем их в «~/.ssh»
закрытый ключ переименовываем в «id_rsa» (тут неясный момент!)
Содержимое открытого ключа («.pub») копируем при создании ключа в лк git'a, там нужно добавить ключ, с содержанием этого открытого ключа
Так же нужно добавить созданных ключ агенту авторизации
$ eval "$(ssh-agent -s)" $ ssh-add ~/.ssh/id_ed25519
После пишем: «$ ssh -T git@github.com» (можно добавить -vT, для расширенного вывода), для принятия сертификата, в ответе должна фигурировать строка типа: «Hi «YourName»! You've successfully authenticated, but GitHub does not provide shell access», если так, тогда все норм
Траблы с тортилой
При установке стоило совершить один неверный шаг и выбрать тортилу как транспорт, п*зда, от нее нет спасения, работать она не работает, с таким подходом во всяком случае, и сменить никак не удавалось долгое время, в итоге заменил переменную окружения GIT_SSH, установил путь к стандартной утилите («C:\Program Files\Git\usr\bin\ssh.exe») и заработало.
Использование
Репозитории создаются и далее привязаны к конкретным каталогам, для работы с репозиторием нужно перейти в его каталог.
Инициализация репозитория
Переходим в созданный каталог: «$ git init«
Добавление файлов
Добавление в промежуточную область: «$ git add .«
Точка добавит все, можно указать конкретные, либо маску
Просмотр состояния: «git status»
Фиксация изменений
Фиксация изменений в файлах: «$ git commit -m «text-comment»«
Отмена фиксации: «$ git reset HEAD~1«
Удаленный источник
Добавление: «$ git remote add origin <repo-url>«
Список доступных: «$ git remote -v«
Дополнительно
# Изменения в файлах: $ git diff # История фиксаций: $ git diff- ???? # Мержинг если есть конфликты коммитов $ git merge --allow-unrelated-histories