gpt4 book ai didi

linux - 使用 "diff"和 "patch"命令排除二进制文件和目标文件,使用补丁文件进行 FreeScale LTIB 源代码控制

转载 作者:太空宇宙 更新时间:2023-11-04 11:30:51 25 4
gpt4 key购买 nike

我想知道是否有任何方法可以使用“diff”命令为 Free scale“LTIB”生成补丁文件(通过排除编译时生成的二进制文件、目标文件和其他临时文件(不带“./ltib clean/"distclean")) 并使用“patch”命令重新应用它们。

我可以生成补丁文件,默认包含所有临时文件。

我提前感谢你的帮助..

最佳答案

这取决于您要制作的补丁。在 LTIB 环境中,您可能希望通过不同的策略更改多种类型的内容:

  • $LTIB_DIR/merge 中的文件:可以使用常规版本控制技术处理这些文件
  • $LTIB_DIR/config(以及 $LTIB_DIR/.config 和 $LTIB_DIR/.ltibrc)中的配置等:这些也可以通过常规版本控制技术处理
  • 对软件包的修改(在 $LTIB_DIR/rpm/BUILD 下):LTIB 本身可以为您准备补丁文件并编辑事件的 .spec 文件(位于 $LTIB_DIR/dist 或 $LTIB_DIR/config/platform 下);为此,您可以使用 ltib 制作补丁:

    cd $LTIB_DIR
    ./ltib -p packagename -m patchmerge

如果您查看 ltib 脚本本身中的 patchmerge 代码,您会发现它大致执行以下操作:

mv $LTIB_DIR/rpm/BUILD/packagename $LTIB_DIR/rpm/BUILD/packagename.modified
cd $LTIB_DIR/rpm/BUILD/packagename.modified
make distclean
cd -
rpmbuild -bp ... # go through the original prep stage
diff --exclude CVS --exclude .git -uNr $LTIB_DIR/rpm/BUILD/packagename $LTIB_DIR/rpm/BUILD/packagename.modified > patchfile

然后将补丁文件添加到规范中并告诉您相关信息。

我不知道您要避免哪种 distclean(全局或包),但如果您愿意在包目录中执行“make distclean”(而不是执行 ./ltib - m distclean,这将删除您的 rootfs),那么这对您来说可能没问题。

否则,您可以使用 diff(或 git diff)来制作您自己的补丁文件。

您可以为 diff 创建一个类似于 .gitignore 的排除文件,并将其提供给 diff 以更好地选择补丁中的内容(阅读 差异联机帮助页):

cd $LTIB_DIR
vi diffignore # add file patterns to this file
mv $LTIB_DIR/rpm/BUILD/packagename $LTIB_DIR/rpm/BUILD/packagename.modified
./ltib -p packagename -m prep
diff --exclude CVS --exclude .git -X diffignore -uNr $LTIB_DIR/rpm/BUILD/packagename $LTIB_DIR/rpm/BUILD/packagename.modified > patchfile

关于linux - 使用 "diff"和 "patch"命令排除二进制文件和目标文件,使用补丁文件进行 FreeScale LTIB 源代码控制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11397461/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com