summaryrefslogtreecommitdiff
path: root/0018-Config-file-option-to-skip-the-hook-script-creation.patch
diff options
context:
space:
mode:
Diffstat (limited to '0018-Config-file-option-to-skip-the-hook-script-creation.patch')
-rw-r--r--0018-Config-file-option-to-skip-the-hook-script-creation.patch126
1 files changed, 126 insertions, 0 deletions
diff --git a/0018-Config-file-option-to-skip-the-hook-script-creation.patch b/0018-Config-file-option-to-skip-the-hook-script-creation.patch
new file mode 100644
index 0000000..fa9aa01
--- /dev/null
+++ b/0018-Config-file-option-to-skip-the-hook-script-creation.patch
@@ -0,0 +1,126 @@
+From b48eb502d330ec7a543805d7f185ea270df75b90 Mon Sep 17 00:00:00 2001
+From: Ondrej Nosek <onosek@redhat.com>
+Date: Wed, 12 Apr 2023 00:42:04 +0200
+Subject: [PATCH 5/6] Config file option to skip the hook script creation
+
+A new option named "skip_hooks" can be added to the config file
+(into the main section). It accepts boolean values and when
+the option is present and set, it prevents creating the pre-push
+hook script during cloning a dist-git repository.
+
+Fixes: https://pagure.io/fedpkg/issue/515
+JIRA: RHELCMP-11491
+
+Signed-off-by: Ondrej Nosek <onosek@redhat.com>
+---
+ pyrpkg/__init__.py | 14 ++++++++++----
+ pyrpkg/cli.py | 13 +++++++++++--
+ 2 files changed, 21 insertions(+), 6 deletions(-)
+
+diff --git a/pyrpkg/__init__.py b/pyrpkg/__init__.py
+index 187796e..7fddff7 100644
+--- a/pyrpkg/__init__.py
++++ b/pyrpkg/__init__.py
+@@ -1571,7 +1571,7 @@ class Commands(object):
+
+ def clone(self, repo, path=None, branch=None, bare_dir=None,
+ anon=False, target=None, depth=None, extra_args=None,
+- config_path=None):
++ config_path=None, skip_hooks=None):
+ """Clone a repo, optionally check out a specific branch.
+
+ :param str repo: the name of the repository to clone.
+@@ -1589,6 +1589,7 @@ class Commands(object):
+ :param list extra_args: additional arguments that are passed to
+ the clone command.
+ :param str config_path: path to the global config file
++ :param bool skip_hooks: skip creation pre-push hook script
+ """
+
+ if not path:
+@@ -1644,7 +1645,8 @@ class Commands(object):
+
+ if not bare_dir:
+ self._add_git_excludes(os.path.join(path, git_dir))
+- self._add_git_pre_push_hook(os.path.join(path, git_dir), config_path)
++ if not skip_hooks:
++ self._add_git_pre_push_hook(os.path.join(path, git_dir), config_path)
+
+ return
+
+@@ -1660,7 +1662,7 @@ class Commands(object):
+ return repo
+
+ def clone_with_dirs(self, repo, anon=False, target=None, depth=None,
+- extra_args=None, config_path=None):
++ extra_args=None, config_path=None, skip_hooks=None):
+ """Clone a repo old style with subdirs for each branch.
+
+ :param str repo: name of the repository to clone.
+@@ -1673,6 +1675,7 @@ class Commands(object):
+ :param list extra_args: additional arguments that are passed to
+ the clone command.
+ :param str config_path: path to the global config file
++ :param bool skip_hooks: skip creation pre-push hook script
+ """
+
+ self._push_url = None
+@@ -1731,7 +1734,8 @@ class Commands(object):
+
+ # Add excludes
+ self._add_git_excludes(branch_path)
+- self._add_git_pre_push_hook(branch_path, config_path)
++ if not skip_hooks:
++ self._add_git_pre_push_hook(branch_path, config_path)
+ except (git.GitCommandError, OSError) as e:
+ raise rpkgError('Could not locally clone %s from %s: %s'
+ % (branch, repo_path, e))
+@@ -1820,6 +1824,8 @@ class Commands(object):
+ # This file was generated by {0} when cloning the repository.
+ # You can edit it to your liking or delete completely. It will not
+ # be recreated.
++ # Creating this file can be also prevented by adding an option
++ # "skip_hooks = True" into the {0}'s config file; [{0}] section.
+
+ _remote="$1"
+ _url="$2"
+diff --git a/pyrpkg/cli.py b/pyrpkg/cli.py
+index 3d8ce33..a1f3f44 100644
+--- a/pyrpkg/cli.py
++++ b/pyrpkg/cli.py
+@@ -2177,13 +2177,21 @@ class cliClient(object):
+ self.log.warning("Repo name should't contain '.git' suffix. "
+ "Correcting the repo name: '%s'" % repo)
+
++ skip_hooks = None
++ if self.config.has_option(self.name, "skip_hooks"):
++ try:
++ skip_hooks = self.config.getboolean(self.name, "skip_hooks")
++ except ValueError:
++ self.log.error("Error: config file option 'skip_hooks'")
++ raise
+ if self.args.branches:
+ self.cmd.clone_with_dirs(self.args.repo[0],
+ anon=self.args.anonymous,
+ target=self.args.clone_target,
+ depth=self.args.depth,
+ extra_args=self.extra_args,
+- config_path=self.args.config)
++ config_path=self.args.config,
++ skip_hooks=skip_hooks)
+ else:
+ self.cmd.clone(self.args.repo[0],
+ branch=self.args.branch,
+@@ -2191,7 +2199,8 @@ class cliClient(object):
+ target=self.args.clone_target,
+ depth=self.args.depth,
+ extra_args=self.extra_args,
+- config_path=self.args.config)
++ config_path=self.args.config,
++ skip_hooks=skip_hooks)
+
+ def commit(self):
+ if self.args.with_changelog and not self.args.message:
+--
+2.39.2
+