From 57d8ddc329e57d4e5d91ae77f87f307db35cfa98 Mon Sep 17 00:00:00 2001 From: Markus Lehtonen Date: Wed, 12 Feb 2014 15:11:30 +0200 Subject: [PATCH] import-orig-rpm: implement --create-missing-branches option Create the upstream branch if it does not exist. Use the same option name that import-srpm has. Signed-off-by: Markus Lehtonen --- gbp/scripts/import_orig_rpm.py | 23 +++++++++++++++-------- tests/component/rpm/test_import_orig_rpm.py | 29 +++++++++++++++++++++++++---- 2 files changed, 40 insertions(+), 12 deletions(-) diff --git a/gbp/scripts/import_orig_rpm.py b/gbp/scripts/import_orig_rpm.py index 8eacfb2..a8f874c 100755 --- a/gbp/scripts/import_orig_rpm.py +++ b/gbp/scripts/import_orig_rpm.py @@ -159,6 +159,9 @@ def parse_args(argv): help="Upstream VCS tag add to the merge commit") branch_group.add_boolean_config_file_option(option_name="merge", dest="merge") branch_group.add_config_file_option(option_name="packaging-dir", dest="packaging_dir") + branch_group.add_boolean_config_file_option( + option_name="create-missing-branches", + dest="create_missing_branches") tag_group.add_boolean_config_file_option(option_name="sign-tags", dest="sign_tags") @@ -214,9 +217,14 @@ def main(argv): initial_branch = repo.get_branch() is_empty = False if initial_branch else True - if not repo.has_branch(options.upstream_branch) and not is_empty: - gbp.log.err(no_upstream_branch_msg % options.upstream_branch) - raise GbpError + if not repo.has_branch(options.upstream_branch): + if options.create_missing_branches: + gbp.log.info("Will create missing branch '%s'" % + options.upstream_branch) + elif is_empty: + options.create_missing_branches = True + else: + raise GbpError(no_upstream_branch_msg % options.upstream_branch) (sourcepackage, version) = detect_name_and_version(repo, source, options) @@ -262,11 +270,10 @@ def main(argv): parents = None commit = repo.commit_dir(unpacked_orig, - msg=msg, - branch=options.upstream_branch, - other_parents=parents, - create_missing_branch=True, - ) + msg=msg, + branch=options.upstream_branch, + other_parents=parents, + create_missing_branch=options.create_missing_branches) if options.pristine_tar and pristine_orig: gbp.log.info("Pristine-tar: commiting %s" % pristine_orig) repo.pristine_tar.commit(pristine_orig, options.upstream_branch) diff --git a/tests/component/rpm/test_import_orig_rpm.py b/tests/component/rpm/test_import_orig_rpm.py index 05c106c..019dbdf 100644 --- a/tests/component/rpm/test_import_orig_rpm.py +++ b/tests/component/rpm/test_import_orig_rpm.py @@ -87,6 +87,15 @@ class ImportOrigTestBase(ComponentTestBase): class TestImportOrig(ImportOrigTestBase): """Basic tests for git-import-orig-rpm""" + @staticmethod + def _init_repo_with_dummy_packaging(): + """Create a dummy packaging branch with one commit""" + repo = GitRepository.create('.') + shutil.copy2('.git/HEAD', 'foobar') + repo.add_files('.') + repo.commit_all('First commit') + return repo + def test_invalid_args(self): """ See that import-orig-rpm fails gracefully when called with invalid args @@ -173,10 +182,7 @@ class TestImportOrig(ImportOrigTestBase): def test_import_to_existing(self): """Test importing of to an existing repo""" # Create new repo and add dummy files - repo = GitRepository.create('.') - shutil.copy2('.git/HEAD', 'foobar') - repo.add_files('.') - repo.commit_all('First commit') + repo = self._init_repo_with_dummy_packaging() sha1 = repo.rev_parse('HEAD^0') # Test missing upstream branch @@ -286,6 +292,21 @@ class TestImportOrig(ImportOrigTestBase): eq_(mock_import(['--no-interactive', orig_renamed], stdin_data=''), 1) self._check_log(-1, "gbp:error: Couldn't determine upstream version") + def test_option_create_missing(self): + """Test importing of to an existing repo""" + # Create new repo and add dummy files + repo = self._init_repo_with_dummy_packaging() + + # Test missing upstream branch + orig = os.path.join(DATA_DIR, 'gbp-test2-2.0.tar.gz') + eq_(mock_import([orig]), 1) + self._check_log(1, 'Repository does not have branch') + + # Try again, with --create-missing-branches + eq_(mock_import(['--create-missing-branches', orig]), 0) + self._check_repo_state(repo, 'master', ['master', 'upstream']) + eq_(len(repo.get_commits(until='upstream')), 1) + def test_misc_options(self): """Test various options of git-import-orig-rpm""" repo = GitRepository.create('.') -- 2.7.4