用于保持自定义修改的开源软件最新的git工作流程?

Joh*_*ary 8 git workflow open-source branching-and-merging

我们的大学为我们管理的服务器上的校园部门提供网络托管 安装开源第三方程序需要在程序运行之前修改程序中的文件权限和代码.(如果你熟悉,我们正在使用suEXEC.)

我们目前通过安装程序脚本提供WordPress.用户上传最新的稳定版本,并通过SSH运行服务器端PHP脚本.此PHP脚本修改所有文件/文件夹的文件权限,添加/删除各种文件中的一些代码,并创建一些新文件.当发布新的稳定版本时,此安装程序脚本是一种麻烦的平衡行为.

我想开始使用版本控制(特别是git)来跟踪我们的自定义更改,而不是依赖脚本来进行更改,但我不确定要使用的工作流程.我熟悉分支和合并,但不确定如何在发布新版本时集成我们的旧更改.

我的git工作流程应该如何整合WordPress核心的新变化,还能保留我们较旧的自定义更改?

dah*_*byk 9

我建议您将更改保留在分支中,并在每次更新时根据最新的WordPress重新分配该分支.在粗略的时间表......

              +-- WordPress 1.0
              v
[master] --*--*
               \
[custom]        *--*--*     <- your customizations
Run Code Online (Sandbox Code Playgroud)

当您想要更新WordPress时,切换到master并使用最新的源进行新的提交(或使用git-svn保持master同步):

              +-- WordPress 1.0
              |     +-- WordPress 1.1
              v     v
[master] --*--*--*--* 
               \
[custom]        *--*--*     <- your customizations
Run Code Online (Sandbox Code Playgroud)

现在,您可以git rebase master custom根据最新情况重播更改,解决任何冲突.您的时间表将如下所示:

              +-- WordPress 1.0
              |     +-- WordPress 1.1
              v     v
[master] --*--*--*--* 
                     \
[custom]              *--*--*     <- your customizations
Run Code Online (Sandbox Code Playgroud)

更新:提供一些基本原理...我喜欢这种方法来解决这个问题,因为它可以明确区分WordPress的代码和您的自定义.当你得到一个新版本的WordPress时,你真的对"集成"不感兴趣.您有兴趣将自定义重新应用于新版本的WordPress.在我看来,通过rebase提交,最容易进行重新定制.任何冲突都意味着自定义可能会破坏,因此旧的自定义提交无论如何都是垃圾 - 更好的方法是在源头修复问题并保持更新的历史记录清洁.

master更新并custom进行重新定位和推送之后,协作者将根据最新情况重新调整他们的工作进度.

这只是我的意见,作为一个坚定的rebase>合并支持者.Git的美妙之处在于很少有正确答案.只需不断调整,直到找到适合自己的东西.

  • 我建议不要这样做,因为变基会导致很多问题.它失去了历史(你不能回到你之前实际部署的版本,也不能告诉你什么时候进行合并),并且你的工作分支一直在变形,这使得你很难与之合作其他人,因为现在他们还需要改变他们所做的一切.对于尚未与其他任何人共享的更改,或者已知存在易变性的更改,重新定位是最佳选择,而不是每次有新版本时在上游重新定义整个历史记录. (3认同)