Re: [PATCH] git-svn: Support svn:global-ignores property

2013-12-16 Thread Eric Wong
Aleksey Vasenev  wrote:
> ---

What Thomas said about commit messages.

Note: I hardly use git-svn or SVN anymore and don't pay attention
to SVN changes.

Some style nitpicks:

> @@ -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');

&sub(...) convention isn't consistent with the rest of our Perl code.
Do this instead:

my $s = get_svn_ignore($props, 'svn:ignore');
my $s_global = get_svn_ignore($props, 'svn:global-ignores');

> + $s or $s_global or return;

Precedence should be more explicit:
($s || $s_global) or return;

Likewise for cmd_show_ignore.  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


Re: [PATCH] git-svn: Support svn:global-ignores property

2013-11-24 Thread Thomas Rast
Hi Aleksey

Thanks for your patch.  I added Eric Wong to the Cc list; all git-svn
patches should go to him.

Aleksey Vasenev  writes:

> ---

Can you write a commit message?  If you need a guideline for what to
write there, consider this snippet from Documentation/SubmittingPatches:

  The body should provide a meaningful commit message, which:

  . explains the problem the change tries to solve, iow, what is wrong
with the current code without the change.

  . justifies the way the change solves the problem, iow, why the
result with the change is better.

  . alternate solutions considered but discarded, if any.

In particular, I'm curious about how global-ignores are different from
ordinary ignores.  After reading

  http://svnbook.red-bean.com/en/1.7/svn.advanced.props.special.ignore.html

I don't understand why the above document speaks of a "config area" that
holds the global-ignores configuration, while your patch seems to treat
them as "just another property" set in the same way as existing
svn:ignore.  How does this work?


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

Can you add a test or two?

-- 
Thomas Rast
t...@thomasrast.ch
--
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: Support svn:global-ignores property

2013-11-21 Thread Aleksey Vasenev
---
 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


[PATCH] git-svn: Support svn:global-ignores property

2013-11-21 Thread Aleksey Vasenev

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