This commit is contained in:
Dmitry Zuikov 2024-03-17 07:28:14 +03:00
parent 16b5b6220a
commit ff181e3e5c
4 changed files with 121 additions and 6 deletions

1
.hbs2-git/.gitignore vendored Normal file
View File

@ -0,0 +1 @@
./state.db

5
.hbs2-git/manifest Normal file
View File

@ -0,0 +1,5 @@
title: "hbs2 project repo"
author: "Dmitry Zuikov"
public: yes
Project description TBD

View File

@ -377,6 +377,20 @@ hbs2-git произойдет переиндексация и он будет с
В настоящий момент hbs2-git доступен в виде исходных кодов или кэшированных В настоящий момент hbs2-git доступен в виде исходных кодов или кэшированных
артефактов и пакета для пакетного менеджера nix. артефактов и пакета для пакетного менеджера 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 В случае использования nix необходимо включить поддержку nix flakes и nix profile
\subsection{Установка при помощи nix profile} \subsection{Установка при помощи nix profile}
@ -715,8 +729,6 @@ cat keys | hbs2 groupkey from-keys
В stdin перечислить в виде строк (без кавычек) публичные ключи участников В stdin перечислить в виде строк (без кавычек) публичные ключи участников
\pagebreak
\paragraph{Способ 3 / из <<сигилов>>} \paragraph{Способ 3 / из <<сигилов>>}
Файл с персональной информацией некоего агента назвается <<сигил>> (<<sigil>>). Файл с персональной информацией некоего агента назвается <<сигил>> (<<sigil>>).
@ -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{Подписка на репозиторий} \subsubsection{Подписка на репозиторий}
Подписаться на репозиторий, но не клонировать его: Подписаться на репозиторий, но не клонировать его:
@ -1175,6 +1280,10 @@ hbs2-keyman не отображает секретные ключи, тольк
\pagebreak \pagebreak
\section{Поддержка возможностей git}
пока не поддерживаются подписанные теги. По крайней мере не тестировались.
\section{Разное} \section{Разное}
В документации или где-то еще могут спорадически появляться префиксы hbs21 (hbs21://). В документации или где-то еще могут спорадически появляться префиксы hbs21 (hbs21://).

View File

@ -295,11 +295,11 @@
"suckless-conf": "suckless-conf_2" "suckless-conf": "suckless-conf_2"
}, },
"locked": { "locked": {
"lastModified": 1710642921, "lastModified": 1710646368,
"narHash": "sha256-sI6oirrSetQs/1zjTBlwpUtzYwrNMjjZQs274H59/hA=", "narHash": "sha256-0ayUFjOSX4UqSRBbLJeqPMBAn+qSAlFRoICVABliF80=",
"ref": "lwwrepo", "ref": "lwwrepo",
"rev": "9546a440ea74f2664af9fe1255e88a7531065d1c", "rev": "16b5b6220a4be96e30c65f34d631445c28676feb",
"revCount": 1001, "revCount": 1002,
"type": "git", "type": "git",
"url": "http://git.hbs2/BTThPdHKF8XnEq4m6wzbKHKA6geLFK4ydYhBXAqBdHSP" "url": "http://git.hbs2/BTThPdHKF8XnEq4m6wzbKHKA6geLFK4ydYhBXAqBdHSP"
}, },