Web Analytics

oci2git

⭐ 374 stars Spanish by Virviil

🌐 Idioma

OCI2Git

[Documentación][documentation] Crates.io Licencia Descargas

[//]: # (simulación para el futuro test.yaml) [//]: # ([![Estado de Prueba](https://img.shields.io/github/actions/workflow/status/Virviil/oci2git/rust.yml?branch=master&event=push&label=Test)](https://github.com/Virviil/oci2git/actions))

Una aplicación en Rust que convierte imágenes de contenedores (Docker, etc.) en repositorios Git. Cada capa del contenedor se representa como un commit de Git, preservando la historia y la estructura de la imagen original.

Demostración de OCI2Git convirtiendo la imagen de nginx

Características

Casos de uso

Diferenciación de capas

Al solucionar problemas de contenedores, puedes usar las potentes capacidades de comparación de Git para identificar exactamente qué cambió entre dos capas. Al ejecutar git diff entre commits, los ingenieros pueden ver con precisión qué archivos se agregaron, modificaron o eliminaron, facilitando mucho la comprensión del impacto de cada instrucción Dockerfile y la localización de cambios problemáticos. Ejemplo de diferencia de capa

Rastreo de origen

Usando git blame, los desarrolladores pueden determinar rápidamente qué capa introdujo un archivo específico o línea de código. Esto es especialmente útil al diagnosticar problemas con archivos de configuración o dependencias. En lugar de inspeccionar manualmente cada capa, puedes rastrear inmediatamente el origen de cualquier archivo hasta su capa fuente y la instrucción Dockerfile correspondiente.

Rastreo del ciclo de vida de archivos

OCI2Git te permite seguir el recorrido de un archivo específico a lo largo de la historia de la imagen del contenedor. Puedes observar cuándo se creó originalmente un archivo, cómo fue modificado en diferentes capas, y si/cuándo fue eliminado. Esta vista integral ayuda a entender la evolución del archivo sin tener que rastrear manualmente los cambios en docenas de capas potenciales.

Para rastrear el historial de un archivo en tu imagen de contenedor — incluyendo cuándo apareció por primera vez, fue cambiado, o eliminado — puedes usar estos comandos de Git después de la conversión:

# Full history of a file (including renames)
git log --follow -- /rootfs/my/file/path

First appearance (i.e. creation) - see which layer introduced the file

git log --diff-filter=A -- /rootfs/my/file/path

All changes made to the file (with diffs)

git log -p --follow -- /rootfs/my/file/path

When the file was deleted

git log --diff-filter=D -- /rootfs/my/file/path

Show short commit info (concise layer history)

git log --follow --oneline -- /rootfs/my/file/path
Estos comandos facilitan rastrear el historial completo de cualquier archivo a través de las capas del contenedor sin la complejidad de extraer y comparar manualmente los archivos tar de las capas.

Análisis Multicapa

A veces, las comparaciones más reveladoras provienen de examinar cambios a través de múltiples capas no consecutivas. Con OCI2Git, puedes usar las herramientas de comparación de Git para analizar cómo evolucionaron los componentes a lo largo de varias etapas de construcción, identificando patrones que podrían ser invisibles al mirar solo capas adyacentes.

Exploración de Capas

Al usar git checkout para moverte a cualquier commit específico, puedes examinar el sistema de archivos del contenedor exactamente como existía en esa capa. Esto permite a los desarrolladores inspeccionar el estado preciso de archivos y directorios en cualquier punto del proceso de creación de la imagen, proporcionando un contexto invaluable al depurar o examinar el comportamiento del contenedor. Checkout a commit anterior

Análisis Multi-Imagen

Al trabajar con múltiples imágenes de contenedor que comparten un ancestro común, OCI2Git crea ramas inteligentemente solo cuando las imágenes realmente divergen. Esto te permite analizar múltiples imágenes relacionadas en un único repositorio mientras preservas su historia común.

# Convert first image to create the base repository
oci2git postgres:16.9-alpine3.21 -o alp

Convert second image to the same output folder

oci2git nginx:1.28.0-alpine-slim -o alp
OCI2Git detecta automáticamente capas compartidas entre imágenes y crea una estructura de ramas que refleja su base común. El historial de Git mostrará: Este enfoque es particularmente valioso para: Estructura de repositorio multi-imagen mostrando base compartida y ramas divergentes

Casos de Uso Adicionales

Instalación

Desde el Código Fuente

# Clone the repository
git clone https://github.com/virviil/oci2git.git
cd oci2git

Install locally

cargo install --path .

Desde Crates.io

cargo install oci2git

Uso

oci2git [OPTIONS] 
Argumentos: Nombre de la imagen a convertir (por ejemplo, 'ubuntu:latest') o ruta al archivo tar cuando se usa el motor tar

Opciones: -o, --output Directorio de salida para el repositorio Git [por defecto: ./container_repo] -e, --engine Motor de contenedor a usar (docker, nerdctl, tar) [por defecto: docker] -h, --help Imprimir información de ayuda -V, --version Imprimir información de la versión

Variables de Entorno: TMPDIR Establezca esta variable de entorno para cambiar la ubicación predeterminada usada para el procesamiento intermedio de datos. Esto depende de la plataforma (por ejemplo, TMPDIR en Unix/macOS, TEMP o TMP en Windows).

Ejemplos

Usando el motor Docker (por defecto):

oci2git -o ./ubuntu-repo ubuntu:latest

Usando un archivo tarball de imagen ya descargado:

oci2git -e tar -o ./ubuntu-repo /path/to/ubuntu-latest.tar

El motor tar espera un tarball en formato OCI válido, que típicamente se crea con docker save:

# Create a tarball from a local Docker image
docker save -o ubuntu-latest.tar ubuntu:latest

Convert the tarball to a Git repository

oci2git -e tar -o ./ubuntu-repo ubuntu-latest.tar

Esto creará un repositorio Git en ./ubuntu-repo que contiene:

El historial de Git refleja el historial de capas del contenedor:

Estructura del Repositorio

repository/
├── .git/
├── Image.md     # Complete image metadata
└── rootfs/      # Filesystem content from the container

Requisitos

Licencia

MIT

[documentación]: https://docs.rs/oci2git/

--- Tranlated By Open Ai Tx | Last indexed: 2025-12-12 ---