CVS和Subversion都有一个方便的合并功能,因此当您更新已修改的源文件时,它会合并其他人在同一文件上所做的更改.
但是,如果您的更改与其他更改不兼容 - 通常如果您同时更改了代码的相同部分 - 则会产生冲突.两段源代码都将包含在合并文件中,您需要手动排序要保留的更改.到目前为止都很好.
我的问题是我们中的一些人使用不同的开发环境(Netbeans与vi,如果你必须知道),Netbeans有一个自动缩进功能,可以重新缩进代码.因此,当我们合并更改时,我们有时会遇到巨大的冲突,这些冲突主要是由缩进的简单更改引起的,并不是对代码的真正更改.通常这些会产生数百行明显的冲突,这些冲突必须手动解决,但通常它们只归结为几行真正的变化.当某人的编辑器将unix更改为Windows换行符或反之亦然时,会出现类似的情况.
那么 - 在比较两个版本时,我可以设置合并以忽略这些"冲突"吗?Diff有--ignore-space-change或-b选项,我想在cvs或svn中提供基本相同的功能.我们在不同的项目中使用每个工具,所以我很乐意为其中一个或两个得到答案.
最后两个笔记:
显然,合并过程必须随意选择在合并文件中使用哪个版本的空白.我很好 - 我们总是可以在以后重新格式化它.
我可以通过更多的纪律和更频繁的检查来避免这一点 - 承认和理解.但我并不完美.
Peter Parker.. 11
对于SVN:在命令行工具中,有选项-x,您可以将其设置为" b "或" w "以忽略空间更改.所有空间.
您还可以提供第三方工具来进行合并.因此,如果您有一个忽略空格的合并,您可以使用这个.TortoiseSVN一如既往地是所有参数的前端,因此它也支持忽略空格.
这里描述了 svn merge命令.您需要的选项是--diff3-cmd
对于SVN:在命令行工具中,有选项-x,您可以将其设置为" b "或" w "以忽略空间更改.所有空间.
您还可以提供第三方工具来进行合并.因此,如果您有一个忽略空格的合并,您可以使用这个.TortoiseSVN一如既往地是所有参数的前端,因此它也支持忽略空格.
这里描述了 svn merge命令.您需要的选项是--diff3-cmd
对于Windows用户,您可以使用TortoiseSVN(Subversion的Windows资源管理器外壳扩展),它具有支持您所描述内容的合并功能:
忽略行结尾不包括仅由行端样式的差异引起的更改.
比较空格包括缩进和内联空格中的所有更改作为添加/删除的行.
忽略空白更改会排除仅由于空白数量或类型的变化而导致的更改,例如.更改缩进或将制表符更改为空格.添加之前没有空格或完全删除空格的空格仍然显示为更改.
忽略所有空格会排除所有仅限空白的更改.