我想知道是否有任何方法可以使用“diff”命令(不包括编译时生成的二进制文件、对象文件和其他临时文件(不包括“./LTIB clean/”distclean“))为自由缩放“LTIB”生成补丁文件,并使用“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
然后将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