2

Subversion 签出在“.svn”树下产生大量文件。有没有办法在结帐过程中过滤掉“.svn”文件?

谢谢,

4

2 回答 2

7

svn export。它应该有帮助。

第一种形式从由 URL 指定的存储库中导出一个干净的目录树,如果给出,则在修订版 REV,否则在 HEAD,到 PATH。如果省略 PATH,则 URL 的最后一个组成部分用于本地目录名称。

正如 yodaj007 所说,这将从修订版中提取所有文件,并且该目录将不是修订版控制的目录。要获得修订控制目录,您可以使用通常的svn co.

于 2010-12-18T07:36:35.283 回答
2

我知道这是一篇迟到的帖子,但是如果您不想将 .svn 文件存储在您的目录中,因为您想将其压缩或将其交给没有这些文件的其他人,请使用此 perl 脚本删除.svn 文件。请注意,通过使用它,您将无法使用 svn commit 提交回存储库,因为您删除了 .svn 文件。

#!/usr/bin/perl

use File::Path;
use strict;

# Only run program on valid input MAX/MIN_INPUT = 1
if ( @ARGV == 1 ) {
    my $file = $ARGV[0];
    #Do some regular expression verrification
    &dot_svn_del_func ( $ARGV[0] );
} else {
    die "ERROR: to many arguments passed";
}

sub dot_svn_del_func {
    my $path = shift;
    opendir (DIR, $path) or die "Unable to open $path: $!";
        my @files = grep { !/^\.{1,2}$/ } readdir (DIR);
        closedir (DIR);
        @files = map { $path . '/' . $_ } @files;
        for (@files) {
            if (-d $_) {
            my $svn_found = 0;
            my $path = $_;
            my @path_components = split(/\//,$path);
            my $path_count = 0;
            foreach my $new_path (@path_components) {
                if ( $new_path eq ".svn" ) {
                    rmtree($_,1,1);
                    $svn_found = 1;
                }   
                $path_count++;
            }
            if ( $svn_found == 0 ) {
                #print "Making recursive calls from ".$_."\n";
                        &dot_svn_del_func ( $_ );
            }
        }
   }

}

于 2011-05-09T22:02:00.927 回答