Re: [PATCH] git-svn: added an --include-path flag

2013-05-08 Thread Eric Wong
Paul Walmsley pjwh...@gmail.com 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 pjwh...@gmail.com

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

2013-05-03 Thread Paul Walmsley
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 pjwh...@gmail.com
---
 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=regex;;
+   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=regex;;
+   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=n;;
 Fetch n 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 = 

Re: [PATCH] git-svn: added an --include-path flag (resent fixing mail format)

2013-05-01 Thread Eric Wong
Paul Walmsley pjwh...@gmail.com 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


Re: Fwd: [PATCH] git-svn: added an --include-path flag

2013-04-24 Thread Eric Wong
Paul Walmsley pjwh...@gmail.com 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 (resent fixing mail format)

2013-04-24 Thread Paul Walmsley
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=regex;;
+   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=regex;;
+   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=n;;
 Fetch n 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;
+

[PATCH] git-svn: added an --include-path flag

2013-04-17 Thread Paul Walmsley
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 pjwh...@gmail.com
---
 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=regex;;
+   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=regex;;
+   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=n;;
 Fetch n 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