如何在git存储库中编辑私有方法以使其可维护

时间:2018-05-06 02:35:31

标签: git github git-commit git-push git-fork

所以,我只是喜欢我在GitHub上找到的一个存储库(REPO),然而,该存储库的创建者对于他所公开的public(open)过于敏感。因此,除了主要的必需品之外,他还做了其他所有事情(类,函数,变量......)private

但是,我需要访问和修改禁止的水果,private variables, classes, methods, ...位于回购中的1个文件中。所以,我的问题是如何对该文件进行更改,以便我的工作尽可能保持可维护性。

可维护的含义:当REPO所有者更新回购时,我应该尽可能 easy 更新我和我的团队设置中的REPO

嗯,具体来说,我只需要在使用Swift安装的cocoapods GitHub库中更改1个类文件

2 个答案:

答案 0 :(得分:2)

实际上这是一个很好的问题。很多依赖开源库的项目都是一种痛苦。在某些时候,您的用例似乎与原始作者用例略有不同,您必须修改代码。一旦这样做,就会产生一定的维护负担,因为当上游repo(您的依赖关系)更新时,您必须跟踪补丁并重构/重新应用它们。例如,FreeBSD PortsMacPorts是试图大规模应对此问题的项目。简单来说,他们维护了一系列补丁,这些补丁使Linux软件(从原始回购)适应BSD / Mac(他们自己的“叉子”)。

这里没有灵丹妙药,但我会说git在很多情况下会大大简化这个过程。例如,您可以在fork中创建一个包含更改的分支,然后在更新时,您将“git rebase”添加到新的主分支(解决冲突等)。

对于您的特定情况,我建议制作一个自动准备补丁的脚本:搜索您的文件并将所有“私有”更改为“公共”。此脚本可以像sed -i s/private/public/g TheirShyFile.swift一样简单。如果你有这样一个脚本,维护你的fork会容易得多,因为你只需要从master再次派生并重新应用你的脚本,而不是重新定义和解决冲突。

答案 1 :(得分:1)

叉子回购。然后在本地检查你的repo的fork,并根据你的需要修改代码。提交您的更改并推送您的回购。

最后,向原始仓库提交拉取请求,这需要得到代码作者/维护者的批准。