解决方案
在的情况下的灵敏度的问题不是有关Visual Studio与GCC,而是关于文件系统;在Windows和Mac OS X的标准文件系统(FAT32和NTFS for Windows中,HFS +的Mac OS X),是区分insenstive但保留大小写,而Linux文件系统(ext2的,EXT3,EXT4和)是区分大小写的。我建议你重命名文件,使用您的所有源文件全部小写,然后分支, - 当然 - 对于未来,必须使用小写的严格的政策和“的.cpp”扩展所有C ++源文件和“.H”为所有的头文件。有没有你不能先于分支执行此重命名的原因吗?
其他提示
做启发式文件的内容和基于文件名相似Git的本身的交易(非常好)与重命名的文件中合并(而不是只有在那里)问题的重命名检测的。它不需要具有关于信息输入重命名等的重命名跟踪解决方案。
有两个问题在这里,一个是重命名和合并svn的限制,在我看来,一旦人们决定使用svn去一个项目将是不可取的中间切换的版本控制软件。我跟其他开发人员,并锁定整个项目,做重命名的循环。
在我的情况下,我解决了一个简单的perl脚本的头文件的情况下,敏感的问题:它将修正回车和集包括为小写。 注释的部分固定包括
#!/usr/bin/perl
use strict;
use warnings;
#
use File::Find;
use File::Copy;
sub wanted
{
if( m/\.c$/i || m/\.h$/i ) {
my $orig = $_;
my $bak = $orig.".bak";
my $dst = $orig;
system("fromdos",$orig) == 0 or die "fromdos: $?";
# open(FH,'<',$orig) or die "open $orig: $!";
# my @lines;
# while(my $line = <FH>) {
# if( $line =~ m/(^#include\s+")([^"]+)(".*)$/ ) {
# print $line;
# my $inc = $2;
# $inc =~ tr/A-Z/a-z/;
# print "change to:\n";
# print $1.$inc.$3."\n";
# print "\n";
# push @lines, $1 . $inc . $3."\n";
# } else {
# push @lines,$line;
# }
# }
# close(FH);
# #move($orig,$bak) or die "move $orig to $bak: $!";
# unlink($orig);
# open(FH, '>', $dst) or die "open $dst: $!";
# print FH @lines;
# close(FH);
}
}
find(\&wanted, ".");
正如其他人说,原来问题无关与供应链管理系统,真的。至于使用Git,你可以做合并的混帐SVN和推回SVN回购的 - 只是要注意提前,这是一个一次性的选择,即:不要指望SVN意识到这个承诺被合并,甚至是文件被重命名 - 除非你是你将失去历史文件的真正的谨慎
作为一个方面说明沿着“非常小心”选项,以使混帐SVN推动正确的“文件重命名”,以SVN信息似乎可靠地工作是重命名这些文件中的唯一途径混帐svn的不改变的任何的内容,提交,然后你想要的任何文件,修改和做其他承诺。如果您在提交之前修改重命名的文件,混帐SVN知道该文件具有的可能的被移动,但显然并不信任自己的启发式足以推动这个信息回SVN。这很可能是我失踪了一些不可思议的选择,更好地使这一工作:)