From: Markus Lehtonen Date: Thu, 5 Apr 2012 11:51:18 +0000 (+0300) Subject: GitRepository: fix merge() for older git versions X-Git-Tag: release/20120807~92 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=c32ef4e01f8dbcd19119b0fdb57d48e309cb346a;p=tools%2Fgit-buildpackage.git GitRepository: fix merge() for older git versions Adds a new method for getting the version of git suite (i.e. git utils) installed on the OS running gbp. Utilize the new function in GitRepository.merge() to not give edit/no-edit option for older versions of git-merge, that don't support it. Fixes a regression (with git-version < 1.7.8) caused by commit f3aa87fa0361a. --- diff --git a/gbp/git/repository.py b/gbp/git/repository.py index 2cc5edae..13319071 100644 --- a/gbp/git/repository.py +++ b/gbp/git/repository.py @@ -157,6 +157,26 @@ class GitRepository(object): """ GitCommand(command, args, extra_env=extra_env, cwd=self.path)() + def _get_git_version(self): + """ + Return the version of the git suite (i.e. "git client commands") + that is installed on the OS. + + The version is not a property of the git repository itself, but the + information it is needed in some methods of GitRepository() in order + to call git subcommands with correct arguments. + + @return: git version + @rtype: C{str} + """ + out = self._git_inout("version", []) + # effectively "lstrip" everything until the first number + version_re = re.compile(r'^[^0-9]*(?P.*)$') + m = version_re.match(out[0]) + if m: + return m.group('version') + return None + @property def path(self): """The absolute path to the repository""" @@ -312,7 +332,10 @@ class GitRepository(object): """ args = GitArgs() args.add_cond(verbose, '--summary', '--no-summary') - args.add_cond(edit, '--edit', '--no-edit') + if (self._get_git_version() >= '1.7.8'): + args.add_cond(edit, '--edit', '--no-edit') + else: + log.debug("edit/no-edit option for git-merge not supported by your git suite version") args.add(commit) self._git_command("merge", args.args)