Subversion结帐会在'.svn'树下生成大量文件。 有没有办法在结账过程中过滤掉'.svn'文件?
谢谢,
森
答案 0 :(得分:7)
请参阅svn export
。它应该有所帮助。
第一个表单从URL指定的存储库导出一个干净的目录树,如果给出了修订版REV,则在HEAD处导入PATH。如果省略PATH,则URL的最后一个组件用于本地目录名。
正如yodaj007所说,这将从修订中提取所有文件,而目录将不是修订控制的文件。要获取修订版受控目录,请使用通常的svn co
。
答案 1 :(得分: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 ( $_ );
}
}
}
}