Я использую в своих наработках система хранения ветвления на базе Mercurial. Просто так случилось, что мне надоело писать/копировать наработанное из документа в документ если он дополнялся или изменялся. И я решился уже на 100% что буду использовать Mercurial для всего: скрипты, документы и т. д. Вот только мало создать репозитарий, нужно же выкачивать и на тестовую систему чтобы, к примеру производить базовую настройки систем.
Задача: разобрать, как клонировать репозитарий с основной системы на тестовую дабы каждый раз не заниматься копирование/вставка
Находясь на тестовой системе Ubuntu 18.04 Server пробую склонировать репозитарий (с основной) посвященный базовой настройки системы:
ekzorchik@srv-bionic:~$ hg clone http://172.40.40.7/dproject
Command 'hg' not found, but can be installed with:
sudo apt install mercurial
ekzorchik@srv-bionic:~$ sudo apt-get install mercurial -y
Снова пробую, но пока не знаю как нужно правильно указывать путь:
ekzorchik@srv-bionic:~$ hg clone http://172.40.40.7/dproject
abort: error: Connection refused
Снова пробую, но указываю ключи для вывода диагностической информации дабы разобраться что я делаю не так:
ekzorchik@srv-bionic:~$ hg --verbose --debug clone http://172.40.40.7/dproject
using http://172.40.40.7/dproject
sending capabilities command
abort: error: Connection refused
Смотрю текущую версию пакета Mercurial в системе:
ekzorchik@srv-bionic:~$ hg --version | head -n 1
Mercurial Distributed SCM (version 4.5.3)
На основной машине запускаю из директории проекта:
ekzorchik@navy:~/dproject$ hg serve
(поднимается локальный Web-сервис, доступный при обращении к текущему хосту с указанием порта 8000)
listening at http://navy:8000/ (bound to *:8000)
172.40.40.25 - - [18/Aug/2018 00:19:37] "GET /?cmd=capabilities HTTP/1.1" 200 -
172.40.40.25 - - [18/Aug/2018 00:19:38] "GET /?cmd=batch HTTP/1.1" 200 - x-hgarg-1:cmds=heads+%3Bknown+nodes%3D x-hgproto-1:0.1 0.2 comp=zstd,zlib,none,bzip2
172.40.40.25 - - [18/Aug/2018 00:19:38] "GET /?cmd=getbundle HTTP/1.1" 200 - x-hgarg-1:bookmarks=1&bundlecaps=HG20%2Cbundle2%3DHG20%250Abookmarks%250Achangegroup%253D01%252C02%250Adigests%253Dmd5%252Csha1%252Csha512%250Aerror%253Dabort%252Cunsupportedcontent%252Cpushraced%252Cpushkey%250Ahgtagsfnodes%250Alistkeys%250Aphases%253Dheads%250Apushkey%250Aremote-changegroup%253Dhttp%252Chttps%250Astream%253Dv2&cg=1&common=0000000000000000000000000000000000000000&heads=230386b990839810f4bfbdca3b87a9c0d494c7b8&listkeys=bookmarks&phases=1 x-hgproto-1:0.1 0.2 comp=zstd,zlib,none,bzip2
А на гостевой тогда могу уже запустить команду склонировать репозитарий:
ekzorchik@srv-bionic:~$ hg --verbose --debug clone http://172.40.40.7:8000 dproject
using http://172.40.40.7:8000/
sending capabilities command
query 1; heads
sending batch command
requesting all changes
sending getbundle command
bundle2-input-bundle: with-transaction
bundle2-input-part: "changegroup" (params: 1 mandatory 1 advisory) supported
adding changesets
add changeset 5fe9ad8f69df
add changeset 8b5f7c4e5a68
add changeset f90fcc49e1f7
add changeset 6059f155dbd9
add changeset 230386b99083
adding manifests
adding file changes
adding default revisions
adding majordomo revisions
added 5 changesets with 5 changes to 2 files
bundle2-input-part: total payload size 10090
bundle2-input-part: "listkeys" (params: 1 mandatory) supported
bundle2-input-part: "phase-heads" supported
bundle2-input-part: total payload size 24
bundle2-input-bundle: 2 parts total
checking for updated bookmarks
updating the branch cache
new changesets 5fe9ad8f69df:230386b99083
updating to branch default
resolving manifests
branchmerge: False, force: False, partial: False
ancestor: 000000000000, local: 000000000000+, remote: 230386b99083
default: remote created -> g
getting default
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
Итого: нужно разобрать как настроить постоянный доступ к репозитариям через Web-интерфейс или же использовать так когда в написании заметок есть необходимость.
Хотя ведь можно клонировать репозитарий не только через http обращение, но и через ssh. Теперь вопрос как это сделать?
ekzorchik@srv-bionic:~$ sudo apt-get install openssh-server -y
ekzorchik@srv-bionic:~$ sudo apt-get install mercurial -y
ekzorchik@srv-bionic:~$ hg clone ssh://ekzorchik@172.40.40.7://home/ekzorchik/dproject
The authenticity of host '172.40.40.7 (172.40.40.7)' can't be established.
ECDSA key fingerprint is SHA256:QSpiI6xIgpkV8Vb2qM6lIXeLa2zCz2yOXcZGTgrgve4.
Are you sure you want to continue connecting (yes/no)? yes
remote: Warning: Permanently added '172.40.40.7' (ECDSA) to the list of known hosts.
ekzorchik@172.40.40.7's password:
destination directory: dproject
requesting all changes
adding changesets
adding manifests
adding file changes
added 5 changesets with 5 changes to 2 files
new changesets 5fe9ad8f69df:230386b99083
updating to branch default
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
Проверяю содержимое склонированного репозитария:
ekzorchik@srv-bionic:~$ ls dproject/ -al
total 16
drwxrwxr-x 3 ekzorchik ekzorchik 4096 Aug 18 00:31 .
drwxr-xr-x 7 ekzorchik ekzorchik 4096 Aug 18 00:31 ..
-rwxrwxr-x 1 ekzorchik ekzorchik 1017 Aug 18 00:31 default
drwxrwxr-x 4 ekzorchik ekzorchik 4096 Aug 18 00:31 .hg
Ага я действительно его себе склонировал и могу уже из него запустить скрипт на исполнение.
ekzorchik@srv-bionic:~$ sudo ./dproject/default
[sudo] password for ekzorchik:
Работает. Вот и еще раз я убедился что не стоит совершать однообразные действия, а учиться использовать различные инструменты в самообразовании которые здорово упрощают работу. И инструмент Mercurial как раз один из них.
На заметку: Данная заметка применима, как к Ubuntu 18.04 Server так и к Ubuntu 16.04 Server. Проверено от 21.08.2018
На этом у меня пока все, с уважением автор блога Олло Александр aka ekzorchik.