SVN checkout和SVN导出之间的确切区别是什么?
据我所知,export不包含包含元数据的.svn目录,checkout包含.svn目录.然而,我的同事最近遇到了这个问题,从结账和从SVN回购导出的资源编译的东西有不同的行为.它们都编译正确,但是从svn export
工作中编译的那个,但是签出的那个根本不起作用.
PS:正在编译的东西是在嵌入式设备中使用的Linux 2.4内核.图像正确编译和加载,但签出的图像不起作用.它会在insmod期间导致内核崩溃.为什么会发生这种情况?
PPS:我们尝试使用校验和和差异工具来检查从SVN导出和签出的两个目录之间的区别.除.svn目录外,它们都是相同的.
svn export
只需从修订中提取所有文件,并且不允许对其进行修订控制.它也不会使用.svn目录丢弃每个目录.
svn checkout
允许您在目录中使用版本控制,例如您的标准命令,如svn update
和svn commit
.
如您所述,结帐包括.svn目录.因此,它是一个工作副本,并将有适当的信息提交回来(如果您有权限).如果您执行导出,则只需获取存储库当前状态的副本,并且无法以任何方式提交任何更改.
您是否重新运行结帐或导出到现有目录?
因为如果是,checkout将更新工作副本,包括删除任何文件.
但是导出只会将所有文件从reporsitory传输到目标 - 如果目标是同一目录,这意味着不会删除存储库中删除的任何文件.
因此,导出副本可能只能工作,因为它依赖于已在存储库中删除的文件?
构建过程是否有机会查看子目录并包含它不应包含的内容?顺便说一句,你可以做一个合法的结账,然后删除.svn及其包含的全部内容.这应该给你与出口相同.尝试在删除元数据之前和之后编译它.