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

Javascript 在第三方代码上维护自定义修补程序,javascript,version-control,patch,Javascript,Version Control,Patch,我正在构建一个使用第三方JavaScript库(TinyMCE)的web应用程序 我的应用程序有一些特殊的需求,需要我在一些地方修补库。这些补丁很简单(不到十几行),但因为它们是特定于我们的用例的,而不是bug 我希望能够在库本身的新版本发布时进行更新,这将覆盖我们在Git存储库中所做的更改 我需要一种方法来确保在将更新的库推送到生产服务器之前始终应用我们的修补程序。由于更改非常小,因此手动应用它们不会成为问题 更新第三方代码时,如何确保在我们的存储库中应用针对第三方代码的修补程序?如果您将Ti

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

我的应用程序有一些特殊的需求,需要我在一些地方修补库。这些补丁很简单(不到十几行),但因为它们是特定于我们的用例的,而不是bug

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

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


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

如果您将TinyMCE存储在Git repo中,那么您可以在获得TinyMCE的新版本后使用Git
post commit hook
执行修补程序(然后提交这些修补程序)

工作流程类似于:

[get new version of TinyMCE]
["git commit -a" to update all tracked files]
[post-commit-hook patches TinyMCE]
["git commit -a" to pick up all of the changes from the patches]

创建用于跟踪第三方代码的存储库,并将修补程序放在单独的分支中。当您需要最新版本时,获取更改和分支

例如:

$ git clone --origin github https://github.com/tinymce/tinymce.git
$ cd tinymce/
$ git remote add origin git@myrepo.example.org:tinymce
然后制作修补程序并推送到存储库:

$ git commit -m "my patches to tinymce"
$ git push --set-upstream origin master
此时,您的存储库如下所示:

(0) --- (1) --- ... (n) --- (X)
                             |
                           master
其中X是你的补丁

现在设置一个分支以从github远程服务器获取新修订:

因此,您的存储库变成这样(
git branch
足够聪明,可以将github远程版中的上一个修订版用作源):

最后,在tinymce_导入上重新设置主分支的基础:

$ git checkout master
$ git rebase tinymce_import

                                                  master
                                                    |
                                            +----- (X)
                                            |
(0) --- (1) --- ... (n) --- (n+1) --- ... (n+m)
                                            |
                                      tinymce_import
                           master
                             |
                     +----- (X)
                     |
(0) --- (1) --- ... (n) --- (n+1) --- ... (n+m)
                                            |
                                      tinymce_import
$ git checkout master
$ git rebase tinymce_import

                                                  master
                                                    |
                                            +----- (X)
                                            |
(0) --- (1) --- ... (n) --- (n+1) --- ... (n+m)
                                            |
                                      tinymce_import