From 5a85a7578252867e8f678e1b2cb3081b85d47308 Mon Sep 17 00:00:00 2001 From: Steven Walter Date: Mon, 4 Aug 2008 14:54:04 -0400 Subject: [PATCH] svn: factor out the "applicable" helper Useful for determining if a push/fetch request should be handled by the plugin or not. --- plugins/svn.py | 56 +++++++++++++++++++++++++++++++------------------------- 1 file changed, 31 insertions(+), 25 deletions(-) diff --git a/plugins/svn.py b/plugins/svn.py index 84e4b32..ee390e2 100644 --- a/plugins/svn.py +++ b/plugins/svn.py @@ -164,6 +164,25 @@ class SvnPlugin(YapCore): enabled = get_output("git config yap.svn.enabled") return bool(enabled) + def _applicable(self, args): + if not self._enabled(): + return False + + if args and args[0] == 'svn': + return True + + if not args: + current = get_output("git symbolic-ref HEAD") + if not current: + raise YapError("Not on a branch!") + + current = current[0].replace('refs/heads/', '') + remote, merge = self._get_tracking(current) + if remote == "svn": + return True + + return False + # Ensure users don't accidentally kill our "svn" repo def cmd_repo(self, *args, **flags): if self._enabled(): @@ -207,41 +226,28 @@ class SvnPlugin(YapCore): super(SvnPlugin, self).cmd_clone(*args, **flags) def cmd_fetch(self, *args, **flags): - if self._enabled(): - if args and args[0] == 'svn': - os.system("git svn fetch svn") - self._create_tagged_blob() - return - elif not args: - current = get_output("git symbolic-ref HEAD") - if not current: - raise YapError("Not on a branch!") + if self._applicable(args): + os.system("git svn fetch svn") + self._create_tagged_blob() + return - current = current[0].replace('refs/heads/', '') - remote, merge = self._get_tracking(current) - if remote == "svn": - os.system("git svn fetch svn") - self._create_tagged_blob() - return super(SvnPlugin, self).cmd_fetch(*args, **flags) def cmd_push(self, *args, **flags): - if self._enabled(): - if args and args[0] == 'svn': - if len (args) < 2: - raise YapError("Need a branch name") - self._push_svn(args[1], **flags) - return - elif not args: + if self._applicable(args): + if len (args) >= 2: + merge = args[1] + else: current = get_output("git symbolic-ref HEAD") if not current: raise YapError("Not on a branch!") current = current[0].replace('refs/heads/', '') remote, merge = self._get_tracking(current) - if remote == "svn": - self._push_svn(merge, **flags) - return + if remote != "svn": + raise YapError("Need a branch name") + self._push_svn(merge, **flags) + return super(SvnPlugin, self).cmd_push(*args, **flags) @short_help("change options for the svn plugin") -- 2.11.4.GIT