All of lore.kernel.org
 help / color / mirror / Atom feed
From: Eric Wong <e@80x24.org>
To: Lukas Pupka-Lipinski <lukas.pupkalipinski@lpl-mind.de>
Cc: git@vger.kernel.org
Subject: Re: git-svn: Skip commit if all items of a commit are ignored by ignore configuration
Date: Sun, 29 Mar 2020 23:24:14 +0000	[thread overview]
Message-ID: <20200329232414.GA27925@dcvr> (raw)
In-Reply-To: <1467670a-a9eb-f230-4ec0-bd6d54411a69@lpl-mind.de>

Lukas Pupka-Lipinski <lukas.pupkalipinski@lpl-mind.de> wrote:
> 
> I used the ignore-paths option to ignore a lot of stuff I don’t need. The
> ignore pattern works well, but it could and up in empty commits. So just the
> message without any modifications / changes. The patch below skip a commit
> if all changes are ignored by the ignore-paths option.

Hi Lukas, this seems like an incompatible change, but it also
matches the intent of the user if they use ignore-paths (which
AFAIK is a rarely-used feature).

I guess it's OK to make it the default behavior, but maybe
others have objections...

> Signed-off-by: Lukas Pupka-Lipinski <lukas.pupkalipinski@lpl-mind.de>

Thanks :>  More comments inline...

> diff --git a/perl/Git/SVN/Ra.pm b/perl/Git/SVN/Ra.pm
> index 56ad9870bc..a5a6c0b774 100644
> --- a/perl/Git/SVN/Ra.pm
> +++ b/perl/Git/SVN/Ra.pm
> @@ -457,13 +457,22 @@ sub gs_fetch_loop_common {
>              $find_trailing_edge = 0;
>          }
>          $SVN::Error::handler = $err_handler;
> -
> +

This patch (and your other) are both white-space damaged,
but there doesn't need to be a whitespace change, there.

I'm not sure which mail client you use, but
https://git-send-email.io/ documents git-send-email
as being shipped with Git-for-Windows.

Personally, I'm fine with attachments if they can go through
without whitespace damage (not speaking for the rest of
git@vger).  You can test by emailing yourself and trying
"git am" on it.

>          my %exists = map { $_->path => $_ } @$gsv;
>          foreach my $r (sort {$a <=> $b} keys %revs) {
>              my ($paths, $logged) = @{delete $revs{$r}};
> -

Again, no extraneous whitespace changes, please.

>              foreach my $gs ($self->match_globs(\%exists, $paths,
>                                                 $globs, $r)) {
> +
> +
> +                my $fetcher=Git::SVN::Fetcher->new($gs);

Initializing Git::SVN::Fetcher here and closing it is an
expensive operation since it calls git-config(1) many times.
This is especially bad for most users who do not use
--ignore-paths at all.

I know git-svn isn't fast, but I've been hoping to find spare
time to make it use fast-import and speed it up, eventually.

Instead, I think it's possible to bail out of Git::SVN::do_fetch
and still skip the commit without extra network traffic.  I
suggest you try that route, instead.

> +
> +                my $skip=$self->is_empty_commit($paths,$fetcher);
> +                if ($skip){
> +                    print "skip commit $r\n";
> +                    next;
> +                }
> +                $fetcher->close_edit();
>                  if ($gs->rev_map_max >= $r) {
>                      next;
>                  }

Style: put whitespace between operators for readability
and consistency with the rest of our code:

	my $skip = $self->is_empty_commit($paths, $fetcher);
        if ($skip) {
		print "skip commit $r\n";
		...

We also use hard tabs for indentation.

> @@ -506,6 +517,21 @@ sub gs_fetch_loop_common {
> Git::SVN::gc();
>  }
> 
> +sub is_empty_commit{
> +    my ($self, $paths,$fetcher) = @_;
> +    my $path="";
> +    foreach $path (keys %$paths){
> +        unless (defined $path && -d $path ){

The `-d' check is invalid.  "git-svn fetch" never touches the
working tree.

> +            my $ignored=$fetcher->is_path_ignored($path);
> +            if (!$ignored){
> +                return 0;
> +            }
> +        }
> +    }
> +    return 1;
> +}
> +
> +
>  sub get_dir_globbed {
>      my ($self, $left, $depth, $r) = @_;

Same style comments as before, and a single empty line
in-between subs is enough.  Thanks.

      reply	other threads:[~2020-03-29 23:24 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-03-27  8:11 git-svn: Skip commit if all items of a commit are ignored by ignore configuration Lukas Pupka-Lipinski
2020-03-27  8:13 ` Lukas Pupka-Lipinski
2020-03-29 23:24   ` Eric Wong [this message]

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=20200329232414.GA27925@dcvr \
    --to=e@80x24.org \
    --cc=git@vger.kernel.org \
    --cc=lukas.pupkalipinski@lpl-mind.de \
    /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.