05/09/2013
Para cualquier desarrollador que trabaje con sistemas de control de versiones, la operación de checkout es el pan de cada día. Es el primer paso para obtener una copia local de un proyecto almacenado en un repositorio y empezar a trabajar. Si utilizas Subversion (SVN) en un entorno Windows, es casi seguro que tu herramienta de elección sea TortoiseSVN, un cliente que se integra a la perfección con el explorador de archivos. En este artículo, desglosaremos a fondo cómo realizar un checkout, explorando desde el diálogo básico hasta las funcionalidades más avanzadas que te permitirán tener un control granular sobre los archivos que descargas.

¿Dónde está el diálogo de Checkout en TortoiseSVN?
Una de las primeras dudas que surgen al usar TortoiseSVN es encontrar sus comandos. A diferencia de otros programas, no tiene una ventana principal; sus funciones están integradas en el menú contextual de Windows (el que aparece al hacer clic derecho).
Para iniciar un checkout, simplemente sigue estos pasos:
- Navega con el explorador de Windows hasta la carpeta donde deseas crear tu copia de trabajo local. Puede ser una carpeta vacía que hayas creado para este propósito.
- Haz clic derecho en un espacio en blanco dentro de esa carpeta.
- En el menú contextual que aparece, busca la opción SVN Checkout....
Es importante destacar una configuración por defecto que puede generar confusión. En una instalación estándar, el comando SVN Checkout... aparece directamente en el nivel superior del menú contextual. Sin embargo, también es posible que lo encuentres dentro de un submenú llamado TortoiseSVN. Si no ves el comando, revisa dentro de ese submenú. Esta ubicación puede cambiar según la configuración que hayas elegido durante la instalación o posteriormente.
Si haces clic derecho en una carpeta y no ves ninguna opción de TortoiseSVN, es posible que tengas activada una opción para ocultar los menús en carpetas no versionadas. Para verificarlo, ve a TortoiseSVN → Settings → General → Context Menu y asegúrate de que la casilla "Hide menus for unversioned paths" no esté marcada.

Guía Paso a Paso para un Checkout Básico
Una vez que has localizado y hecho clic en "SVN Checkout...", se abrirá una nueva ventana de diálogo. Este es el centro de mando para la operación. Veamos sus componentes principales:
- URL of repository: Aquí debes pegar la URL del repositorio SVN del cual quieres obtener el código. Esta URL te la proporcionará el administrador del proyecto y generalmente apunta a una rama específica (como
/trunk) o a un tag. - Checkout directory: Este campo se autocompletará con la ruta de la carpeta donde hiciste clic derecho. Puedes modificarla si lo necesitas. Si escribes el nombre de una carpeta que aún no existe, TortoiseSVN la creará por ti automáticamente.
- Checkout Depth: Esta es una de las opciones más potentes y la exploraremos en detalle más adelante. Por ahora, puedes dejarla en su valor por defecto, "Fully recursive".
- Omit externals: Si el proyecto utiliza "SVN externals" para vincular otros repositorios, marcar esta casilla evitará que se descarguen durante el checkout inicial.
Una vez que hayas completado la URL y verificado el directorio, simplemente haz clic en "OK". TortoiseSVN se conectará al servidor, descargará todos los archivos y carpetas, y creará la copia de trabajo. Al finalizar, verás una ventana de registro con el resumen de la operación y un botón "OK" para cerrar.
Profundidad de Checkout (Checkout Depth): Controla Exactamente lo que Descargas
Imagina que estás trabajando en un repositorio gigantesco, pero solo necesitas los archivos de un pequeño subdirectorio. Descargar todo el proyecto sería una pérdida de tiempo y espacio en disco. Aquí es donde entra en juego la opción Checkout Depth, que te permite especificar el nivel de recursividad de la descarga.
A continuación, detallamos las opciones disponibles y su utilidad:
Tabla Comparativa de Niveles de Profundidad
| Opción de Profundidad | Descripción | Caso de Uso Típico |
|---|---|---|
| Fully recursive | Descarga el árbol de directorios completo, incluyendo todas las carpetas y subcarpetas hijas. Es la opción por defecto. | Cuando necesitas trabajar en todo el proyecto o en una rama completa. |
| Immediate children, including folders | Descarga el directorio especificado, todos sus archivos y las carpetas hijas directas, pero deja estas últimas vacías. | Para tener una vista general de la estructura del proyecto sin descargar el contenido de cada módulo. |
| Only file children | Descarga el directorio especificado y solo los archivos que contiene directamente, ignorando todas las subcarpetas. | Cuando solo te interesan los archivos de configuración o los documentos en la raíz de un módulo. |
| Only this item | Descarga únicamente la carpeta seleccionada, sin ningún archivo ni subcarpeta en su interior. | Es el punto de partida ideal para un "sparse checkout" o checkout disperso. |
| Exclude | Esta opción no se usa en el checkout inicial, sino en la operación "Update to revision" para eliminar una carpeta de tu copia local sin borrarla del repositorio. | Para "aligerar" una copia de trabajo existente, eliminando partes que ya no necesitas. |
El Poder del "Sparse Checkout" (Checkout Disperso)
El concepto de Sparse Checkout se basa en la flexibilidad que ofrece la profundidad de checkout. Te permite crear una copia de trabajo "hueca" y luego "rellenarla" selectivamente solo con las carpetas y archivos que te interesan. Es la técnica definitiva para manejar repositorios masivos.
Para realizar un checkout disperso, puedes usar el botón "Choose items..." en el diálogo de checkout. Esto abrirá una nueva ventana que muestra la estructura de carpetas del repositorio, permitiéndote marcar y desmarcar exactamente qué elementos quieres incluir en tu copia de trabajo. Los elementos que no marques no se descargarán.

Un Caso Práctico: Creando un Checkout Disperso
Supongamos un repositorio con 99 carpetas de proyectos (Project01, Project02, ..., Project99), y tú solo necesitas trabajar en Project03, Project25 y en una subcarpeta específica llamada SubProj dentro de Project76.
- Crea una carpeta local vacía, por ejemplo,
C:\MisProyectosSVN. - Haz clic derecho dentro y selecciona
SVN Checkout.... - Introduce la URL del repositorio padre (el que contiene todas las carpetas de proyectos).
- En "Checkout Depth", selecciona "Only this item". Haz clic en OK. Ahora tendrás una carpeta
MisProyectosSVNvacía pero versionada. - Haz clic derecho sobre esta nueva carpeta y elige
TortoiseSVN → Repo-browser. Esto abrirá el explorador del repositorio. - En el Repo-Browser, busca la carpeta
Project03, haz clic derecho sobre ella y seleccionaUpdate item to revision.... En el diálogo que aparece, deja las opciones por defecto (profundidad "Fully recursive") y haz clic en OK. TortoiseSVN descargará completamente el contenido deProject03en tu copia local. - Repite el paso anterior para la carpeta
Project25. - Ahora, navega dentro del Repo-Browser hasta
Project76/SubProj. Haz clic derecho sobreSubProjy selecciona de nuevoUpdate item to revision....
El resultado es una copia de trabajo muy eficiente. En tu disco duro, tendrás las carpetas Project03 y Project25 completas. También tendrás una carpeta Project76 que solo contiene la subcarpeta SubProj (totalmente poblada), pero no el resto de los archivos que pudieran existir en Project76. SVN ha creado las carpetas intermedias necesarias sin descargar su contenido.
Preguntas Frecuentes (FAQ)
¿Qué es la misteriosa carpeta .svn?
Al realizar un checkout, notarás que en cada directorio de tu copia de trabajo aparece una carpeta oculta llamada .svn. ¡Nunca la borres! Esta carpeta contiene toda la metadata que Subversion necesita para funcionar: la URL del repositorio, la revisión de cada archivo, información sobre cambios locales, etc. Es el "cerebro" de tu copia de trabajo.

¿Cómo obtengo una copia limpia sin las carpetas .svn?
A veces necesitas una copia de los archivos del proyecto sin toda la metadata de SVN, por ejemplo, para empaquetar una versión para producción. Para esto, no uses "Checkout". En su lugar, haz clic derecho y selecciona TortoiseSVN → Export.... Esta operación descarga los archivos tal como están en el repositorio, pero sin crear una copia de trabajo, es decir, sin las carpetas .svn.
Mi servidor SVN es muy antiguo, ¿afecta esto?
Sí. La funcionalidad de "Checkout Depth" fue introducida en la versión 1.5 de Subversion. Si te conectas a un servidor más antiguo, aunque TortoiseSVN te muestre las opciones, el servidor no las entenderá. En la práctica, el servidor podría enviar el árbol de archivos completo, y sería el cliente (TortoiseSVN) el encargado de filtrar lo que no se necesita. Esto puede resultar en un tráfico de red innecesariamente alto. Si es posible, se recomienda actualizar el servidor.
¿Existe una alternativa por línea de comandos?
Absolutamente. Aunque TortoiseSVN es una herramienta gráfica, Subversion tiene un cliente de línea de comandos muy potente. La operación equivalente a un checkout se realiza con el comando:svn checkout URL_DEL_REPOSITORIO CARPETA_LOCAL
O su abreviatura:svn co URL_DEL_REPOSITORIO CARPETA_LOCAL
Dominar la operación de checkout en TortoiseSVN es fundamental para un flujo de trabajo eficiente. Al comprender y utilizar las opciones de profundidad y los checkouts dispersos, puedes adaptar tus copias de trabajo a tus necesidades exactas, ahorrando tiempo, ancho de banda y espacio en disco, especialmente en proyectos de gran envergadura.
Si quieres conocer otros artículos parecidos a Dominando el SVN Checkout con TortoiseSVN puedes visitar la categoría Guías.
