Продолжаю описывать то с чем сталкиваюсь в повседневности при использовании Mercurial.
Я на системе srv-bionic отлаживаю работу различных сервисов и настроек и порой прихожу к выводу что скрипт (dproject/default) настройки системы следует дополнить.
После того как система srv-bionic запустилась я выкачиваю скрипт с центрального хранилища и произвожу настройку системы Ubuntu 18.04 Server amd64 для дальнейшей работы.
Назрел вопрос как их добавить?
ekzorchik@srv-bionic:~$ nano dproject/default
#locale
sudo locale-gen ru_RU
sudo locale-gen ru_RU.UTF8
sudo locale-gen en_US.UTF-8
sudo sed -i 's/^# *\(en_US.UTF-8\)/\1/' /etc/locale.gen && sudo locale-gen
sudo sed -i 's/ru_RU.KOI8-R/ru_RU.UTF-8/g' /etc/locale.alias
echo "LC_ALL="en_US.UTF-8"" | sudo -s tee /etc/default/locale
echo "LANG="en_US.UTF-8"" | sudo tee -a /etc/default/locale
ekzorchik@srv-bionic:~$ cd dproject/
ekzorchik@srv-bionic:~/dproject$ hg status
M default
ekzorchik@srv-bionic:~/dproject$ hg commit -m "Add stroki #Locale in default file" -u ekzorchik
Теперь нужно передать эти изменения в основной репозитарий.
ekzorchik@srv-bionic:~/dproject$ hg outgoing ssh://172.33.33.7://home/ekzorchik/dproject
comparing with ssh://172.33.33.7//home/ekzorchik/dproject
ekzorchik@172.33.33.7's password:
searching for changes
changeset: 5:89208db446ca
tag: tip
user: ekzorchik
date: Thu Sep 20 22:43:48 2018 +0300
summary: Add stroki #Locale in default file
ekzorchik@srv-bionic:~/dproject$ hg push ssh://172.33.33.7://home/ekzorchik/dproject
pushing to ssh://172.33.33.7//home/ekzorchik/dproject
ekzorchik@172.33.33.7's password:
searching for changes
remote: adding changesets
remote: adding manifests
remote: adding file changes
remote: added 1 changesets with 1 changes to 1 files
После на системе 172.33.33.7 проверяю, что в репозитарии dproject присутствуют добавленные изменения:
ekzorchik@navy:~/dproject$ hg tip
changeset: 5:89208db446ca
tag: tip
user: ekzorchik
date: Thu Sep 20 22:43:48 2018 +0300
summary: Add stroki #Locale in default file
итак изменения есть, а содержимое файла также изменилось? А вот изменений нет в явном виде, но я ведь могу откатить изменения на указанную зафиксированную ревизию, а нет нужно всего лишь скомандовать обновить:
ekzorchik@navy:~/dproject$ hg update
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
и содержимое файла успешно пришло к видеоизмененному виду.
Вот теперь я на практике убедился в еще одной полезности использования Mercurial.
А вот теперь усложним задачу и разберу, что если Mercurial репозитарии находятся на домашнем защищенном сервере где доступ осуществляется к ним через https://user&host:port
На заметку:
- Система srv-bionic → эта система на которой я разрабатываю/отлаживаю написание скриптов под сервис
- Система srv-wiki → эта система на которой я храню и публикую в Web-свои репозитарии кода, к ним я могу получить доступ через защищенное соединение из вне и локальной сети. Доступ к нему закрыт: Auth Basic, Fail2ban + UFW и т.д.
ekzorchik@srv-bionic:~/glpiproject$ hg outgoing --insecure https://172.35.35.7/hg/glpiproject
ключ «--insecure
» → отключить проверку сертификатов
ekzorchik@srv-bionic:~/glpiproject$ hg push --insecure https://172.33.33.7/hg/glpiproject
pushing to https://172.33.33.7/hg/glpiproject
warning: connection security to 172.33.33.7 is disabled per current settings; communication is susceptible to eavesdropping and tampering
http authorization required for https://172.33.33.7/hg/glpiproject
realm: Private zone Project
user: ekzorchik
password:
warning: connection security to 172.33.33.7 is disabled per current settings; communication is susceptible to eavesdropping and tampering
searching for changes
abort: HTTP Error 500: Internal Server Error
Почему ошибка?
Попробую вывести на консоль расширенную диагностическую информацию чтобы может быть разобраться в проблеме:
ekzorchik@srv-bionic:~/glpiproject$ hg push --insecure https://172.33.33.7/hg/glpiproject --traceback
Так, а если посмотреть логи на самом сервере с ролью Mercurial:
ekzorchik@navy:~$ sudo tail -f /var/log/apache2/error.log | grep glpiproject
[Wed Oct 31 20:37:45.933144 2018] [cgi:error] [pid 17481] [client 172.33.33.25:47902] AH01215: [Errno 13] Permission denied: '/var/www/html/hg/glpiproject/.hg/wlock': /var/www/html/hg/hgwebdir.cgi
Ну да конечно, ведь я создал резопитарий под собой, а забыл поправить права вручную на:
ekzorchik@navy:~$ sudo chown -R ekzorchik:www-data /var/www/html/hg/glpiproject/
В процессе нашел, как с текущей системы не указывать связку авторизации:
ekzorchik@srv-bionic:~/glpiproject$ nano .hg/hgrc
[auth]
devserver.prefix = https://172.33.33.7/hg/glpiproject
devserver.username = ekzorchik
devserver.password = 712mbddr@
ekzorchik@srv-bionic:~/glpiproject$ hg push --insecure https://172.33.33.7/hg/glpiproject
Запускаю еще раз на передачу с текущей системы файлов репозитария в основную где у меня хранятся все и которая считается эталонной:
ekzorchik@srv-bionic:~/glpiproject$ hg push --insecure https://172.33.33.7/hg/glpiproject
pushing to https://172.33.33.7/hg/glpiproject
warning: connection security to 172.33.33.7 is disabled per current settings; communication is susceptible to eavesdropping and tampering
warning: connection security to 172.33.33.7 is disabled per current settings; communication is susceptible to eavesdropping and tampering
searching for changes
remote: adding changesets
remote: adding manifests
remote: adding file changes
remote: added 1 changesets with 1 changes to 1 files
warning: connection security to 172.33.33.7 is disabled per current settings; communication is susceptible to eavesdropping and tampering
После на системе 172.33.33.7 проверяю, что в репозитарии glpiproject присутствуют добавленные изменения:
ekzorchik@navy:~$ cd /var/www/html/hg/glpiproject/
ekzorchik@navy:/var/www/html/hg/glpiproject$
ekzorchik@navy:/var/www/html/hg/glpiproject$ hg tip
changeset: 0:4c1ed57d5e5e
tag: tip
user: ekzorchik
date: Wed Oct 31 20:21:58 2018 +0300
summary: Chapter №1 script install glpi
Переданные изменения вижу, но пока не вижу самих файлов, исправляю текущее положении дел:
ekzorchik@navy:/var/www/html/hg/glpiproject$ hg update
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
ekzorchik@navy:/var/www/html/hg/glpiproject$ ls
glpiscript
Пока на этом у меня всё, с уважением автор блога Олло Александр aka ekzorchik.