Re: [PATCH] git-svn: added an --include-path flag
Paul Walmsley wrote: > The SVN::Fetcher module is now able to filter for inclusion as well > as exclusion (as used by --ignore-path). Also added tests, documentation > changes and git completion script. > > If you have an SVN repository with many top level directories and you > only want a git-svn clone of some of them then using --ignore-path is > difficult as it requires a very long regexp. In this case it's much > easier to filter for inclusion. > > Signed-off-by: Paul Walmsley Thanks, signed-off and applied, will push. -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH] git-svn: added an --include-path flag
The SVN::Fetcher module is now able to filter for inclusion as well as exclusion (as used by --ignore-path). Also added tests, documentation changes and git completion script. If you have an SVN repository with many top level directories and you only want a git-svn clone of some of them then using --ignore-path is difficult as it requires a very long regexp. In this case it's much easier to filter for inclusion. Signed-off-by: Paul Walmsley --- Documentation/git-svn.txt | 12 +++ contrib/completion/git-completion.bash |2 +- git-svn.perl |4 + perl/Git/SVN/Fetcher.pm| 16 +++- t/t9147-git-svn-include-paths.sh | 149 5 files changed, 180 insertions(+), 3 deletions(-) create mode 100755 t/t9147-git-svn-include-paths.sh diff --git a/Documentation/git-svn.txt b/Documentation/git-svn.txt index 1b8b649..698a6bb 100644 --- a/Documentation/git-svn.txt +++ b/Documentation/git-svn.txt @@ -85,6 +85,10 @@ COMMANDS When passed to 'init' or 'clone' this regular expression will be preserved as a config key. See 'fetch' for a description of '--ignore-paths'. +--include-paths=;; + When passed to 'init' or 'clone' this regular expression will + be preserved as a config key. See 'fetch' for a description + of '--include-paths'. --no-minimize-url;; When tracking multiple directories (using --stdlayout, --branches, or --tags options), git svn will attempt to connect @@ -146,6 +150,14 @@ Skip "branches" and "tags" of first level directories;; -- +--include-paths=;; + This allows one to specify a Perl regular expression that will + cause the inclusion of only matching paths from checkout from SVN. + The '--include-paths' option should match for every 'fetch' + (including automatic fetches due to 'clone', 'dcommit', + 'rebase', etc) on a given repository. '--ignore-paths' takes + precedence over '--include-paths'. + --log-window-size=;; Fetch log entries per request when scanning Subversion history. The default is 100. For very large Subversion repositories, larger diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash index 2ba1461..8427df2 100644 --- a/contrib/completion/git-completion.bash +++ b/contrib/completion/git-completion.bash @@ -2451,7 +2451,7 @@ _git_svn () --no-metadata --use-svm-props --use-svnsync-props --log-window-size= --no-checkout --quiet --repack-flags --use-log-author --localtime - --ignore-paths= $remote_opts + --ignore-paths= --include-paths= $remote_opts " local init_opts=" --template= --shared= --trunk= --tags= diff --git a/git-svn.perl b/git-svn.perl index 6c7bd95..5e56dc7 100755 --- a/git-svn.perl +++ b/git-svn.perl @@ -126,6 +126,7 @@ my %remote_opts = ( 'username=s' => \$Git::SVN::Prompt::_username, 'config-dir=s' => \$Git::SVN::Ra::config_dir, 'no-auth-cache' => \$Git::SVN::Prompt::_no_auth_cache, 'ignore-paths=s' => \$Git::SVN::Fetcher::_ignore_regex, +'include-paths=s' => \$Git::SVN::Fetcher::_include_regex, 'ignore-refs=s' => \$Git::SVN::Ra::_ignore_refs_regex ); my %fc_opts = ( 'follow-parent|follow!' => \$Git::SVN::_follow_parent, 'authors-file|A=s' => \$_authors, @@ -470,6 +471,9 @@ sub do_git_init_db { my $ignore_paths_regex = \$Git::SVN::Fetcher::_ignore_regex; command_noisy('config', "$pfx.ignore-paths", $$ignore_paths_regex) if defined $$ignore_paths_regex; + my $include_paths_regex = \$Git::SVN::Fetcher::_include_regex; + command_noisy('config', "$pfx.include-paths", $$include_paths_regex) + if defined $$include_paths_regex; my $ignore_refs_regex = \$Git::SVN::Ra::_ignore_refs_regex; command_noisy('config', "$pfx.ignore-refs", $$ignore_refs_regex) if defined $$ignore_refs_regex; diff --git a/perl/Git/SVN/Fetcher.pm b/perl/Git/SVN/Fetcher.pm index 046a7a2..d25524c 100644 --- a/perl/Git/SVN/Fetcher.pm +++ b/perl/Git/SVN/Fetcher.pm @@ -1,6 +1,7 @@ package Git::SVN::Fetcher; -use vars qw/@ISA $_ignore_regex $_preserve_empty_dirs $_placeholder_filename -@deleted_gpath %added_placeholder $repo_id/; +use vars qw/@ISA $_ignore_regex $_include_regex $_preserve_empty_dirs +$_placeholder_filename @deleted_gpath %added_placeholder +$repo_id/; use strict; use warnings; use SVN::Delta; @@ -33,6 +34,10 @@ sub new { my $v = eval { command_oneline('config', '--get', $k) }; $self->{ignore_regex} = $v; + $k = "svn-remote.$re
Re: [PATCH] git-svn: added an --include-path flag (resent fixing mail format)
Paul Walmsley wrote: > The SVN::Fetcher module is now able to filter for inclusion as well > as exclusion (as used by --ignore-path). Also added tests, documentation > changes and git completion script. > > If you have an SVN repository with many top level directories and you > only want a git-svn clone of some of them then using --ignore-path is > difficult as it requires a very long regexp. In this case it's much > easier to filter for inclusion. Thanks, comments inline. A Signed-off-by is necessary (especially for new contributors) (not _my_ policy, but project policy, see Documentation/SubmittingPatches) > @@ -1,5 +1,5 @@ > package Git::SVN::Fetcher; > -use vars qw/@ISA $_ignore_regex $_preserve_empty_dirs $_placeholder_filename > +use vars qw/@ISA $_ignore_regex $_include_regex $_preserve_empty_dirs > $_placeholder_filename > @deleted_gpath %added_placeholder $repo_id/; Please wrap long lines at 80 columns. > --- /dev/null > +++ b/t/t9147-git-svn-include-paths.sh > @@ -0,0 +1,150 @@ > +#!/bin/sh > +# > +# Copyright (c) 2009 Vitaly Shukela > +# Copyright (c) 2009 Eric Wong > +# I already commented on this in the previous email, please add your own copyright header (you can add a note saying this is based on t9134 by Vitaly). Thanks again. -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH] git-svn: added an --include-path flag (resent fixing mail format)
The SVN::Fetcher module is now able to filter for inclusion as well as exclusion (as used by --ignore-path). Also added tests, documentation changes and git completion script. If you have an SVN repository with many top level directories and you only want a git-svn clone of some of them then using --ignore-path is difficult as it requires a very long regexp. In this case it's much easier to filter for inclusion. --- Documentation/git-svn.txt | 12 +++ contrib/completion/git-completion.bash |2 +- git-svn.perl |4 + perl/Git/SVN/Fetcher.pm| 13 ++- t/t9147-git-svn-include-paths.sh | 150 5 files changed, 179 insertions(+), 2 deletions(-) create mode 100755 t/t9147-git-svn-include-paths.sh diff --git a/Documentation/git-svn.txt b/Documentation/git-svn.txt index 69decb1..df1f40c 100644 --- a/Documentation/git-svn.txt +++ b/Documentation/git-svn.txt @@ -85,6 +85,10 @@ COMMANDS When passed to 'init' or 'clone' this regular expression will be preserved as a config key. See 'fetch' for a description of '--ignore-paths'. +--include-paths=;; + When passed to 'init' or 'clone' this regular expression will + be preserved as a config key. See 'fetch' for a description + of '--include-paths'. --no-minimize-url;; When tracking multiple directories (using --stdlayout, --branches, or --tags options), git svn will attempt to connect @@ -146,6 +150,14 @@ Skip "branches" and "tags" of first level directories;; -- +--include-paths=;; + This allows one to specify a Perl regular expression that will + cause the inclusion of only matching paths from checkout from SVN. + The '--include-paths' option should match for every 'fetch' + (including automatic fetches due to 'clone', 'dcommit', + 'rebase', etc) on a given repository. '--ignore-paths' takes + precedence over '--include-paths'. + --log-window-size=;; Fetch log entries per request when scanning Subversion history. The default is 100. For very large Subversion repositories, larger diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash index 39c7ff8..8b75d01 100644 --- a/contrib/completion/git-completion.bash +++ b/contrib/completion/git-completion.bash @@ -,7 +,7 @@ _git_svn () --no-metadata --use-svm-props --use-svnsync-props --log-window-size= --no-checkout --quiet --repack-flags --use-log-author --localtime - --ignore-paths= $remote_opts + --ignore-paths= --include-paths= $remote_opts " local init_opts=" --template= --shared= --trunk= --tags= diff --git a/git-svn.perl b/git-svn.perl index bd5266c..6d713e1 100755 --- a/git-svn.perl +++ b/git-svn.perl @@ -127,6 +127,7 @@ my %remote_opts = ( 'username=s' => \$Git::SVN::Prompt::_username, 'config-dir=s' => \$Git::SVN::Ra::config_dir, 'no-auth-cache' => \$Git::SVN::Prompt::_no_auth_cache, 'ignore-paths=s' => \$Git::SVN::Fetcher::_ignore_regex, +'include-paths=s' => \$Git::SVN::Fetcher::_include_regex, 'ignore-refs=s' => \$Git::SVN::Ra::_ignore_refs_regex ); my %fc_opts = ( 'follow-parent|follow!' => \$Git::SVN::_follow_parent, 'authors-file|A=s' => \$_authors, @@ -477,6 +478,9 @@ sub do_git_init_db { my $ignore_paths_regex = \$Git::SVN::Fetcher::_ignore_regex; command_noisy('config', "$pfx.ignore-paths", $$ignore_paths_regex) if defined $$ignore_paths_regex; + my $include_paths_regex = \$Git::SVN::Fetcher::_include_regex; + command_noisy('config', "$pfx.include-paths", $$include_paths_regex) + if defined $$include_paths_regex; my $ignore_refs_regex = \$Git::SVN::Ra::_ignore_refs_regex; command_noisy('config', "$pfx.ignore-refs", $$ignore_refs_regex) if defined $$ignore_refs_regex; diff --git a/perl/Git/SVN/Fetcher.pm b/perl/Git/SVN/Fetcher.pm index 046a7a2..27824e7 100644 --- a/perl/Git/SVN/Fetcher.pm +++ b/perl/Git/SVN/Fetcher.pm @@ -1,5 +1,5 @@ package Git::SVN::Fetcher; -use vars qw/@ISA $_ignore_regex $_preserve_empty_dirs $_placeholder_filename +use vars qw/@ISA $_ignore_regex $_include_regex $_preserve_empty_dirs $_placeholder_filename @deleted_gpath %added_placeholder $repo_id/; use strict; use warnings; @@ -33,6 +33,10 @@ sub new { my $v = eval { command_oneline('config', '--get', $k) }; $self->{ignore_regex} = $v; + $k = "svn-remote.$repo_id.include-paths"; + $v = eval { command_oneline('config', '--get', $k) }; + $self->{include_regex} = $v;
Re: Fwd: [PATCH] git-svn: added an --include-path flag
Paul Walmsley wrote: > Hi, > Please forgive the direct approach, but I submitted a git-svn patch to the > git list which sank without any comment. As major contributors to git-svn I > would like to solicit your feedback on it. The patch is so that git svn > clone supports '--include-path' as a complement to '--ignore-path'. I had > a need for this as our SVN repository has many top level folders of which > only a few may be needed for any project. I wanted to contribute the patch > back as I think it may be useful to others. I've included unit tests too. No forgivness necessary, it's standard practice to Cc maintainers in git (and Linux kernel) patch submissions :) (Re-adding git ML-as Cc) > --- /dev/null > +++ b/t/t9147-git-svn-include-paths.sh > @@ -0,0 +1,150 @@ > +#!/bin/sh > +# > +# Copyright (c) 2009 Vitaly Shukela > +# Copyright (c) 2009 Eric Wong Use your name (and current year) in copyright headers for your submissions. I'll take a closer look at the rest of the patch later, but your patch below appears line-wrapped and mangled (see Documentation/SubmittingPatches). Also, we'd greatly appreciate you omit HTML from emails in the future. Thanks. -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH] git-svn: added an --include-path flag
The SVN::Fetcher module is now able to filter for inclusion as well as exclusion (as used by --ignore-path). Also added tests, documentation changes and git completion script. If you have an SVN repository with many top level directories and you only want a git-svn clone of some of them then using --ignore-path is difficult as it requires a very long regexp. In this case it's much easier to filter for inclusion. Signed-off-by: Paul Walmsley --- Documentation/git-svn.txt | 12 +++ contrib/completion/git-completion.bash |2 +- git-svn.perl |4 + perl/Git/SVN/Fetcher.pm| 13 ++- t/t9147-git-svn-include-paths.sh | 150 5 files changed, 179 insertions(+), 2 deletions(-) create mode 100755 t/t9147-git-svn-include-paths.sh --1.7.10.4 Content-Type: text/x-patch; name="0001-git-svn-added-an-include-path-flag.patch" Content-Transfer-Encoding: 8bit Content-Disposition: attachment; filename="0001-git-svn-added-an-include-path-flag.patch" diff --git a/Documentation/git-svn.txt b/Documentation/git-svn.txt index 69decb1..df1f40c 100644 --- a/Documentation/git-svn.txt +++ b/Documentation/git-svn.txt @@ -85,6 +85,10 @@ COMMANDS When passed to 'init' or 'clone' this regular expression will be preserved as a config key. See 'fetch' for a description of '--ignore-paths'. +--include-paths=;; + When passed to 'init' or 'clone' this regular expression will + be preserved as a config key. See 'fetch' for a description + of '--include-paths'. --no-minimize-url;; When tracking multiple directories (using --stdlayout, --branches, or --tags options), git svn will attempt to connect @@ -146,6 +150,14 @@ Skip "branches" and "tags" of first level directories;; -- +--include-paths=;; + This allows one to specify a Perl regular expression that will + cause the inclusion of only matching paths from checkout from SVN. + The '--include-paths' option should match for every 'fetch' + (including automatic fetches due to 'clone', 'dcommit', + 'rebase', etc) on a given repository. '--ignore-paths' takes + precedence over '--include-paths'. + --log-window-size=;; Fetch log entries per request when scanning Subversion history. The default is 100. For very large Subversion repositories, larger diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash index 39c7ff8..8b75d01 100644 --- a/contrib/completion/git-completion.bash +++ b/contrib/completion/git-completion.bash @@ -,7 +,7 @@ _git_svn () --no-metadata --use-svm-props --use-svnsync-props --log-window-size= --no-checkout --quiet --repack-flags --use-log-author --localtime - --ignore-paths= $remote_opts + --ignore-paths= --include-paths= $remote_opts " local init_opts=" --template= --shared= --trunk= --tags= diff --git a/git-svn.perl b/git-svn.perl index bd5266c..6d713e1 100755 --- a/git-svn.perl +++ b/git-svn.perl @@ -127,6 +127,7 @@ my %remote_opts = ( 'username=s' => \$Git::SVN::Prompt::_username, 'config-dir=s' => \$Git::SVN::Ra::config_dir, 'no-auth-cache' => \$Git::SVN::Prompt::_no_auth_cache, 'ignore-paths=s' => \$Git::SVN::Fetcher::_ignore_regex, +'include-paths=s' => \$Git::SVN::Fetcher::_include_regex, 'ignore-refs=s' => \$Git::SVN::Ra::_ignore_refs_regex ); my %fc_opts = ( 'follow-parent|follow!' => \$Git::SVN::_follow_parent, 'authors-file|A=s' => \$_authors, @@ -477,6 +478,9 @@ sub do_git_init_db { my $ignore_paths_regex = \$Git::SVN::Fetcher::_ignore_regex; command_noisy('config', "$pfx.ignore-paths", $$ignore_paths_regex) if defined $$ignore_paths_regex; + my $include_paths_regex = \$Git::SVN::Fetcher::_include_regex; + command_noisy('config', "$pfx.include-paths", $$include_paths_regex) + if defined $$include_paths_regex; my $ignore_refs_regex = \$Git::SVN::Ra::_ignore_refs_regex; command_noisy('config', "$pfx.ignore-refs", $$ignore_refs_regex) if defined $$ignore_refs_regex; diff --git a/perl/Git/SVN/Fetcher.pm b/perl/Git/SVN/Fetcher.pm index 046a7a2..27824e7 100644 --- a/perl/Git/SVN/Fetcher.pm +++ b/perl/Git/SVN/Fetcher.pm @@ -1,5 +1,5 @@ package Git::SVN::Fetcher; -use vars qw/@ISA $_ignore_regex $_preserve_empty_dirs $_placeholder_filename +use vars qw/@ISA $_ignore_regex $_include_regex $_preserve_empty_dirs $_placeholder_filename @deleted_gpath %added_placeholder $repo_id/; use strict; use warnings; @@ -33,6 +33,10 @@ su