FreeScale LTIB源代码控制,使用“diff”& amp; “patch”命令通过排除二进制文件和目标文件

时间:2012-07-09 14:46:18

标签: linux linux-kernel diff patch embedded-linux

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

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

我提前感谢您的帮助..

1 个答案:

答案 0 :(得分: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

然后将patchfile添加到规范并告诉你它。

我不知道你试图避免哪个distclean(全局或包),但如果你可以在包目录中执行“make distclean”(而不是执行./ltib -m distclean,将删除你的rootfs),这可能对你没用。

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

您可以为diff创建与.gitignore类似的排除文件,并将其设置为差异,以便更有选择性地了解补丁中的内容(请参阅diff联机帮助页):< / p>

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