如何正确的使用+参与一个开源项目?

2018-05-22 11:30:53 +08:00
 zcdll

如题

例如一个文档或者接口管理工具,一开始找到这个项目的时候,可能可以满足需求,但是有一些细节需要修改,这个时候就要分情况了。

  1. 这个需求对他人也有用,那我可以提一个 pull request 贡献代码。
  2. 这个需求可能对他人无用,只是跟手头的项目紧耦合,但需要修改一下项目的源码。注意:当这个需求完成后,我已经修改了源码。

然后,这样的情况可能会有不少,假设现在修改了一二十个文件,1000 来行代码。

现在,这个开源项目发布了一个大版本。之前一直没有从 Git 更新过这个开源项目,只有本地的修改。

现在我要更新这个大版本吗?

又要分情况了:

  1. 这个大版本没有什么新颖的功能,现在的版本能满足需求,那就不更新了。
  2. 这个大版本有几个大的新功能,想要用在手头的项目中。那我要怎么更新呢?直接拉下来代码的话,肯定会有冲突,而且可能不太好解决。

我能想到的办法是,自己建一个本地分支,给手头公司的项目用,master 始终保持和这个开源项目的 master 分支同步。然后合并的时候一点一点做。。。

不知道各位大佬平时是怎么做的?

3171 次点击
所在节点    开源软件
3 条回复
Arnie97
2018-05-23 00:54:45 +08:00
合并上游修改确实比较头疼,随着上游的更新不断 git pull --rebase 可能会比一口气合并大版本简单点…
param
2018-05-23 02:36:53 +08:00
如果是自用的话,就应该 fork 一份出来修改了吧。修改的过程中注意一下兼容,用扩展的方式来修改,只加功能不减功能。修改的时候保持最少的修改量。合并上游难不难,取决与你修改的代码数量。一二十个文件,1000 来行代码,如果都是在上游代码中直接修改而不是新增的话,合并起来就很头疼了。
zcdll
2018-05-23 11:19:02 +08:00
@Arnie97 之前是要么基本不改代码只提 bug,issue,要么是用当前版本基本不更新了,虽然缺乏经验,不太懂 git 的某些操作。。。我这次可以试试,看看能不能总结出个 123
@param 我写前端,貌似 重写 这个概念不深,面向对象用的少,一般都是功能代码。。。不过幸好要写一个 typescript 的项目了,这次试试。这次尽量用新增的方式试试。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/456767

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX