我想知道是否有任何方法可以使用“diff”命令生成自由缩放“LTIB”的补丁文件(通过排除二进制文件,目标文件和编译时生成的其他临时文件(带有“)。 / ltib clean /“distclean”))并用“patch”命令重新应用它们。
我可以生成补丁文件,默认情况下包含所有临时文件。
我提前感谢您的帮助..
答案 0 :(得分:1)
这取决于你想要制作的补丁。 在LTIB环境中,您可能希望更改几种不同的策略:
对软件包的修改(在$ 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