本指南适用于维护者。这些特殊人员拥有 Homebrew 存储库的写入权限,并帮助合并他人的贡献。您可能会发现这里写的内容很有趣,但它绝对不是初学者指南。
鼓励所有 Homebrew 维护者为项目的各个部分做出贡献,但维护者往往属于四个主要团队
brew
维护者:此团队维护 Homebrew/brew
存储库。有关成为 brew
维护者的更多详细信息,请参阅 Homebrew/brew 维护者指南。Homebrew/homebrew-core
存储库。有关成为核心维护者的更多详细信息,请参阅 Homebrew/homebrew-core 维护者指南。Homebrew/homebrew-core
存储库。Homebrew/homebrew-cask
和 Homebrew/homebrew-cask-fonts
存储库。有关成为 Cask 维护者的更多详细信息,请参阅 Homebrew/homebrew-cask 维护者指南。这些文件旨在作为指导原则。作为一名维护者,您可以根据贡献者的舒适度和以往贡献,要求他们更改或帮助他们。请记住,作为一个团队,我们 优先考虑维护者而非用户 以避免倦怠。如果您希望更改或讨论任何指南:请打开 PR 以建议更改。
在审阅 PR 时,根据以下指南提交时使用“批准”、“带评论批准”、“评论”或“请求更改”
automerge-skip
)。相关
gh pr checkout <URL>
是使用 GitHub CLI 签出 PR 分支的超简单方法。Homebrew 旨在成为 macOS(和 Linux)的缺失包管理器。它的主要目标是尽可能对尽可能多的人有用,同时由一小群志愿者以专业、高标准的方式维护。在可能和合理的情况下,它应该寻求使用 macOS 的功能来融入 macOS 和 Apple 生态系统。在 Linux 和 Windows 上,它应该尽可能自包含。
git -s
)仅仅引用一个问题单可能就足够了,但请确保更改和上下文足够清晰,以便任何首次阅读它们的人都能理解它们。你不想让别人删除你编写的代码,因为新来的人不理解它为什么在那里。回归很糟糕。
这也适用于问题和 PR 正文。尽可能明确。如果一个 pull 请求是更大举措的一部分:链接到相关的跟踪问题。如果还没有跟踪问题:创建一个以改善沟通并达成共识。
修改 cherry-pick 以删除仅在空白处更改的提交。它们不可接受,因为我们的历史很重要,并且git blame
应该有用。
允许空白更正(例如,针对 Ruby 标准等)(事实上,这是一个很好的机会),前提是该行本身有一些不仅仅是空白更改的修改。但要小心对内联补丁进行更改——确保它们仍然适用。
维护人员(包括项目负责人)不应关闭由其他维护人员打开的问题或 pull 请求(请注意,在这种情况下,合并不被视为关闭),除非它们已过时,在这种情况下,任何维护人员都可以关闭它们。鼓励任何维护人员在希望对问题进行额外处理时重新打开已关闭的问题。
任何维护人员都可以合并他们仔细审查过的任何 PR,并且该 PR 已通过由任何其他维护人员打开的 CI。如果你不希望其他维护人员合并你的 PR:请使用草稿 pull 请求状态来表明,直到你准备自己合并它为止。
在用户提交问题或 CI 失败导致问题后,任何维护人员都可以还原由另一个维护人员创建的 PR。创建原始 PR 的维护人员应获得不少于一小时的时间来自己修复问题或决定自己还原 PR(如果他们愿意)。
对现有功能进行“增强”的 PR,即不是对开放用户问题/讨论的修复,不是版本升级,不是安全修复,不是对 CI 失败的修复,可用性改进,新功能,重构等。应该在周一至周五的 24 小时内合并。例如,
如果维护者在此期间休假/度假/生病并在返回后留下评论:请将合并后 PR 评论和反馈视为在时间段内留下的评论,并通过另一个 PR 来跟进他们的请求(如果同意)。
绝大多数 Homebrew/homebrew-core
PR 是错误修复或版本升级,可以在 CI 完成后进行自我合并。
维护者有多种方式相互沟通
所有通信最好在 GitHub 上公开进行。如果不可能或不合适(例如安全披露、两个维护者之间的人际问题、需要解决的紧急中断),则可以转移到维护者的私人群组通信,必要时可以进行 1:1 通信。技术决策不应在 1:1 通信中发生,但如果发生(或过去发生),则必须最终返回到 GitHub 上可链接的内容。例如,如果一年前在 Slack 上做出了技术决策,并且另一位维护者/贡献者/用户在 GitHub 上询问它,这是一个很好的机会向他们解释它并提供将来可以链接到的内容。
这使得其他维护者、贡献者和用户更容易了解我们在做什么(更重要的是,了解我们为什么这样做),并且意味着决策有一个可链接的 URL。
所有维护者(和项目负责人)通过任何媒介进行的通信都受 Homebrew 的行为准则 约束。对其他维护者、贡献者或用户的虐待行为将不被容忍;维护者将收到警告,如果他们的行为继续,他们将被移除为维护者。
维护者应该随时对其他维护者的工作和决策提出异议。积极鼓励维护者之间进行健康、友好的技术分歧,并且应该在问题跟踪器上公开进行,以使项目变得更好。人际问题应在 Slack 上私下处理,最好由主持人主持。如果工作或决策没有得到充分的记录或解释,任何维护者或贡献者都可以随时要求澄清。没有哪个维护者可以仅仅用“因为我说过”或“是我做了 X”来证明一个决定。禁止在问题跟踪器上进行无关讨论、吹毛求疵和人身攻击。