En GitHub, ¿cuál es la diferencia conceptual entre un proyecto (que se puede crear dentro de un repositorio) y un repositorio?
He visto varias preguntas similares ( aquí , aquí y aquí ) en SO, pero ninguna de ellas explica qué es un proyecto de GitHub, qué es un repositorio de GitHub y cuándo usar cada una de ellas.
Agradecería si alguien puede explicar cada término y proporcionar un ejemplo de cuándo usar / crear cada uno. Por ejemplo, si tengo varias aplicaciones prototipo, todas independientes entre sí, ¿qué creo para administrar de manera organizada el código fuente de todas ellas?
git
github
version-control
repository
carlossierra
fuente
fuente
Respuestas:
GitHub introdujo recientemente una nueva característica llamada Proyectos . Esto proporciona un tablero visual que es típico de muchas herramientas de gestión de proyectos:
Un repositorio como se documenta en GitHub:
Un proyecto como se documenta en GitHub:
Parte de la confusión es que la nueva característica, Proyectos, entra en conflicto con el uso sobrecargado del término proyecto en la documentación anterior.
fuente
Hecho 1: Proyectos y repositorios siempre fueron sinónimos en GitHub.
Hecho 2: Este ya no es el caso.
Hay mucha confusión sobre los repositorios y proyectos. En el pasado, ambos términos se usaban de manera bastante intercambiable por los usuarios y la propia documentación de GitHub. Esto se refleja en algunas de las respuestas y comentarios que explican las diferencias sutiles entre esos términos y cuándo se prefirió uno sobre el otro. La diferencia siempre fue sutil, por ejemplo, como el rastreador de problemas como parte del proyecto pero no como parte del repositorio, que podría considerarse estrictamente git, etc.
Ya no.
Actualmente los repositorios y proyectos se refieren a diferentes tipos de entidades que tienen API separadas :
Desde entonces, ya no es correcto llamar al repositorio un proyecto o viceversa. Tenga en cuenta que a menudo se confunde en la documentación oficial y es lamentable que se haya elegido un término que ya se usaba ampliamente como el nombre de la nueva entidad, pero este es el caso y tenemos que vivir con eso.
La consecuencia es que los repositorios y los proyectos generalmente se confunden y cada vez que lees sobre proyectos de GitHub tienes que preguntarte si realmente se trata de los proyectos o de los repositorios. Si hubieran elegido algún otro nombre o una abreviatura como "proj", entonces podríamos saber que lo que se discute es el nuevo tipo de entidad, un objeto preciso con propiedades concretas o un tipo de cosita proyectil tipo repositorio.
El término que generalmente no es ambiguo es "junta de proyecto" .
¿Qué podemos aprender de la API?
El primer punto final en la documentación de la API de proyectos:
se describe como: Lista de proyectos de repositorio . Significa que un repositorio puede tener muchos proyectos. Entonces esos dos no pueden significar lo mismo. Incluye respuesta si los proyectos están deshabilitados :
lo que significa que algunos repos pueden tener proyectos deshabilitados. Nuevamente, eso no puede ser lo mismo cuando un repositorio puede tener proyectos deshabilitados.
Hay algunos otros puntos finales interesantes:
POST /repos/:owner/:repo/projects
POST /orgs/:org/projects
pero no hay ninguna :
Crear el proyecto de un usuario -POST /users/:user/projects
Lo que nos lleva a otra diferencia:
1. Los repositorios pueden pertenecer a usuarios u organizaciones
2. Los proyectos pueden pertenecer a repositorios u organizaciones
o, lo que es más importante:
1. Los proyectos pueden pertenecer a repositorios pero no al revés
2. Los proyectos pueden pertenecer a organizaciones pero no a usuarios
3. Los repositorios pueden pertenecer a organizaciones y usuarios
Ver también:
Sé que es confuso. Traté de explicarlo con la mayor precisión posible.
fuente
Los repositorios de GitHub se utilizan para almacenar todos los archivos, carpetas y otros recursos que le interesan.
Proyecto Git: también es uno de los recursos en el repositorio Git y su uso principal es administrar los proyectos con un tablero visual. Si crea un proyecto en Git Repository, cree un tablero visual como un tablero Kanban para administrar el proyecto.
De esta manera, puede tener múltiples proyectos en un repositorio.
fuente
En general, en GitHub, 1 repositorio = 1 proyecto . Por ejemplo: https://github.com/spring-projects/spring-boot . Pero no es una regla difícil.
1 repositorio = muchos proyectos . Por ejemplo: https://github.com/donhuvy/java_examples
1 proyectos = muchos repositorios . Por ejemplo: https://github.com/zendframework/zendframework (1 proyecto llamado Zend Framework 3 tiene 61 + 1 = 62 repositorios, ¿no crees? Vamos a contar los módulos de Zend Frameworks + repositorio principal)
Estoy totalmente de acuerdo con @Brandon Ibbotson 's comentario :
fuente
Con respecto al vocabulario git, un Proyecto es la carpeta en la que vive el contenido (archivos) real. Mientras que Repository (repo) es la carpeta dentro de la cual git mantiene el registro de cada cambio realizado en la carpeta del proyecto . Pero en un sentido general, estos dos pueden considerarse iguales. Proyecto = Repositorio
fuente
La diferencia conceptual en mi entendimiento es que un proyecto puede contener muchos repositorios y que son independientes entre sí, mientras que simultáneamente un repositorio puede contener muchos proyectos. Repo es solo un lugar de almacenamiento de código, mientras que un proyecto es una colección de tareas para una determinada característica.
¿Tiene sentido? Un repositorio grande puede tener muchos proyectos en los que trabajan diferentes personas al mismo tiempo (se agregan muchas características de diferencia a un monolito), un proyecto grande puede tener muchos repositorios pequeños que están separados pero son parte del mismo proyecto que interactúan con cada uno otro - microservicios? Es una versión personal de lo que quieres hacer. Creo que el repositorio (almacenamiento) frente al proyecto (tareas) es la principal diferencia: si estoy equivocado, ¡hágamelo saber / explíquelo! Gracias.
fuente
Esta es mi comprensión personal sobre el tema.
Para un proyecto, podemos hacer el control de versiones por diferentes repositorios. Y para un repositorio, puede administrar un proyecto completo o parte de proyectos.
En cuanto a su proyecto (varias aplicaciones prototipo que son independientes de cada una de ellas). Puede gestionar el proyecto por un repositorio o por varios repositorios, la diferencia:
Gestionar por un repositorio. Si se cambia una de las aplicaciones, todo el proyecto (todas las aplicaciones) se comprometerá con una nueva versión.
Gestionado por varios repositorios. Si se cambia una aplicación, solo afectará al repositorio que administra la aplicación. La versión para otros repositorios no se modificó.
fuente