Saltar al contenido principal Saltar a navegación Saltar al pie de página
Tiempo limitado: Programa Design Partner — plan BUSINESS de por vida

Fork de un repositorio

Clona un repositorio completo (app, base de datos, archivos) en segundos. Cualquier tamaño. Cero disco extra.

Fork de un repositorio

Esta es la característica estrella: clonar un entorno de producción completo (la app, la base de datos, los archivos de configuración) en segundos. Cualquier tamaño. Cero disco extra. Haz fork tantas veces como quieras.

El lema: clona producción, no rompas nada.

Ver el tutorial

Prepara algo que perder

Primero, dale al repo en ejecución un archivo para probar el aislamiento del fork. Abre el repo en VS Code:

rdc vscode connect -m my-server -r my-app

Dentro del repo, crea un archivo marcador:

time echo "Hello from production" > index.html

Ahora haz el fork.

Fork

time rdc repo fork --parent my-app -m my-server --tag experiment --up

El repo padre se ramifica en clones independientes

Un comando. Clonó todo (la app, la base de datos, los archivos de configuración) y ocurrió en segundos. Ejecútalo de nuevo y obtendrás otro clon independiente.

¿Por qué es tan rápido?

Compartir un enlace de carpeta tiene la misma velocidad sin importar el tamaño de la carpeta

Imagina que compartes un enlace a una carpeta. El enlace es el mismo, ya sea que la carpeta sea pequeña o enorme. La carpeta es pesada, el enlace es ligero.

1 GB, 100 GB, 1 TB. El mismo tiempo, siempre.

El fork funciona igual. 1 GB, 100 GB, 1 TB. El mismo tiempo, siempre.

Qué se comparte y qué es tuyo

Muchos espejos, un sol: base compartida, tus cambios son tuyos

Piensa en el repo padre como el sol. No puedes sostener el sol, pero puedes sostener un espejo que lo refleja. Ese espejo es tu fork. Pinta sobre el espejo y tus dibujos son tuyos. El sol sigue igual, sin importar cuántos espejos lo enfrenten.

No puedes sostener el sol, pero puedes sostenerlo en un espejo.

¿Qué pasa si el padre cambia después?

Un fork es una fotografía congelada; el padre sigue fluyendo como un río

Ahora piensa en un río. El agua sigue fluyendo. En cada momento es diferente. Cuando haces fork, tomas una fotografía del río, congelada en ese instante. El río sigue fluyendo. Tu fotografía no.

Si el repo padre cambia después, tu fork se queda donde estaba.

No puedes sostener un río, pero puedes sostenerlo en una foto.

El uso del disco se mantiene plano

Cinco forks de un repo de 100 GB siguen siendo unos 100 GB en total

Por eso tu disco no explota. ¿Cinco forks de un repo de 100 GB? Siguen siendo unos 100 GB en total. Solo pagas disco por lo que cambias en cada fork.

Haz fork cinco veces si quieres. Tu disco ni lo notará.

Lo que los forks no heredan: los secrets

Hay una cosa que el fork deliberadamente no hereda: los secrets. Un fork comienza sin claves de API, sin contraseñas de base de datos, sin tokens de Stripe. Por eso “clona producción, no rompas nada” realmente funciona. Tu sandbox no puede cobrar a clientes reales porque no puede hacerse pasar por ti. Lo configuramos correctamente en el tutorial de Gestión de Secrets.

Verificar el aislamiento

Lista ambos repos uno al lado del otro:

time rdc repo list -m my-server

Verás my-app y my-app:experiment ejecutándose al mismo tiempo.

En el repo original, revisa qué está corriendo:

time docker ps

Observa el tiempo de actividad. Estos son los contenedores originales. Ahora cambia al fork:

rdc vscode connect -m my-server -r my-app:experiment
time docker ps

Las mismas imágenes, pero el tiempo de actividad es nuevo. Arrancaron cuando se creó el fork.

Haz la diferencia aún más evidente. Agrega un contenedor solo al fork:

time docker run --rm -it -d nginx
time docker ps

Nginx está en ejecución, pero solo dentro de este fork.

Prueba algo destructivo:

time rm index.html

Desapareció aquí. Ahora regresa al original:

rdc vscode connect -m my-server -r my-app
time docker ps

Sin nginx. Los contenedores del fork se quedaron en el fork. Y index.html sigue aquí, intacto. El original nunca supo que pasó algo. Mismas imágenes, Docker daemons separados, sistemas de archivos separados.

Limpieza

Cuando termines, simplemente elimina el fork:

time rdc repo delete --name my-app:experiment -m my-server

El original queda exactamente como estaba. Fork, experimenta, rompe cosas, elimina. Sin riesgo.


Siguiente: Gestión de Secrets.