提交487128950df6ee433c131b5feaafe81ee86629f4可以在https://github.com/signalwire/freeswitch.git找到。
git log -1 487128950df6ee433c131b5feaafe81ee86629f4 --pretty=fuller 印刷:
commit 487128950df6ee433c131b5feaafe81ee86629f4
Author: Travis Cross <tc@traviscross.com>
AuthorDate: Fri Mar 21 06:12:02 2014 +0000
Author: Anthony Minessale <anthm@freeswitch.org>
AuthorDate: Fri Mar 14 02:59:13 2014 +0500
Commit: Travis Cross <tc@traviscross.com>
CommitDate: Mon Mar 24 12:54:50 2014 +0000
Use the system version of APR / APR-util if possible
Autodetect whether the system libapr / libaprutil has our
necessary modifications and use it if it does.
Run Code Online (Sandbox Code Playgroud)
它有 2 个作者。如果 fsck 检查打开,则将此提交推送到 Gitlab 或 …
我们收到了一个大补丁,修改了大约 17000 个文件。其大小为5.2G。当用 涂抹贴剂时git apply -3,12小时后仍未完成。
我们将每个文件的补丁分成更小的补丁,然后一一应用它们,这样至少我们可以看到进度。
再次卡在一个文件补丁上,仍然有111M那么大。它修改 HTML 文件。
我们将此文件补丁分成每个块更小的补丁,并获得大约 57000 个块补丁。每个块补丁大约需要 2-3 秒,因此比应用文件补丁需要更多时间。我会尝试将其分成更多块。
有什么方法可以有效地应用这么大的补丁吗?谢谢。
更新:
正如@ti7建议的,我尝试了一下patch,它解决了问题。
就我而言,我们有两种大补丁。
一种是添加/删除大型二进制文件,并且二进制文件的内容作为文本包含在补丁中。其中一个二进制文件大小为 188M,删除它的补丁大小为 374M。
另一种是修改大文本,有数百万次的删除和插入。其中一个文本文件前70M,后162M。补丁大小为181M,有2388623个插入和426959个删除。
经过一些测试,我认为这里的“大”描述的是插入和删除的数量。
对于二进制补丁,
对于文本补丁,
该二进制文件仅包含 1 处插入和/或 1 处删除。git apply或者patch可以在几秒钟内完成。一切都可以接受。
文本插入和删除过多。显然,patch在这种情况下要好得多。我阅读了一些帖子patch并了解到某些版本patch无法添加/删除/重命名文件。幸运的是,patch在我的机器上运行良好。
因此,我们将一体化补丁拆分为每个文件的更小的补丁。我们timeout 10s git apply -3 file_patch先尝试一下。如果无法在 10 秒内完成,请尝试timeout 10s patch -p1 < …
从如何在执行 shell 命令时回显它们,我已经学会了如何set -v在执行命令时使用打印命令。如果set -v在开始时添加foo.sh或bash -v foo.sh运行,则效果很好。但是,如果通过或 简单地foo.sh调用,则不会打印中的命令。是否有一个全局开关可以使所有命令和函数通过所有调用的脚本在执行时打印出来?bar.shbash bar.sh./bar.shbar.sh