我需要使用github上公开提供的第三方代码.我正在查看github的该代码的网络图,我可以看到其他forks有一些未合并到原始存储库的提交.
应该如何决定哪种分支/叉适合我?
请在面对这样的问题时提出您的注意事项.
正如John Feminella 所建议的那样,人们应该总是使用(通常是稳定的)"项目发布版本".
我当然同意这一点,但这个问题仍然与下列案件之一有关:
我曾经多次遇到这样的情况,目前原作者仍然试图维持回购,但似乎他没有足够的时间,其他的叉子更活跃.没有宣布任何叉子足够稳定以供生产使用.上次我遇到这样的情况时,原始存储库也没有实现对我来说很重要的功能.
因此,在这种情况下,我需要选择最稳定的fork,尝试在我的代码中使用它,彻底测试它并可能做出一些改进以使其稳定.
一般说明
系统应处理组织成嵌套类别的许多项目(请参阅下面的可视示例),同时使客户端能够定义权限规则(请参阅下面的权限规则).它还应该处理独立于任何项目的不同的一般权限(例如"可以查看特定页面?"或"可以邀请新成员?").
所有用户都组织成组.每个用户都有一个他所属的主要组,但他也可能有一些额外的辅助组.
一些用户可以配置为超级管理员,应该被允许做任何事情.
在决定是否允许用户执行某些操作时,权限继承如下:
在定义组权限时,客户端可以使用继承来表示:
注意:我应该能够从数据库中请求当前用户可以编辑/查看的最后10个项目,每个项目的权限应该由数据库决定,我不想在应用程序级别过滤项目的权限如果我可以根据存储在数据库中的信息来决定.
许可规则
规则可能取决于项目的任何属性(例如项目所有者的主要组,创建时间,类别等),该信息存储在数据库中.
规则还可以取决于当前用户的任何属性(例如,注册日期,邀请的成员),请求的操作(例如视图,列表,重命名,撤消删除等)以及运行时已经可用的其他信息(例如url参数) ,配额限制,项目内容,服务器负载),该信息可用于PHP脚本.
请参阅以下示例规则.
数据库模式的可视示例:
Category 1
Nested Category A
item x
Nested Category B
Deeply Nested Category
item w
item y
Category 2
item z
Run Code Online (Sandbox Code Playgroud)
目前,数据库模式如下所示,但如果需要,我可以更改它:(当然这只是模式的一部分,还有其他表和字段)
物品:
id | title | owner_id | category_id
====================================
1 | item x | 2 | 3
2 | item y | 1 | 4
3 …Run Code Online (Sandbox Code Playgroud)