Re: [PATCH v3] git-svn: allow empty email-address using authors-prog and authors-file

2018-04-11 Thread Junio C Hamano
Eric Wong  writes:

> Andreas Heiduk  wrote:
>> Am 05.04.2018 um 09:51 schrieb Eric Wong:
>> > Can you confirm it's OK for you?  Thanks.
>> 
>> Looks good, works for me.
>> 
>> Do you squash this patch with with my commit or do you need a reroll?
>
> Nope, no need to reroll.  Pushed to my repo for Junio.  Thanks all.
>
> The following changes since commit 468165c1d8a442994a825f3684528361727cd8c0:
>
>   Git 2.17 (2018-04-02 10:13:35 -0700)
>
> are available in the Git repository at:
>
>   git://bogomips.org/git-svn.git svn/authors-prog-2
>
> for you to fetch changes up to cb427e9eb0243fe7a1a22ea3bd0a46b7410c0bf3:
>
>   git-svn: allow empty email-address using authors-prog and authors-file 
> (2018-04-05 19:22:06 +)

Sorry; this message fell under my radar and I had to privately get
reminded of it.  Pulled.

Thanks, both.


Re: [PATCH v3] git-svn: allow empty email-address using authors-prog and authors-file

2018-04-05 Thread Eric Wong
Andreas Heiduk  wrote:
> Am 05.04.2018 um 09:51 schrieb Eric Wong:
> > Can you confirm it's OK for you?  Thanks.
> 
> Looks good, works for me.
> 
> Do you squash this patch with with my commit or do you need a reroll?

Nope, no need to reroll.  Pushed to my repo for Junio.  Thanks all.

The following changes since commit 468165c1d8a442994a825f3684528361727cd8c0:

  Git 2.17 (2018-04-02 10:13:35 -0700)

are available in the Git repository at:

  git://bogomips.org/git-svn.git svn/authors-prog-2

for you to fetch changes up to cb427e9eb0243fe7a1a22ea3bd0a46b7410c0bf3:

  git-svn: allow empty email-address using authors-prog and authors-file 
(2018-04-05 19:22:06 +)


Andreas Heiduk (2):
  git-svn: search --authors-prog in PATH too
  git-svn: allow empty email-address using authors-prog and authors-file

 Documentation/git-svn.txt   | 13 ++---
 git-svn.perl|  3 ++-
 perl/Git/SVN.pm | 13 ++---
 t/t9130-git-svn-authors-file.sh | 14 ++
 t/t9138-git-svn-authors-prog.sh | 26 +-
 5 files changed, 57 insertions(+), 12 deletions(-)


Re: [PATCH v3] git-svn: allow empty email-address using authors-prog and authors-file

2018-04-05 Thread Andreas Heiduk
Am 05.04.2018 um 09:51 schrieb Eric Wong:
> Thanks for the update.  The patch itself looks good, but I
> noticed one --show-item isn't supported on SVN 1.8.10 for me.

--show-item is indeed a 1.9.0 thing:

https://subversion.apache.org/docs/release-notes/1.9.html#svn-info-item

> I've tested the following on both SVN 1.8.10 and 1.9.5:
> 
> --- a/t/t9138-git-svn-authors-prog.sh
> +++ b/t/t9138-git-svn-authors-prog.sh
> @@ -83,7 +83,8 @@ test_expect_success 'authors-prog imported user without 
> email' '
>  test_expect_success 'imported without authors-prog and authors-file' '
>   svn mkdir -m hh --username hh "$svnrepo"/hh &&
>   (
> - uuid=$(svn info --show-item=repos-uuid "$svnrepo") &&
> + uuid=$(svn info "$svnrepo" |
> + sed -n "s/^Repository UUID: //p") &&
>   cd x &&
>   git svn fetch &&
>   git rev-list -1 --pretty=raw refs/remotes/git-svn | \
> 
> Can you confirm it's OK for you?  Thanks.

Looks good, works for me.

Do you squash this patch with with my commit or do you need a reroll?


Re: [PATCH v3] git-svn: allow empty email-address using authors-prog and authors-file

2018-04-05 Thread Eric Wong
Thanks for the update.  The patch itself looks good, but I
noticed one --show-item isn't supported on SVN 1.8.10 for me.

I've tested the following on both SVN 1.8.10 and 1.9.5:

--- a/t/t9138-git-svn-authors-prog.sh
+++ b/t/t9138-git-svn-authors-prog.sh
@@ -83,7 +83,8 @@ test_expect_success 'authors-prog imported user without 
email' '
 test_expect_success 'imported without authors-prog and authors-file' '
svn mkdir -m hh --username hh "$svnrepo"/hh &&
(
-   uuid=$(svn info --show-item=repos-uuid "$svnrepo") &&
+   uuid=$(svn info "$svnrepo" |
+   sed -n "s/^Repository UUID: //p") &&
cd x &&
git svn fetch &&
git rev-list -1 --pretty=raw refs/remotes/git-svn | \

Can you confirm it's OK for you?  Thanks.


[PATCH v3] git-svn: allow empty email-address using authors-prog and authors-file

2018-03-24 Thread Andreas Heiduk
The email address in --authors-file and --authors-prog can be empty but
git-svn translated it into a fictional email address in the form

jondoe 

containing the SVN repository UUID. Now git-svn behaves like git-commit:
If the email is *explicitly* set to the empty string using '<>', the
commit does not contain an email address, only the name:

jondoe <>

Allowing to remove the email address *intentionally* prevents automatic
systems from sending emails to those fictional addresses and avoids
cluttering the log output with unnecessary stuff.

Signed-off-by: Andreas Heiduk 
---
 Documentation/git-svn.txt   |  8 +---
 perl/Git/SVN.pm | 13 ++---
 t/t9130-git-svn-authors-file.sh | 14 ++
 t/t9138-git-svn-authors-prog.sh | 25 -
 4 files changed, 49 insertions(+), 11 deletions(-)

diff --git a/Documentation/git-svn.txt b/Documentation/git-svn.txt
index b858374649..d59379ee23 100644
--- a/Documentation/git-svn.txt
+++ b/Documentation/git-svn.txt
@@ -635,7 +635,8 @@ config key: svn.findcopiesharder
 
 -A::
 --authors-file=::
-   Syntax is compatible with the file used by 'git cvsimport':
+   Syntax is compatible with the file used by 'git cvsimport' but
+   an empty email address can be supplied with '<>':
 +
 
loginname = Joe User 
@@ -654,8 +655,9 @@ config key: svn.authorsfile
If this option is specified, for each SVN committer name that
does not exist in the authors file, the given file is executed
with the committer name as the first argument.  The program is
-   expected to return a single line of the form "Name ",
-   which will be treated as if included in the authors file.
+   expected to return a single line of the form "Name " or
+   "Name <>", which will be treated as if included in the authors
+   file.
 +
 Due to historical reasons a relative 'filename' is first searched
 relative to the current directory for 'init' and 'clone' and relative
diff --git a/perl/Git/SVN.pm b/perl/Git/SVN.pm
index bc4eed3d75..945ca4db2b 100644
--- a/perl/Git/SVN.pm
+++ b/perl/Git/SVN.pm
@@ -1482,7 +1482,6 @@ sub call_authors_prog {
}
if ($author =~ /^\s*(.+?)\s*<(.*)>\s*$/) {
my ($name, $email) = ($1, $2);
-   $email = undef if length $2 == 0;
return [$name, $email];
} else {
die "Author: $orig_author: $::_authors_prog returned "
@@ -2020,8 +2019,8 @@ sub make_log_entry {
remove_username($full_url);
$log_entry{metadata} = "$full_url\@$r $uuid";
$log_entry{svm_revision} = $r;
-   $email ||= "$author\@$uuid";
-   $commit_email ||= "$author\@$uuid";
+   $email = "$author\@$uuid" unless defined $email;
+   $commit_email = "$author\@$uuid" unless defined $commit_email;
} elsif ($self->use_svnsync_props) {
my $full_url = canonicalize_url(
add_path_to_url( $self->svnsync->{url}, $self->path )
@@ -2029,15 +2028,15 @@ sub make_log_entry {
remove_username($full_url);
my $uuid = $self->svnsync->{uuid};
$log_entry{metadata} = "$full_url\@$rev $uuid";
-   $email ||= "$author\@$uuid";
-   $commit_email ||= "$author\@$uuid";
+   $email = "$author\@$uuid" unless defined $email;
+   $commit_email = "$author\@$uuid" unless defined $commit_email;
} else {
my $url = $self->metadata_url;
remove_username($url);
my $uuid = $self->rewrite_uuid || $self->ra->get_uuid;
$log_entry{metadata} = "$url\@$rev " . $uuid;
-   $email ||= "$author\@" . $uuid;
-   $commit_email ||= "$author\@" . $uuid;
+   $email = "$author\@$uuid" unless defined $email;
+   $commit_email = "$author\@$uuid" unless defined $commit_email;
}
$log_entry{name} = $name;
$log_entry{email} = $email;
diff --git a/t/t9130-git-svn-authors-file.sh b/t/t9130-git-svn-authors-file.sh
index 41264818cc..6af6daf461 100755
--- a/t/t9130-git-svn-authors-file.sh
+++ b/t/t9130-git-svn-authors-file.sh
@@ -108,6 +108,20 @@ test_expect_success !MINGW 'fresh clone with 
svn.authors-file in config' '
)
 '
 
+cat >> svn-authors <
+EOF
+
+test_expect_success 'authors-file imported user without email' '
+   svn_cmd mkdir -m aa/branches/ff --username ff "$svnrepo/aa/branches/ff" 
&&
+   (
+   cd aa-work &&
+   git svn fetch --authors-file=../svn-authors &&
+   git rev-list -1 --pretty=raw refs/remotes/origin/ff | \
+ grep "^author FFF FFF <> "
+   )
+   '
+
 test_debug