Estructura de directorios
Cada referencia, o instantánea etiquetada de una confirmación, en un proyecto está organizada en subdirectorios específicos, como trunk
, branches
y tags
. Por ejemplo, un proyecto SVN con dos características bajo desarrollo debería parecerse a esto:
sample_project/trunk/README.md
sample_project/trunk/lib/widget.rb
sample_project/branches/new_feature/README.md
sample_project/branches/new_feature/lib/widget.rb
sample_project/branches/another_new_feature/README.md
sample_project/branches/another_new_feature/lib/widget.rb
Un flujo de trabajo SVN se parece a esto:
- El directorio
trunk
representa la versión estable más reciente de un proyecto. - El trabajo de características activas se desarrolla dentro de subdirectorios en
branches
. - Una vez finalizada una característica, el directorio de características se combina y
trunk
se elimina.
Los proyectos de Git también se almacenan dentro de un directorio único. Pero Git oculta los detalles de sus referencias almacenándolos en un directorio .git especial. Por ejemplo, un proyecto Git con dos características bajo desarrollo debería parecerse a esto:
sample_project/.git
sample_project/README.md
sample_project/lib/widget.rb
Un flujo de trabajo Git se parece a esto:
- Un repositorio Git almacena el historial completo de todas sus ramas y etiquetas en el directorio .git.
- El último lanzamiento estables se contiene dentro de la rama predeterminada.
- El trabajo de característica activa se desarrolla en ramas separadas.
- Cuando una característica finaliza, la rama de característica se fusiona en la rama predeterminada y se borra.
A diferencia de SVN, con Git la estructura del directorio permanece igual, pero los contenidos de los archivos cambia en base a tu rama.
Incluir los subproyectos
Un subproyecto es un proyecto que se desarrolla y administra fuera de tu proyecto principal. Normalmente importas un subproyecto para agregar alguna funcionalidad a tu proyecto sin necesidad de mantener el código. Cada vez que el proyecto se actualiza, puedes sincronizarlo con tu proyecto para garantizar que todo esté actualizado.
En SVN, un subproyecto se denomina SVN externo. En Git, se denomina submódulo de Git. A pesar de que conceptualmente son similares, los submódulos Git no se mantienen actualizados de forma automática; debes solicitar explícitamente que se traiga una nueva versión a tu proyecto.
Para obtener más información, consulta Submódulos de herramientas de Git en la documentación de Git.
Mantener el historial
SVN está configurado para suponer que el historial de un proyecto nunca cambia. Git permite modificar confirmaciones y cambios anteriores mediante herramientas como git rebase
.
Tip
GitHub admite clientes de Subversion, lo que puede producir algunos resultados inesperados si usa Git y SVN en el mismo proyecto. Si has manipulado el historial de confirmación de Git, esas mismas confirmaciones siempre permanecerán dentro del historial de SVN. Si ha confirmado accidentalmente algunos datos confidenciales, tenemos un artículo que le ayudará a quitarlos del historial de Git.
Note
La compatibilidad con Subversion se retirará con GitHub versión 3.13. Para obtener más información, consulte el blog de GitHub.