From ff181e3e5cf5144dccf36299c05a345a83316d2a Mon Sep 17 00:00:00 2001 From: Dmitry Zuikov Date: Sun, 17 Mar 2024 07:28:14 +0300 Subject: [PATCH] wip --- .hbs2-git/.gitignore | 1 + .hbs2-git/manifest | 5 ++ docs/papers/hbs2-git-doc-0.24.1.tex | 113 +++++++++++++++++++++++++++- nix/peer/flake.lock | 8 +- 4 files changed, 121 insertions(+), 6 deletions(-) create mode 100644 .hbs2-git/.gitignore create mode 100644 .hbs2-git/manifest diff --git a/.hbs2-git/.gitignore b/.hbs2-git/.gitignore new file mode 100644 index 00000000..e3626e3a --- /dev/null +++ b/.hbs2-git/.gitignore @@ -0,0 +1 @@ +./state.db diff --git a/.hbs2-git/manifest b/.hbs2-git/manifest new file mode 100644 index 00000000..3c5b0196 --- /dev/null +++ b/.hbs2-git/manifest @@ -0,0 +1,5 @@ +title: "hbs2 project repo" +author: "Dmitry Zuikov" +public: yes + +Project description TBD diff --git a/docs/papers/hbs2-git-doc-0.24.1.tex b/docs/papers/hbs2-git-doc-0.24.1.tex index 09497bf2..db4d6eac 100644 --- a/docs/papers/hbs2-git-doc-0.24.1.tex +++ b/docs/papers/hbs2-git-doc-0.24.1.tex @@ -377,6 +377,20 @@ hbs2-git произойдет переиндексация и он будет с В настоящий момент hbs2-git доступен в виде исходных кодов или кэшированных артефактов и пакета для пакетного менеджера nix. +Исходные коды доступны по следующим адресам: + +\begin{table}[h!] +\centering +\begin{tabular}{|l|l|} +\hline +HBS2 & \texttt{hbs2://BTThPdHKF8XnEq4m6wzbKHKA6geLFK4ydYhBXAqBdHSP} \\ \hline +HTTPS & \texttt{https://git.hbs2.net/BTThPdHKF8XnEq4m6wzbKHKA6geLFK4ydYhBXAqBdHSP} \\ \hline +GitHub & \texttt{https://github.com/voidlizard/hbs2.git} \\ \hline +\end{tabular} +\end{table} + +\pagebreak + В случае использования nix необходимо включить поддержку nix flakes и nix profile \subsection{Установка при помощи nix profile} @@ -715,8 +729,6 @@ cat keys | hbs2 groupkey from-keys В stdin перечислить в виде строк (без кавычек) публичные ключи участников -\pagebreak - \paragraph{Способ 3 / из <<сигилов>>} Файл с персональной информацией некоего агента назвается <<сигил>> (<>). @@ -756,6 +768,99 @@ hbs2 sigil check my.sigil перечислив в командной строке список <<сигилов>>. +\subsubsection{Конфиг и состояние} + +Конфиг и состояние hbs2-git находятся в каталоге .hbs2-git репозитория. + +Конфиг по умолчанию создаётся автоматически. Текущие настройки: + +\begin{verbatim} +export include "ref-mask" # включать специфические ссылки +export exclude "refs-mask" # исключать специфические ссылки +export tags # экспортировать теги по умолчанию +\end{verbatim} + +\paragraph{Манифест} + +Описание проекта (манифест) в виде небольшого (до 256Kb) +текстового можно положить в файл \texttt{.hbs2-git/manifest} + +Данный манифест будет учитываться при дальнейшем поиске и отображении проектов. + +\paragraph{Пример конфига} + +\begin{verbatim} +export include "refs/heads/master" +export include "refs/heads/main" +export exclude "refs/heads/*" +export tags +\end{verbatim} + +Означает, что каждая операция \texttt{git push} которая на деле является операцией EXPORT -- +экспортирует все объекты, перечисленные в конфигурации: бранч master, бранч main, бранч, на который +указывает \texttt{HEAD} и бранчи, для которых выполняется \texttt{git push}. + +Если указать, например, + +\begin{verbatim} +export exclude "refs/heads/*" +\end{verbatim} + +то поведение будет соответствовать поведению обычного \texttt{git push}, то есть будет +экспортировано только то, для чего выполняется \texttt{git push} и текущий бранч \texttt{HEAD}, так +как иначе \texttt{git clone} будет работать с проблемами. + +Такое поведение по умолчанию (экспортировать несколько бранчей и теги) бывает удобно, когда мы хотим +зеркалировать и сохранять репозиторий полностью или по большей его части. + +\subsubsection{Интеграция с системами сборки} + +Для некоторых система сборки и вообще любого ПО, которое по какой-то причине не может использовать +механизмы \texttt{git-remote-helper} и использовать протокол \texttt{hbs2://}, можно использовать +средство \texttt{hbs2-git-reposync}. + +Данная утилита зеркалирует заданные репозитории, время от времени их синхронизируя. Кроме того, она +умеет слушать обновления рефлогов от hbs2-peer и синхронизировать репозиторий по этому событию. + +Пример настройки окружения с её использованием: + +\paragraph{Конфигурационный файл} + + +\begin{verbatim} +$ cat ~/.config/hbs2-git-reposync/config + +rpc unix "/tmp/hbs2-rpc.socket" + +; http-port 4017 + +; по умолчанию +; root "/home/user/.local/share/hbs2-git-reposync/repo" + +;; single reflog + +;; для старого hbs2-git-reposync +;; для нового будет lwwref +[ reflog "BTThPdHKF8XnEq4m6wzbKHKA6geLFK4ydYhBXAqBdHSP" +;; options may go here if any +] + +\end{verbatim} + +Данная настройка добавит git bare репозиторий BTThPdHKF8XnEq4m6wzbKHKA6geLFK4ydYhBXAqBdHSP + +\texttt{\$root/BTThPdHKF8XnEq4m6wzbKHKA6geLFK4ydYhBXAqBdHSP} + +и будет его отдавать по \texttt{git-http-dumb-protocol}. + +Также можно настроить любой вебсервер на отдачу этого каталога, либо же +использовать любой вебсервер на порту 80 с проксированием запросов на порт hbs2-git-reposync, +в данном случае -- это 4017. + +После этого репозиторий станет доступен по протоколу \texttt{http://} или \texttt{git+http://} + +и можно будет на него ссылаться, например, так: + \subsubsection{Подписка на репозиторий} Подписаться на репозиторий, но не клонировать его: @@ -1175,6 +1280,10 @@ hbs2-keyman не отображает секретные ключи, тольк \pagebreak +\section{Поддержка возможностей git} + +пока не поддерживаются подписанные теги. По крайней мере не тестировались. + \section{Разное} В документации или где-то еще могут спорадически появляться префиксы hbs21 (hbs21://). diff --git a/nix/peer/flake.lock b/nix/peer/flake.lock index 73109fd7..1c4dd190 100644 --- a/nix/peer/flake.lock +++ b/nix/peer/flake.lock @@ -295,11 +295,11 @@ "suckless-conf": "suckless-conf_2" }, "locked": { - "lastModified": 1710642921, - "narHash": "sha256-sI6oirrSetQs/1zjTBlwpUtzYwrNMjjZQs274H59/hA=", + "lastModified": 1710646368, + "narHash": "sha256-0ayUFjOSX4UqSRBbLJeqPMBAn+qSAlFRoICVABliF80=", "ref": "lwwrepo", - "rev": "9546a440ea74f2664af9fe1255e88a7531065d1c", - "revCount": 1001, + "rev": "16b5b6220a4be96e30c65f34d631445c28676feb", + "revCount": 1002, "type": "git", "url": "http://git.hbs2/BTThPdHKF8XnEq4m6wzbKHKA6geLFK4ydYhBXAqBdHSP" },