diff --git a/source/chapter2/5exercise.rst b/source/chapter2/5exercise.rst index 8870e4d1ddfacf4159e8d4f528592d6ddef7aad3..080cdde47050dcf2d9e1197f9f33889441a2797a 100644 --- a/source/chapter2/5exercise.rst +++ b/source/chapter2/5exercise.rst @@ -27,6 +27,19 @@ lab2 中,我们实现了第一个系统调用 ``sys_write``,这使得我们 challenge: 支持多核,实现多个核运行用户程序。 +.. _inherit-last-ch-changes: + +.. note:: + + **如何快速继承上一章练习题的修改** + + 从这一章开始,在完成本章习题之前,首先要做的就是将上一章框架的修改继承到本章的框架代码。出于各种原因,实际上通过 ``git merge`` 并不是很方便,这里给出一种打 patch 的方法,希望能够有所帮助。 + + 1. 切换到上一章的分支,通过 ``git log`` 找到你在此分支上的第一次 commit 的前一个 commit 的 ID ,复制其前 8 位,记作 ``base-commit`` 。假设分支上最新的一次 commit ID 是 ``last-commit`` 。 + 2. 确保你位于项目根目录 ``rCore-Tutorial-v3`` 下。通过 ``git diff > `` 即可在 ``patch-path`` 路径位置(比如 ``~/Desktop/chx.patch`` )生成一个描述你对于上一章分支进行的全部修改的一个补丁文件。打开看一下,它给出了每个被修改的文件中涉及了哪些块的修改,还附加了块前后的若干行代码。如果想更加灵活进行合并的话,可以通过 ``git format-patch `` 命令在当前目录下生成一组补丁,它会对于 ``base-commit`` 后面的每一次 commit 均按照顺序生成一个补丁。 + 3. 切换到本章分支,通过 ``git apply --reject `` 来将一个补丁打到当前章节上。它的大概原理是对于补丁中的每个被修改文件中的每个修改块,尝试通过块的前后若干行代码来定位它在当前分支上的位置并进行替换。有一些块可能无法匹配,此时会生成与这些块所在的文件同名的 ``*.rej`` 文件,描述了哪些块替换失败了。在项目根目录 ``rCore-Tutorial-v3`` 下,可以通过 ``find . -name *.rej`` 来找到所有相关的 ``*.rej`` 文件并手动完成替换。 + 4. 在处理完所有 ``*.rej`` 之后,将它们删除并 commit 一下。现在就可以开始本章的实验了。 + 实验检查 ++++++++++++++++++++++++++++++ diff --git a/source/index.rst b/source/index.rst index 140d7f68ef34d90a4fbb8808c9c05c818be8dd1c..fac081f807120d63b70c46bb123e407c52c97490 100644 --- a/source/index.rst +++ b/source/index.rst @@ -53,9 +53,9 @@ rCore-Tutorial-Book 第三版 :doc:`/log` - 项目/文档于 2021-03-09 最后一次更新,情况如下: + 项目/文档于 2021-03-15 最后一次更新,情况如下: - - 将所有分支的 RustSBI 版本更新为 [81d53d8] 的 0.2.0-alpha.1 ,主要是在 Qemu 平台上支持非法指令的转发,目前可以正确处理带有非法指令的应用程序了。参考 ch2 分支上的测例 ``00hello_world.rs`` 。 + - 增加了在做实验的时候打补丁继承上一章节修改的 :ref:`教程 ` 。 项目简介 diff --git a/source/log.rst b/source/log.rst index d4162fa8bcfc97b7cef4f531aca1045a88e36781..f5198df3cc1f47228d41e49d8f5f036ffa8e9ad3 100644 --- a/source/log.rst +++ b/source/log.rst @@ -1,6 +1,11 @@ 更新日志 =============================== +2021-03-15 +------------------------------- + +- 增加了在做实验的时候打补丁继承上一章节修改的 :ref:`教程 ` 。 + 2021-03-09 -------------------------------