|
||
---|---|---|
.. | ||
README.md | ||
TESTING.md | ||
bcd.py | ||
gitlib-tests.py | ||
gitlib.py | ||
requirements.txt |
README.md
GitLib
La gitlib.py
es una librería de Python también usable como programa de línea
de comandos para pruebas.
Contiene las funciones de gestión de git, y la parte de línea de comandos permite ejecutarlas sin necesitar escribir un programa que use la librería.
Instalación de dependencias para python
La conversion del código a Python 3 requiere actualmente los paquetes especificados en requirements.txt
Para instalar dependencias de python se usa el modulo venv (https://docs.python.org/3/library/venv.html) que instala todas las dependencias en un entorno independiente del sistema.
Uso
Distribuciones antiguas (18.04)
sudo apt install -y python3.8 python3.8-venv python3.8-dev python3-venv libarchive-dev libblkid-dev pkg-config libacl1-dev
python3.8 -m venv venvog
. venvog/bin/activate
python3.8 -m pip install --upgrade pip
pip3 install -r requirements.txt
Ejecutar con:
./gitlib.py
En modo de linea de comando, hay ayuda que se puede ver con:
./gitlib.py --help
Los comandos que comienzan por --test
existen para hacer pruebas internas, y existen temporalmente para probar partes especificas del código. Es posible que necesiten condiciones especificas para funcionar, y van a eliminarse al completarse el desarrollo.
Uso
Nota: Preferiblemente ejecutar como root
, ya que sudo
borra los cambios a las variables de entorno realizadas por venv. El resultado probable es un error de falta de módulos de Python, o un fallo del programa por usar dependencias demasiado antiguas.
# . venv/bin/activate
# ./opengnsys_git_installer.py
Inicializar un repositorio:
./gitlib.py --init-repo-from /dev/sda2 --repo linux
Esto inicializa el repositorio 'linux' con el contenido /mnt/sda2.
--repo
especifica el nombre de uno de los repositorios fijados durante la instalación de git (ver git installer).
El repositorio de sube al ogrepository, que se obtiene del parámetro de arranque pasado al kernel.
Clonar un repositorio:
./gitlib.py --clone-repo-to /dev/sda2 --boot-device /dev/sda --repo linux
Esto clona un repositorio del ogrepository. El destino es un dispositivo físico que se va a formatear con el sistema de archivos necesario.
--boot-device
especifica el dispositivo de arranque donde se va a instalar el bootloader (GRUB o similar)
--repo
es el nombre de repositorio contenido en ogrepository.
Documentación
Se puede generar documentación de Python con una utilidad como pdoc3 (hay multiples alternativas posibles):
# Instalar pdoc3
pip install --user pdoc3
# Generar documentación
pdoc3 --force --html opengnsys_git_installer.py
Funcionamiento
Requisitos
La gitlib esta diseñada para funcionar dentro de un entorno opengnsys existente. Invoca algunos de los comandos de opengnsys internamente, y lee los parámetros pasados al kernel en el oglive.
Metadatos
Git no es capaz de almacenar datos de atributos extendidos, sockets y otros tipos de archivos especiales. El gitlib los almacena en .opengnsys-metadata en el raíz del repositorio.
Los datos se guardan en archivos de tipo jsonl
, una estructura de JSON por linea. Esto es para facilitar aplicaciones parciales solo aplicando el efecto de las lineas necesarias.
Existen estos archivos:
acls.jsonl
: ACLsempty_directories.jsonl
: Directorios vacíos, ya que Git no es capaz de guardarlosfilesystems.json
: Información sobre sistemas de archivos: tipos, tamaños, UUIDsgitignores.jsonl
: Lista de archivos .gitignore (los renombramos para que no interfieran con git)metadata.json
: Metadatos generales acerca del repositoriospecial_files.jsonl
: Archivos especiales como socketsxattrs.jsonl
: Atributos extendidos