我们的代码是C ++和在SVN管理。发展是与Visual Studio。正如你所知道的Visual Studio C ++是不区分大小写为文件名和我们的代码不幸的是“剥削”这个沉重。

没有我们移植我们的应用程序到Linux + GCC,其中的区分大小写。这将涉及大量的文件名和文件的变化。我们计划做在单独的分支发展。

似乎SVN重命名具有众所周知的问题(此处这里)。 有没有一种方法来解决办法呢?是混帐SVN或SVNMERGE可以在这里帮助?

由于 迪马

有帮助吗?

解决方案

在的情况下的灵敏度的问题不是有关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。这很可能是我失踪了一些不可思议的选择,更好地使这一工作:)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top