如何正确的使用+参与一个开源项目? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zcdll
V2EX    开源软件

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

  •  
  •   zcdll 2018-05-22 11:30:53 +08:00 3683 次点击
    这是一个创建于 2768 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如题

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

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

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

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

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

    又要分情况了:

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

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

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

    3 条回复    2018-05-23 11:19:02 +08:00
    Arnie97
        1
    Arnie97  
       2018-05-23 00:54:45 +08:00 via Android
    合并上游修改确实比较头疼,随着上游的更新不断 git pull --rebase 可能会比一口气合并大版本简单点…
    param
        2
    param  
       2018-05-23 02:36:53 +08:00 via Android
    如果是自用的话,就应该 fork 一份出来修改了吧。修改的过程中注意一下兼容,用扩展的方式来修改,只加功能不减功能。修改的时候保持最少的修改量。合并上游难不难,取决与你修改的代码数量。一二十个文件,1000 来行代码,如果都是在上游代码中直接修改而不是新增的话,合并起来就很头疼了。
    zcdll
        3
    zcdll  
    OP
       2018-05-23 11:19:02 +08:00
    @Arnie97 之前是要么基本不改代码只提 bug,issue,要么是用当前版本基本不更新了,虽然缺乏经验,不太懂 git 的某些操作。。。我这次可以试试,看看能不能总结出个 123
    @param 我写前端,貌似 重写 这个概念不深,面向对象用的少,一般都是功能代码。。。不过幸好要写一个 typescript 的项目了,这次试试。这次尽量用新增的方式试试。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     902 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 36ms UTC 19:47 PVG 03:47 LAX 11:47 JFK 14:47
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86