All of lore.kernel.org
 help / color / mirror / Atom feed
From: Aleksey Vasenev <margtu-fivt@ya.ru>
To: git@vger.kernel.org
Cc: Benoit Sigoure <tsuna@lrde.epita.fr>
Subject: [PATCH] git-svn: Support svn:global-ignores property
Date: Thu, 21 Nov 2013 14:41:24 +0400	[thread overview]
Message-ID: <528DE354.1050804@ya.ru> (raw)

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

             reply	other threads:[~2013-11-21 10:48 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-11-21 10:41 Aleksey Vasenev [this message]
2013-11-21 12:28 ` [PATCH] git-svn: Support svn:global-ignores property Aleksey Vasenev
2013-11-24  8:42   ` Thomas Rast
2013-12-16 22:23   ` Eric Wong

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=528DE354.1050804@ya.ru \
    --to=margtu-fivt@ya.ru \
    --cc=git@vger.kernel.org \
    --cc=tsuna@lrde.epita.fr \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.