summaryrefslogtreecommitdiff
path: root/0012-pre-push-hook-script-contains-a-user-s-config.patch
diff options
context:
space:
mode:
authorCoprDistGit <infra@openeuler.org>2023-05-29 12:17:42 +0000
committerCoprDistGit <infra@openeuler.org>2023-05-29 12:17:42 +0000
commit32b09cdd8fcfe7c5d49db5dc9964be987ce5a0a9 (patch)
treec0e3b2d4d05680f57d6521d85a7396b7580acc23 /0012-pre-push-hook-script-contains-a-user-s-config.patch
parent42c179873afdc4ea9634b0e0fbaf391298880998 (diff)
automatic import of rpkg
Diffstat (limited to '0012-pre-push-hook-script-contains-a-user-s-config.patch')
-rw-r--r--0012-pre-push-hook-script-contains-a-user-s-config.patch197
1 files changed, 0 insertions, 197 deletions
diff --git a/0012-pre-push-hook-script-contains-a-user-s-config.patch b/0012-pre-push-hook-script-contains-a-user-s-config.patch
deleted file mode 100644
index ff2676d..0000000
--- a/0012-pre-push-hook-script-contains-a-user-s-config.patch
+++ /dev/null
@@ -1,197 +0,0 @@
-From 1f03eb9102f765c36cc201a499d815732e67dd39 Mon Sep 17 00:00:00 2001
-From: Ondrej Nosek <onosek@redhat.com>
-Date: Mon, 27 Mar 2023 23:34:12 +0200
-Subject: [PATCH 12/12] pre-push hook script contains a user's config
-
-When the `clone` command is called with an argument
--C|--config <config_file>
-this argument is placed to the generated pre-push script.
-
-Fixes: #667
-JIRA: RHELCMP-11394
-
-Signed-off-by: Ondrej Nosek <onosek@redhat.com>
----
- pyrpkg/__init__.py | 23 ++++++++++++-------
- pyrpkg/cli.py | 6 +++--
- tests/commands/test_clone.py | 44 ++++++++++++++++++++++++++++++++++++
- 3 files changed, 63 insertions(+), 10 deletions(-)
-
-diff --git a/pyrpkg/__init__.py b/pyrpkg/__init__.py
-index 15203b7..9996402 100644
---- a/pyrpkg/__init__.py
-+++ b/pyrpkg/__init__.py
-@@ -1566,7 +1566,8 @@ class Commands(object):
- return
-
- def clone(self, repo, path=None, branch=None, bare_dir=None,
-- anon=False, target=None, depth=None, extra_args=None):
-+ anon=False, target=None, depth=None, extra_args=None,
-+ config_path=None):
- """Clone a repo, optionally check out a specific branch.
-
- :param str repo: the name of the repository to clone.
-@@ -1583,6 +1584,7 @@ class Commands(object):
- to the specified number of commits.
- :param list extra_args: additional arguments that are passed to
- the clone command.
-+ :param str config_path: path to the global config file
- """
-
- if not path:
-@@ -1638,7 +1640,7 @@ 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))
-+ self._add_git_pre_push_hook(os.path.join(path, git_dir), config_path)
-
- return
-
-@@ -1654,7 +1656,7 @@ class Commands(object):
- return repo
-
- def clone_with_dirs(self, repo, anon=False, target=None, depth=None,
-- extra_args=None):
-+ extra_args=None, config_path=None):
- """Clone a repo old style with subdirs for each branch.
-
- :param str repo: name of the repository to clone.
-@@ -1666,6 +1668,7 @@ class Commands(object):
- to the specified number of commits.
- :param list extra_args: additional arguments that are passed to
- the clone command.
-+ :param str config_path: path to the global config file
- """
-
- self._push_url = None
-@@ -1724,7 +1727,7 @@ class Commands(object):
-
- # Add excludes
- self._add_git_excludes(branch_path)
-- self._add_git_pre_push_hook(branch_path)
-+ 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))
-@@ -1787,7 +1790,7 @@ class Commands(object):
- git_excludes.write()
- self.log.debug('Git-excludes patterns were added into %s' % git_excludes_path)
-
-- def _add_git_pre_push_hook(self, conf_dir):
-+ def _add_git_pre_push_hook(self, repo_dir, config_path=None):
- """
- Create pre-push hook script and write it in the location:
- <repository_directory>/.git/hooks/pre-push
-@@ -1803,6 +1806,10 @@ class Commands(object):
- self.log.debug('Pre-push hook script was NOT added - missing '
- 'the packaging tool like fedpkg, rhpkg, ...')
- return
-+
-+ # in case the clone command run with 'x-pkg -C <config_path> clone <repo_name>'
-+ config_arg = ' -C "{0}"'.format(os.path.realpath(config_path)) if config_path else ""
-+
- hook_content = textwrap.dedent("""
- #!/bin/bash
-
-@@ -1818,7 +1825,7 @@ class Commands(object):
- do
- command -v {0} >/dev/null 2>&1 || {{ echo >&2 "Warning: '{0}' is missing, \\
- pre-push check is omitted. See .git/hooks/pre-push"; exit 0; }}
-- {0} pre-push-check "$local_sha"
-+ {0}{1} pre-push-check "$local_sha"
- ret_code=$?
- if [ $ret_code -ne 0 ] && [ $exit_code -eq 0 ]; then
- exit_code=$ret_code
-@@ -1826,8 +1833,8 @@ class Commands(object):
- done
-
- exit $exit_code
-- """).strip().format(tool_name)
-- git_pre_push_hook_path = os.path.join(conf_dir, '.git/hooks/pre-push')
-+ """).strip().format(tool_name, config_arg)
-+ git_pre_push_hook_path = os.path.join(repo_dir, '.git/hooks/pre-push')
- if not os.path.exists(os.path.dirname(git_pre_push_hook_path)):
- # prepare ".git/hooks" directory if it is missing
- os.makedirs(os.path.dirname(git_pre_push_hook_path))
-diff --git a/pyrpkg/cli.py b/pyrpkg/cli.py
-index 1bcf6e4..3d8ce33 100644
---- a/pyrpkg/cli.py
-+++ b/pyrpkg/cli.py
-@@ -2182,14 +2182,16 @@ class cliClient(object):
- anon=self.args.anonymous,
- target=self.args.clone_target,
- depth=self.args.depth,
-- extra_args=self.extra_args)
-+ extra_args=self.extra_args,
-+ config_path=self.args.config)
- else:
- self.cmd.clone(self.args.repo[0],
- branch=self.args.branch,
- anon=self.args.anonymous,
- target=self.args.clone_target,
- depth=self.args.depth,
-- extra_args=self.extra_args)
-+ extra_args=self.extra_args,
-+ config_path=self.args.config)
-
- def commit(self):
- if self.args.with_changelog and not self.args.message:
-diff --git a/tests/commands/test_clone.py b/tests/commands/test_clone.py
-index f741864..6ef1300 100644
---- a/tests/commands/test_clone.py
-+++ b/tests/commands/test_clone.py
-@@ -95,6 +95,50 @@ class CommandCloneTestCase(CommandTestCase):
-
- shutil.rmtree(altpath)
-
-+ def test_clone_anonymous_pre_push_hook(self):
-+ self.make_new_git(self.module)
-+
-+ altpath = tempfile.mkdtemp(prefix='rpkg-tests.')
-+
-+ cmd = pyrpkg.Commands(self.path, self.lookaside, self.lookasidehash,
-+ self.lookaside_cgi, self.gitbaseurl,
-+ self.anongiturl, self.branchre, self.kojiprofile,
-+ self.build_client, self.user, self.dist,
-+ self.target, self.quiet)
-+ cmd.clone(self.module, anon=True, config_path=None)
-+
-+ moduledir = os.path.join(self.path, self.module)
-+ self.assertTrue(os.path.isfile(os.path.join(moduledir, '.git/hooks/pre-push')))
-+
-+ with open(os.path.join(moduledir, '.git/hooks/pre-push')) as git_hook_script:
-+ content = git_hook_script.read()
-+ pattern = '__main__.py pre-push-check "$local_sha"'
-+ self.assertIn(pattern, content)
-+
-+ shutil.rmtree(altpath)
-+
-+ def test_clone_anonymous_pre_push_hook_config(self):
-+ self.make_new_git(self.module)
-+
-+ altpath = tempfile.mkdtemp(prefix='rpkg-tests.')
-+
-+ cmd = pyrpkg.Commands(self.path, self.lookaside, self.lookasidehash,
-+ self.lookaside_cgi, self.gitbaseurl,
-+ self.anongiturl, self.branchre, self.kojiprofile,
-+ self.build_client, self.user, self.dist,
-+ self.target, self.quiet)
-+ cmd.clone(self.module, anon=True, config_path="/home/conf/rhpkg.conf")
-+
-+ moduledir = os.path.join(self.path, self.module)
-+ self.assertTrue(os.path.isfile(os.path.join(moduledir, '.git/hooks/pre-push')))
-+
-+ with open(os.path.join(moduledir, '.git/hooks/pre-push')) as git_hook_script:
-+ content = git_hook_script.read()
-+ pattern = '__main__.py -C "/home/conf/rhpkg.conf" pre-push-check "$local_sha"'
-+ self.assertIn(pattern, content)
-+
-+ shutil.rmtree(altpath)
-+
- def test_clone_anonymous_with_branch(self):
- self.make_new_git(self.module,
- branches=['rpkg-tests-1', 'rpkg-tests-2'])
---
-2.39.2
-