---
 Documentation/git-svn.txt | 12 ++++++------
 git-svn.perl              | 46 ++++++++++++++++++++++++++++++++--------------
 2 files changed, 38 insertions(+), 20 deletions(-)

diff --git a/Documentation/git-svn.txt b/Documentation/git-svn.txt
index 30c5ee2..0c1cd46 100644
--- a/Documentation/git-svn.txt
+++ b/Documentation/git-svn.txt
@@ -405,14 +405,14 @@ Any other arguments are passed directly to 'git log'
        independently of 'git svn' functions.
 
 'create-ignore'::
-       Recursively finds the svn:ignore property on directories and
-       creates matching .gitignore files. The resulting files are staged to
-       be committed, but are not committed. Use -r/--revision to refer to a
-       specific revision.
+       Recursively finds svn:ignore and svn:global-ignores properties on
+       directories and creates matching .gitignore files. The resulting
+       files are staged to be committed, but are not committed.
+       Use -r/--revision to refer to a specific revision.
 
 'show-ignore'::
-       Recursively finds and lists the svn:ignore property on
-       directories.  The output is suitable for appending to
+       Recursively finds and lists svn:ignore and svn:global-ignores
+       properties on directories. The output is suitable for appending to
        the $GIT_DIR/info/exclude file.
 
 'mkdirs'::
diff --git a/git-svn.perl b/git-svn.perl
index 7349ffe..a2565e1 100755
--- a/git-svn.perl
+++ b/git-svn.perl
@@ -1261,6 +1261,15 @@ sub cmd_rebase {
        }
 }
 
+sub get_svn_ignore {
+       my ($props, $prop) = @_;
+       my $s = $props->{$prop} or return;
+       $s =~ s/[\r\n]+/\n/g;
+       $s =~ s/^\n+//;
+       chomp $s;
+       return $s;
+}
+
 sub cmd_show_ignore {
        my ($url, $rev, $uuid, $gs) = working_head_info('HEAD');
        $gs ||= Git::SVN->new;
@@ -1268,12 +1277,17 @@ sub cmd_show_ignore {
        $gs->prop_walk($gs->path, $r, sub {
                my ($gs, $path, $props) = @_;
                print STDOUT "\n# $path\n";
-               my $s = $props->{'svn:ignore'} or return;
-               $s =~ s/[\r\n]+/\n/g;
-               $s =~ s/^\n+//;
-               chomp $s;
-               $s =~ s#^#$path#gm;
-               print STDOUT "$s\n";
+               my $s = &get_svn_ignore($props, 'svn:ignore');
+               my $s_global = &get_svn_ignore($props, 'svn:global-ignores');
+               $s or $s_global or return;
+               if ($s) {
+                       $s =~ s#^#$path#gm;
+                       print STDOUT "$s\n";
+               }
+               if ($s_global) {
+                       $s_global =~ s#^#$path**/#gm;
+                       print STDOUT "$s_global\n";
+               }
        });
 }
 
@@ -1304,16 +1318,20 @@ sub cmd_create_ignore {
                # which git won't track
                mkpath([$path]) unless -d $path;
                my $ignore = $path . '.gitignore';
-               my $s = $props->{'svn:ignore'} or return;
+               my $s = &get_svn_ignore($props, 'svn:ignore');
+               my $s_global = &get_svn_ignore($props, 'svn:global-ignores');
+               $s or $s_global or return;
                open(GITIGNORE, '>', $ignore)
                  or fatal("Failed to open `$ignore' for writing: $!");
-               $s =~ s/[\r\n]+/\n/g;
-               $s =~ s/^\n+//;
-               chomp $s;
-               # Prefix all patterns so that the ignore doesn't apply
-               # to sub-directories.
-               $s =~ s#^#/#gm;
-               print GITIGNORE "$s\n";
+               if ($s) {
+                       # Prefix all patterns so that the ignore doesn't apply
+                       # to sub-directories.
+                       $s =~ s#^#/#gm;
+                       print GITIGNORE "$s\n";
+               }
+               if ($s_global) {
+                       print GITIGNORE "$s_global\n";
+               }
                close(GITIGNORE)
                  or fatal("Failed to close `$ignore': $!");
                command_noisy('add', '-f', $ignore);
-- 
1.8.3.msysgit.0

--
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

Reply via email to