From: "Lukas via GitGitGadget" <gitgitgadget@gmail.com> To: git@vger.kernel.org Cc: Lukas <Lukas@vger.kernel.org> Subject: [PATCH 2/2] sv: added: Skip commit if all files are ignored Date: Fri, 11 Sep 2020 08:00:17 +0000 Message-ID: <282e524547a4998c131a8162b72a33f6129e637b.1599811217.git.gitgitgadget@gmail.com> (raw) In-Reply-To: <pull.834.git.git.1599811217.gitgitgadget@gmail.com> From: Lukas <Lukas> 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. In order to use this feature I includes the option to read configuration for ignore-path, include-paths in several lines. So that the user is not limited by the max. char. per line definition. Signed-off-by: Lukas Pupka-Lipinski <lukas.pupkalipinski@lpl-mind.de> --- perl/Git/SVN.pm | 21 +++++++++++++++++++++ perl/Git/SVN/Fetcher.pm | 30 ++++++++++++++++++++++++++++++ perl/Git/SVN/Ra.pm | 2 ++ 3 files changed, 53 insertions(+) diff --git a/perl/Git/SVN.pm b/perl/Git/SVN.pm index 4b28b87784..fa87687306 100644 --- a/perl/Git/SVN.pm +++ b/perl/Git/SVN.pm @@ -1188,6 +1188,22 @@ sub find_parent_branch { return undef; } +############################################################ + +=item do_fetch() + +Fetch an Commit and returns a log entry + +Input: $path - array of strings (Paths) in a commit + $rev - Revision number + +Output: $log_entry if successfull + null if skipped + (die) on fetch error + +=cut + +############################################################ sub do_fetch { my ($self, $paths, $rev) = @_; my $ed; @@ -1212,6 +1228,11 @@ sub do_fetch { } $ed = Git::SVN::Fetcher->new($self); } + my $skip = $ed->is_empty_commit($paths); + if ($skip){ + print "skip commit $rev\n"; + return; + } unless ($self->ra->gs_do_update($last_rev, $rev, $self, $ed)) { die "SVN connection failed somewhere...\n"; } diff --git a/perl/Git/SVN/Fetcher.pm b/perl/Git/SVN/Fetcher.pm index 96b14538b0..c31343b6e6 100644 --- a/perl/Git/SVN/Fetcher.pm +++ b/perl/Git/SVN/Fetcher.pm @@ -139,6 +139,36 @@ sub is_path_ignored { return 0; } +############################################################ + +=item is_empty_commit() + +Return 1 if all given $paths are ignored, so that this commit end up in an empty commit + +Input: $path - array of strings (Paths) in a commit + +Output: { 1 if true, 0 if false } + +=cut + +############################################################ +sub is_empty_commit { + my ( $self, $paths ) = @_; + my $path; + my $ignored; + unless ( defined( $self->{include_regex} ) ) { + return 0; + } + + foreach $path ( keys %$paths ) { + $ignored = $self->is_path_ignored($path); + if ( !$ignored ) { + return 0; + } + } + return 1; +} + sub set_path_strip { my ($self, $path) = @_; $self->{path_strip} = qr/^\Q$path\E(\/|$)/ if length $path; diff --git a/perl/Git/SVN/Ra.pm b/perl/Git/SVN/Ra.pm index 56ad9870bc..63be69dc12 100644 --- a/perl/Git/SVN/Ra.pm +++ b/perl/Git/SVN/Ra.pm @@ -475,6 +475,8 @@ sub gs_fetch_loop_common { my $log_entry = $gs->do_fetch($paths, $r); if ($log_entry) { $gs->do_git_commit($log_entry); + }else{ + next; } $Git::SVN::INDEX_FILES{$gs->{index}} = 1; } -- gitgitgadget
prev parent reply other threads:[~2020-09-11 8:00 UTC|newest] Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-09-11 8:00 [PATCH 0/2] GitSVN: Multi line support of ignore-path, include-paths and skiping of empty commits Lukas Pupka-Lipinski via GitGitGadget 2020-09-11 8:00 ` [PATCH 1/2] svn: added: Multi line support for ignore-paths Lukas via GitGitGadget 2020-09-11 8:00 ` Lukas via GitGitGadget [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 List information: http://vger.kernel.org/majordomo-info.html * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=282e524547a4998c131a8162b72a33f6129e637b.1599811217.git.gitgitgadget@gmail.com \ --to=gitgitgadget@gmail.com \ --cc=Lukas@vger.kernel.org \ --cc=git@vger.kernel.org \ /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
git@vger.kernel.org list mirror (unofficial, one of many) This inbox may be cloned and mirrored by anyone: git clone --mirror https://public-inbox.org/git git clone --mirror http://ou63pmih66umazou.onion/git git clone --mirror http://czquwvybam4bgbro.onion/git git clone --mirror http://hjrcffqmbrq6wope.onion/git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V1 git git/ https://public-inbox.org/git \ git@vger.kernel.org public-inbox-index git Example config snippet for mirrors. Newsgroups are available over NNTP: nntp://news.public-inbox.org/inbox.comp.version-control.git nntp://ou63pmih66umazou.onion/inbox.comp.version-control.git nntp://czquwvybam4bgbro.onion/inbox.comp.version-control.git nntp://hjrcffqmbrq6wope.onion/inbox.comp.version-control.git nntp://news.gmane.io/gmane.comp.version-control.git note: .onion URLs require Tor: https://www.torproject.org/ code repositories for the project(s) associated with this inbox: https://80x24.org/mirrors/git.git AGPL code for this site: git clone https://public-inbox.org/public-inbox.git