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 ファイルをディレクトリに保存したくない場合は、.svn ファイルを圧縮するか、それらのファイルを含まない他の人に渡したい場合は、この perl スクリプトを使用して、.svn ファイルを削除してください。 .svn ファイル。これを使用すると、.svn ファイルを削除するため、svn commit を使用してリポジトリにコミットできなくなることに注意してください。

#!/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 に答える