Projeto vs Repositório no GitHub

188

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?

Carlossierra
fonte
1
Um repositório do github é apenas um "diretório" onde arquivos e pastas podem existir. Outras pessoas podem criar suas próprias cópias deste "diretório" e modificá-lo como desejarem, e solicitar que suas alterações sejam colocadas no repositório principal. Quanto aos projetos, não tenho certeza, pois nunca os usei.
byxor
1
Você disse que viu uma pergunta semelhante, mas realmente leu o seu primeiro link? "Isso é algo monótono, não genial. Você pode ter vários repositórios por projeto." e outra resposta no mesmo tópico "O Git não possui projetos, apenas repositórios". Se você de fato realmente significou projectos github gostaria de sugerir a verificar os docs github sobre isso help.github.com/articles/...
PeeHaa
6
@PeeHaa sim eu fiz. A primeira frase afirma o seguinte: "Isso é uma coisa monótona, e não genial. Você pode ter vários repositórios por projeto". Para mim, isso fala sobre o Gitorius, não o GitHub. Além disso, diz que no Gitorious você pode ter vários repositórios por projeto, mas no GitHub é o contrário. Então, eu realmente aprecio se você pudesse explicar como isso está respondendo à minha pergunta?
carlossierra
2
Acho que isso toca na semântica em que o novo recurso Projetos - o quadro visual - entra em conflito com o uso sobrecarregado do termo Projeto. É provável que o voto negativo não seja uma questão de programação.
osowskit
2
Isso deve ter tudo o que você precisa github.com/blog/…
osowskit 14/11/16

Respostas:

109

O GitHub introduziu recentemente um novo recurso chamado Projetos . Isso fornece um quadro visual típico de muitas ferramentas de gerenciamento de projetos:

Projeto

Um repositório conforme documentado no GitHub:

Um repositório é o elemento mais básico do GitHub. Eles são mais fáceis de imaginar como uma pasta do projeto. Um repositório contém todos os arquivos do projeto (incluindo a documentação) e armazena o histórico de revisões de cada arquivo. Os repositórios podem ter vários colaboradores e podem ser públicos ou privados.

Um projeto conforme documentado no GitHub:

Os painéis de projetos no GitHub ajudam a organizar e priorizar seu trabalho. Você pode criar quadros de projetos para trabalhos específicos, roteiros abrangentes ou até mesmo liberar listas de verificação. Com quadros de projetos, você tem a flexibilidade de criar fluxos de trabalho personalizados que atendem às suas necessidades.

Parte da confusão é que o novo recurso, Projetos, entra em conflito com o uso sobrecarregado do termo projeto na documentação acima.

osowskit
fonte
1
Então, eu estou usando o Github para armazenar o código para meus projetos de pesquisa individuais A, B, C, etc. Se eu estiver entendendo corretamente, cada projeto de pesquisa obterá seu próprio repositório? Então A obtém um repositório, B obtém um repositório, C obtém um repositório etc.?
Plinth
Quando você bifurca um Repositório, seu bifurcação tem acesso ao instantâneo da placa do Projeto?
geominded
7
como isso é escolhido como resposta aceita? basta copiar e colar o que está descrito. pode ser lido pelo OP, mas as pessoas querem saber com exemplos simples.
batmaci
152

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 :

{
  "message": "Projects are disabled for this repo",
  "documentation_url": "https://developer.github.com/v3"
}

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:

  • Crie um projeto de repositório -POST /repos/:owner/:repo/projects
  • Crie um projeto da organização -POST /orgs/:org/projects

mas não :

  • 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.

rsp
fonte
No Bitbucket da Atlassian, você pode criar projetos que abrangem uma família de repositórios relacionados. O Github tem esse recurso organizacional? Eu esperava que o Github Projects fosse essa coisa, mas claramente não é. Não consigo descobrir como tornar essa organização possível no Github. Estou muito acostumado ao Bitbucket, então pode ser apenas uma curva de aprendizado.
Ungeheuer
De certa forma, faria mais sentido para mim se um projeto pudesse ter vários repositórios. Estou com a impressão de que o GitHub percebeu que está ficando velho e, em vez de fazer uma reformulação completa, optou por fazer uma solução alternativa e vendê-la como uma coisa boa. A propósito, quem é o proprietário do GitHub agora? Talvez a resposta dê alguma pista sobre por que isso está acontecendo. Apenas pensando em voz alta.
Almir Campos
19

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.

Digamber
fonte
4

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 :

Um repositório do GitHub é apenas um "diretório" onde pastas e arquivos podem existir.

Do Nhu Vy
fonte
Obrigado pela sua resposta. Mas não acho que sua definição de projeto seja o que o GitHub chama de projeto, pois os exemplos de vários repositórios de projetos não mostram nada na guia Projetos para esses repositórios. Você pode por favor elaborar nisso?
precisa saber é o seguinte
2
Na verdade, o exemplo usando o Zend Framework está totalmente errado! De acordo com a nomenclatura do GitHub, há uma organização chamada "zendframework" que possui muitos repositórios, incluindo um também chamado "zendframework" e um para cada módulo da estrutura.
Igorcadelima 17/03/19
3
09 de novembro de 2017: o exemplo de um repositório = muitos projectos retorna um 404.
Bram Vanroy
1
links estão quebrados
Pmpr 29/03/19
1
Em termos de GitHub, esta resposta está em conflito com outras respostas mais populares acima.
Manohar Reddy Poreddy
1

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

Anshu Aditya
fonte
1

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.

Jeremy
fonte
0

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:

  1. Gerenciar por um repositório. Se um dos aplicativos for alterado, o projeto inteiro (todos os aplicativos) será confirmado para uma nova versão.

  2. 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.

lago
fonte