0

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

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

我提前感谢您的帮助..

4

1 回答 1

1

这取决于您要制作的补丁。在 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 以便对补丁中的内容更具选择性(阅读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
于 2013-04-12T16:54:14.840 回答