在GitHub中,项目(可以在存储库内部创建)和存储库之间在概念上有什么区别?
我看过几个类似的问题(在这里,这里和这里在SO中),但是没有一个解释什么是GitHub项目,什么是GitHub存储库以及何时使用每个问题。
如果有人可以解释每个术语,并提供何时使用/创建每个术语的示例,我将不胜感激。例如,如果我有几个相互独立的原型应用程序,那么我应该创建什么以便以有组织的方式管理所有应用程序的源代码?
在GitHub中,项目(可以在存储库内部创建)和存储库之间在概念上有什么区别?
我看过几个类似的问题(在这里,这里和这里在SO中),但是没有一个解释什么是GitHub项目,什么是GitHub存储库以及何时使用每个问题。
如果有人可以解释每个术语,并提供何时使用/创建每个术语的示例,我将不胜感激。例如,如果我有几个相互独立的原型应用程序,那么我应该创建什么以便以有组织的方式管理所有应用程序的源代码?
Answers:
GitHub最近推出了一项名为Projects的新功能。这提供了许多项目管理工具所特有的可视化板:
GitHub上记录的存储库:
存储库是GitHub的最基本元素。最容易将它们想象为项目的文件夹。资源库包含所有项目文件(包括文档),并存储每个文件的修订历史记录。存储库可以有多个合作者,可以是公共的也可以是私有的。
一个项目GitHub上记录的:
GitHub上的项目板可帮助您组织工作并确定其优先级。您可以为特定功能工作,综合路线图甚至发布清单创建项目板。使用项目板,您可以灵活地创建适合您需求的定制工作流。
造成混淆的部分原因是,新功能Projects与以上文档中术语project的重载使用冲突。
关于存储库和项目有很多困惑。过去,用户和GitHub自己的文档几乎可以互换使用这两个术语。此处的一些答案和评论反映了这一点,这些答案和评论解释了这些术语之间的细微差别,以及何时优先使用一个术语。差异总是细微的,例如,问题跟踪器是项目的一部分,而不是资源库的一部分,而后者可能被视为严格的git等。
当前,回购和项目指的是具有不同API的不同种类的实体:
从那时起,将回购称为项目即不再正确,反之亦然。请注意,官方文档中经常将其混淆,不幸的是,已经选择了一个已经被广泛使用的术语作为新实体的名称,但事实确实如此,我们必须忍受这一事实。
结果是,回购和项目通常会混淆,每次您阅读有关GitHub项目的信息时,您都不得不怀疑它是否真的与项目或回购有关。如果他们选择了其他名称或缩写,例如“ proj”,那么我们可以知道所讨论的是新类型的实体,具有具体属性的精确对象,或者从总体上讲像回购协议一样的东西。
通常明确的术语是“项目委员会”。
Projects API文档中的第一个端点:
描述为:列出存储库项目。这意味着存储库可以具有许多项目。因此,这两个含义不相同。如果项目被禁用,它包括响应:
{
"message": "Projects are disabled for this repo",
"documentation_url": "https://developer.github.com/v3"
}
这意味着某些回购可能会禁用项目。同样,当一个回购可以禁用项目时,这些不可能是同一件事。
还有一些其他有趣的端点:
POST /repos/:owner/:repo/projects
POST /orgs/:org/projects
但没有:
POST /users/:user/projects
这导致我们得出另一个差异:
1.存储库可以属于用户或组织
2.项目可以属于存储库或组织
或者,更重要的是:
1.项目可以属于存储库,但不能属于其他方式
2.项目可以属于组织,但不能
属于用户3.存储库可以属于组织和用户
也可以看看:
我知道这很混乱。我试图尽我所能解释它。
通常,在GitHub上,1个存储库= 1个project。例如:https : //github.com/spring-projects/spring-boot。但这不是硬性规定。
1个存储库=许多项目。例如:https : //github.com/donhuvy/java_examples
1个项目=许多存储库。例如:https : //github.com/zendframework/zendframework(1个名为Zend Framework 3的项目有61 + 1 = 62个存储库,不相信吗?让我们计算一下Zend Frameworks的模块+主存储库)
我完全同意@Brandon Ibbotson的评论:
GitHub存储库只是其中可以存在文件夹和文件的“目录”。