跳到内容

发展历程

此页面详细介绍了我们的存储库的组织方式,如何开始编辑代码和创建第一个请求请求,以及Jellyfin中有关请求请求的一些常规过程。

你应该做什么工作?

Github上有许多Jellyfin组织项目可供审查和做出贡献。总结一下,这是最大的两个,一个用于背景开发,一个用于前端开发:

发展历程发展历程
  • Jellyfin服务器-Jellyfin应用程序的后端服务器。它使用.NET Core 3.1和C#构建。
  • Jellyfin Web-主Jellyfin客户端应用程序。专为Web构建,但也用于一些其他客户端,这些客户端只是该Web客户端的包装。

请注意,每个存储库也都有自己的文档,说明如何开始该项目,通常可以在README存储库中找到该文档。您还可以查看组织的源代码树,以了解一些较大项目的结构。

开始实际开发的最佳方法是浏览相关存储库中的问题列表,找到您要解决的问题,然后开始黑客入侵!管理团队会定期审查问题,并分配标签,以帮助您在技能范围内发现问题。一旦开始处理问题,请对其进行评论,以表明您打算解决该问题,以避免不必要的重复工作。

主要问题类型

问题类型列表可以在“问题准则”部分中找到。

如果没有问题怎么办?

如果还没有与您要进行的更改相关的问题,请先创建一个问题进行跟踪,然后确保您的公共关系引用了该问题。这对于作者发现并随后解决的错误特别有用,这样就可以详细记录和跟踪原始问题和修正。

我应该如何进行更改?

找到要处理或改进的内容后,下一步是进行代码更改,测试它们,然后在GitHub上提交拉取请求(PR)。

为简单起见,所有示例均假定开发人员正在Linux上运行,并且可以通过SSH访问GitHub,但是一般思想可以应用于基于HTTP的GitHub接口,并且可以转换为Windows或MacOS。

如果您不熟悉Git,我们建议您使用官方文档来了解此版本控制系统的工作方式和使用方法。

准备您的回购副本

第一步是创建您要贡献的项目的Git存储库的副本。 Jellyfin遵循“叉子,功能和公共关系”模型进行贡献。

  1. 在GitHub上,使用相应存储库的“ Fork”按钮将您要贡献的Jellyfin存储库“ Fork”,您自己的用户帐户。
  2. 在本地计算机上克隆fork,然后输入目录:git clone git@github.com:yourusername / projectname.gitcd projectname /
  3. 添加“上游”远程,这使您可以轻松地从主项目中下载更改:git remote添加上游git@github.com:jellyfin / projectname.git
  4. 初始化Git子模块;大多数项目至少有一个Git子模块更新–initNote避免在子模块中编辑文件。这样做可能会导致不良的副作用,包括覆盖您的工作。始终在其他地方自己的克隆存储库中修改子模块。
  5. 为了使Jellyfin.Server项目成功运行,它将同时检查服务器和Web客户端项目。
  6. 使用Yarn或NPM构建Jellyfin Web项目,然后复制生成的dist文件夹的位置。在您的Jellyfin.Server项目中,添加一个名为JELLYFIN_WEB_DIR的环境变量,其值设置为dist文件夹的完整路径。

现在您可以开始构建或修改项目了。

修改仓库

存款后,就可以开始工作。

  1. 将本地分支中继到上游主服务器,以使用最新更改:git fetch –allgit为上游/主服务器重新设置基准
  2. 创建master的本地功能分支以进行更改:git checkout -b my-feature master
  3. 在此本地功能分支中进行更改和作出承诺。
  4. 完成工作后,在本地分支机构重复步骤1,以确保自声明以来没有与其他工作发生冲突。
  5. 将本地功能分支上传到您的GitHub分支:git push –set-upstream origin my-feature
  6. 在GitHub上,按照以下建议针对updraft master分支创建一个新的RP。
  7. 一旦您的RP合并,请确保使您的本地分支保持最新:git fetch –allgit checkout mastergit rebase upstream / mastergit push -u origin master
  8. 如果不再需要,请删除本地功能的分支:git branch -d my-feature

贡献者.md

如果这是您第一次向特定存储库添加代码,请将其添加到Jellyfin Contributors部分末尾的文件CONTRIBUTORS.md中。尽管GitHub对此进行了跟进,但是如果代码离开GitHub,则编写文档可以清除所有问题,并允许每个人快速查看谁在该项目上工作以获得版权或称赞!

官方分店

功能分支

有时,可能会出现需要多个公共关系和多个人做出贡献的重大项目。对于这些任务,必须基于母版创建特定于功能的功能分支。这有助于使工作继续进行而不会长时间破坏母版,并使对特定项目感兴趣的人员能够按自己的进度工作,而不必急于在下一个版本发布之前修复已损坏的功能。要创建功能分支,请联系核心团队成员,该问题可以解决。

一旦为其创建了特征分支的特征准备就绪,就可以将其合并为主模型和已移除特征分支上的一个模型。或者,对于非常长的使用寿命特性,可以根据需要将某些“稳定”快照合并到母版中。

师父分行

主分支是项目和主要开发分支的主要角色。除紧急发布修补程序外,所有公共关系都必须针对教师。通常,任何RP都不应破坏主服务器,并且在合并之前应对所有RP进行测试以确保不会发生这种情况。我们只是人类,这很可能会发生,但是总的来说,如果您想要最新最好的Jellyfin版本,则可以安全地从主服务器构建。

测试拍摄要求

要测试其他人的提款请求,必须将更改导入到本地存储库。

  1. 在请求请求中获取更改并将其绑定到新的本地分支:git fetch上游pull / /头:my-testing-branch注意是GitHub上的提取请求编号。
  2. 检查新的本地分支:git检查我的测试分支
  3. 执行测试所需的任何测试或构建,然后回到主节点并删除分支:git checkout mastergit branch -D my-testing-branch

提取要求准则

提交新的RP时,请确保执行以下操作。如果还没有,请阅读如何编写Git参与消息,因为它是编写有用的参与消息的绝佳资源。

  • 在提交RP之前,南瓜“垃圾”同意保持整个故事的清洁。一次提交应涵盖单个重大更改:避免粉碎所有更改,尤其是对于涉及大量文件但又不保留“固定”的大型RP,也不要在分支历史中进行“ whops typo”提交,因为这是一个项目最后故事中不必要的混乱。
  • 写一个好的标题,快速描述已更改的内容。例如,“将LDAP支持添加到Jellyfin”。如如何编写Git参与消息中所述,请始终使用命令式语气,并保持标题简短但具有描述性。标题最终将成为变更日志中的条目,因此请尝试使用适当的大写字母,但不要使用标点符号;请注意,核心团队可能会更改标题以在合并之前更好地确认此标准。
  • 对于除了(简短)标题中可以完全描述的最琐碎的更改以外的任何内容,请遵循PR模板并编写PR主体以尽可能详细地描述:变化。如果可能,请使用关键字(修订,结束语,地址等)参考特定主题,如何解决该主题(如果适用)并简要描述更改,特别是对于大型RP。
  • 如果您的提款请求尚未完成,请在打开时将其标记为“草稿”。只要有此标记,拉取请求就不会合并,修订应仅保留为注释。一旦您对RP的最终状态感到满意,请删除此标签;忘记它可能会导致您的RP被无意间忽略,好像它仍在积极开发中!无效的WIP有时会导致团队ping请求状态,如果没有响应,则将其关闭。
  • 避免过度调整并在可能的情况下强制执行大型或复杂的请求,尤其是在修补程序之后。强制进行不必要的检查,以验证更改是否仍然正确并且正确构建。
  • 希望进行审查和讨论。如果您不能通过良好的描述和审核来备份所做的更改,请重新考虑是否应该进行。所有公共关系都需要管理团队成员至少进行一次批准审核,但是我们欢迎并鼓励任何贡献者进行审核,尤其是在您知道的领域。眼睛越多越好。
  • 所有公共关系都要求至少有两个团队成员进行审阅,然后才能合并为大师,尽管任何贡献者都可以进行审阅!在第二个团队成员进行审核之后,可以立即合并RP,或者如有必要,可以进一步合并其他贡献者明确提出的进一步审核或意见。

在编译和运行之前,我们需要安装所有开发依赖项并从容器中获取代码。

注意事项

将每个命令放在单独的行上。我们将在其中测试的容器称为jftest。在Docker内部,每次入口点可执行文件被终止时,会话都会重新启动,因此只需再次运行它即可继续。因此,我们还明确杀死了它以重新加载新版本。

师父分公司

docker exec -ti jftest bashapt-get update && apt-get install gnupg wget apt-transport-https curlwget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor> microsoft.asc.gpg && mv microsoft.asc.gpg /etc/apt/trusted.gpg。 d / wget -q https://packages.microsoft.com/config/debian/10/prod.list && mv prod.list /etc/apt/sources.list.d/microsoft-prod.listcurl -sS https:/ /dl.yarnpkg.com/debian/pubkey.gpg | apt-key add-&&回声“ deb https://dl.yarnpkg.com/debian/稳定主程序” | tee / etc / apt /来源。 list.d / yarn.listapt-获取更新&& apt-获取安装dotnet-sdk-3.1 yarncd / opt && git clone https://github.com/jellyfin/jellyfin.git && git clone https://github.com/ jellyfin / jellyfin-web.gitmv / jellyfin / /jellyfin.bak && cd / opt / jellyfin && dotnet发布Jellyfin。服务器-配置调试-输出=“ / jellyfin”-自包含-运行时linux-x64cd / opt / jellyfin-web && yarn install && yarn build && cp -r / opt / jellyfin-web / dist / jellyfin / jellyfin-webkill -15 $(pidof jellyfin)

要求扔

首先,完成前面的步骤以配置您的容器以构建master分支。

注意事项

是GitHub上的提取请求编号。

docker exec -ti jftest bashcd / opt / jellyfingit获取原始拉/  /头:my-testing-branchgit合并my-testing-branchdotnet发布Jellyfin.Server-配置调试--output =“ / jellyfin”-自包含--runtime linux-x64kill -15 $(pidof jellyfin)

zh_CN简体中文
es_ESEspañol hi_INहिन्दी arالعربية pt_BRPortuguês do Brasil bn_BDবাংলা ru_RUРусский ja日本語 de_DEDeutsch fr_FRFrançais it_ITItaliano zh_CN简体中文