在第三方代码上维护自定义修补程序

Mar*_*ijn 2 javascript version-control patch

我正在构建一个使用第三方JavaScript库(TinyMCE)的Web应用程序.

我的应用程序有一些特定的需求,需要我在几个地方修补库.补丁很容易(不到十几行),但因为它们特定于我们的用例而不是错误.

我希望能够在发布新版本的库时更新,这将覆盖我们的Git存储库中的更改.

我需要一种方法来确保在将更新的库推送到生产服务器之前始终应用我们的补丁.由于更改非常小,因此手动应用它们不是问题.

在更新第三方代码时,如何确保我的第三方代码补丁在我们的存储库中应用?

Rôm*_*con 5

创建用于跟踪第三方代码的存储库,并将修补程序放在单独的分支中.当你需要最新版本获取的变化和变基的分支.

例如:

$ git clone --origin github https://github.com/tinymce/tinymce.git
$ cd tinymce/
$ git remote add origin git@myrepo.example.org:tinymce
Run Code Online (Sandbox Code Playgroud)

然后制作补丁并推送到您的存储库:

$ git commit -m "my patches to tinymce"
$ git push --set-upstream origin master
Run Code Online (Sandbox Code Playgroud)

此时您的存储库如下所示:

(0) --- (1) --- ... (n) --- (X)
                             |
                           master
Run Code Online (Sandbox Code Playgroud)

其中X是你的补丁.

现在设置一个分支来从github远程获取新的修订:

$ git branch tinymce_import github/master
$ git checkout tinymce_import
$ git pull --ff-only
Run Code Online (Sandbox Code Playgroud)

所以你的存储库就像这样(git branch足够聪明,可以用作github远程中最后一个版本的原点):

                           master
                             |
                     +----- (X)
                     |
(0) --- (1) --- ... (n) --- (n+1) --- ... (n+m)
                                            |
                                      tinymce_import
Run Code Online (Sandbox Code Playgroud)

最后在tinymce_import 上修改你的分支:

$ git checkout master
$ git rebase tinymce_import

                                                  master
                                                    |
                                            +----- (X)
                                            |
(0) --- (1) --- ... (n) --- (n+1) --- ... (n+m)
                                            |
                                      tinymce_import
Run Code Online (Sandbox Code Playgroud)