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
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?
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.
El fork funciona igual. 1 GB, 100 GB, 1 TB. El mismo tiempo, siempre.
Qué se comparte y qué es tuyo
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?
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
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.