Как синхронизировать изменения в репозитарий Mercurial

Posted by

Продолжаю описывать то с чем сталкиваюсь в повседневности при использовании 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.