No GitHub, qual é a diferença conceitual entre um projeto (que pode ser criado dentro de um repositório) e um repositório?
Eu já vi várias perguntas semelhantes ( aqui , aqui e aqui ) no SO, mas nenhuma delas explica o que é um projeto GitHub, o que é um repositório GitHub e quando usar cada uma delas.
Gostaria que alguém explicasse cada termo e forneça um exemplo de quando usar / criar cada um. Por exemplo, se eu tenho vários aplicativos protótipos, todos independentes um do outro, o que eu crio para gerenciar de maneira organizada o código fonte de todos eles?
git
github
version-control
repository
Carlossierra
fonte
fonte
Respostas:
O GitHub introduziu recentemente um novo recurso chamado Projetos . Isso fornece um quadro visual típico de muitas ferramentas de gerenciamento de projetos:
Um repositório conforme documentado no GitHub:
Um projeto conforme documentado no GitHub:
Parte da confusão é que o novo recurso, Projetos, entra em conflito com o uso sobrecarregado do termo projeto na documentação acima.
fonte
Fato 1: Projetos e Repositórios sempre foram sinônimos no GitHub.
Fato 2: Este não é mais o caso.
Há muita confusão sobre Repositórios e Projetos. No passado, os dois termos eram usados de maneira praticamente intercambiável pelos usuários e pela própria documentação do GitHub. Isso é refletido por algumas das respostas e comentários aqui que explicam as diferenças sutis entre esses termos e quando um foi preferido em relação ao outro. A diferença sempre foi sutil, por exemplo, como o rastreador de problemas sendo parte do projeto, mas não parte do repositório, o que pode ser pensado como algo estritamente importante, etc.
Não mais.
Atualmente, repositórios e projetos se referem a diferentes tipos de entidades que possuem APIs separadas :
Desde então, não é mais correto chamar o repositório de projeto ou vice-versa. Observe que muitas vezes é confundido na documentação oficial e é lamentável que um termo que já tenha sido amplamente utilizado tenha sido escolhido como o nome da nova entidade, mas esse seja o caso e tenhamos que conviver com isso.
A conseqüência é que repositórios e projetos geralmente são confusos e toda vez que você lê sobre projetos do GitHub, você deve se perguntar se realmente é sobre os projetos ou sobre os repositórios. Se eles tivessem escolhido algum outro nome ou uma abreviação como "proj", poderíamos saber que o que é discutido é o novo tipo de entidade, um objeto preciso com propriedades concretas ou um tipo de coisa projetual do tipo repo.
O termo geralmente não ambíguo é "conselho do projeto" .
O que podemos aprender com a API
O primeiro ponto de extremidade na documentação da API de projetos:
é descrito como: Listar projetos de repositório . Isso significa que um repositório pode ter muitos projetos. Então esses dois não podem significar a mesma coisa. Inclui Resposta se os projetos estiverem desativados :
o que significa que alguns repositórios podem ter projetos desativados. Novamente, essas não podem ser a mesma coisa quando um repositório pode ter projetos desativados.
Existem outros pontos finais interessantes:
POST /repos/:owner/:repo/projects
POST /orgs/:org/projects
mas não há :
Crie o projeto de um usuário -POST /users/:user/projects
O que nos leva a outra diferença:
1. Os repositórios podem pertencer a usuários ou organizações
2. Os projetos podem pertencer a repositórios ou organizações
ou, mais importante:
1. Os projetos podem pertencer a repositórios, mas não o contrário.
2. Os projetos podem pertencer a organizações, mas não a usuários
3. Os repositórios podem pertencer a organizações e usuários
Veja também:
Eu sei que é confuso. Tentei explicar o mais precisamente possível.
fonte
Os repositórios do GitHub são usados para armazenar todos os arquivos, pastas e outros recursos importantes para você.
Projeto Git: É também um dos Recursos no Repositório Git e o principal uso é gerenciar os projetos com um quadro visual. Se você criar um projeto no Git Repository, ele criará um quadro visual como um quadro Kanban para gerenciar o projeto.
Dessa forma, você pode ter vários projetos em um repositório.
fonte
Em geral, no GitHub, 1 repositório = 1 projeto . Por exemplo: https://github.com/spring-projects/spring-boot . Mas não é uma regra difícil.
1 repositório = muitos projetos . Por exemplo: https://github.com/donhuvy/java_examples
1 projetos = muitos repositórios . Por exemplo: https://github.com/zendframework/zendframework (um projeto chamado Zend Framework 3 tem 61 + 1 = 62 repositórios, não acredita? Vamos contar os módulos do Zend Frameworks + repositório principal)
Concordo totalmente com o comentário de @Brandon Ibbotson :
fonte
No que diz respeito ao vocabulário git, um Projeto é a pasta na qual o conteúdo (arquivos) atual vive. Considerando que o repositório (repo) é a pasta dentro da qual o git mantém o registro de todas as alterações feitas na pasta do projeto . Mas, em um sentido geral, esses dois podem ser considerados iguais. Projeto = Repositório
fonte
A diferença conceitual no meu entendimento é que um projeto pode conter muitos repositórios e que são independentes um do outro, enquanto simultaneamente um repositório pode conter muitos projetos. O repositório é apenas um local de armazenamento de código, enquanto um projeto é uma coleção de tarefas para um determinado recurso.
Isso faz sentido? Um repositório grande pode ter muitos projetos sendo trabalhados por pessoas diferentes ao mesmo tempo (muitos recursos diferentes são adicionados a um monólito), um projeto grande pode ter muitos repositórios pequenos separados, mas parte do mesmo projeto que interage com cada um. outros - microsserviços? É uma visão pessoal do que você quer fazer. Eu acho que repo (armazenamento) vs projeto (tarefas) é a principal diferença - se eu estiver errado, por favor me avise / explique! Obrigado.
fonte
Este é meu entendimento pessoal sobre o tópico.
Para um projeto, podemos fazer o controle de versão por diferentes repositórios. E para um repositório, ele pode gerenciar um projeto inteiro ou parte de projetos.
Em relação ao seu projeto (vários aplicativos de protótipo que são independentes de cada um deles). Você pode gerenciar o projeto por um repositório ou por vários repositórios, a diferença:
Gerenciar por um repositório. Se um dos aplicativos for alterado, o projeto inteiro (todos os aplicativos) será confirmado para uma nova versão.
Gerenciar por vários repositórios. Se um aplicativo for alterado, ele afetará apenas o repositório que gerencia o aplicativo. A versão para outros repositórios não foi alterada.
fonte