thirdparty/vcs-load-dirs/vcs_support/commandver.py
changeset 2311 e8262ca32109
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/thirdparty/vcs-load-dirs/vcs_support/commandver.py	Tue May 12 15:52:53 2009 +0200
@@ -0,0 +1,179 @@
+# Copyright (C) 2003-2007 John Goerzen
+# <jgoerzen@complete.org>
+#
+#    This program is free software; you can redistribute it and/or modify
+#    it under the terms of the GNU General Public License as published by
+#    the Free Software Foundation; either version 2 of the License, or
+#    (at your option) any later version.
+#
+#    This program is distributed in the hope that it will be useful,
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
+#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#    GNU General Public License for more details.
+#
+#    You should have received a copy of the GNU General Public License
+#    along with this program; if not, write to the Free Software
+#    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+import util
+vcssyn = None
+vcsobj = None
+vcscmd = None
+darcs = False
+svk = False
+git = False
+hg = False
+
+def setscm(x):
+    global darcs, svk, git, vcscmd, hg
+    if (x == "darcs"):
+        vcscmd = "darcs"
+        darcs = True
+    elif (x == "baz"):
+        vcscmd = "baz"
+    elif (x == "tla"):
+        vcscmd = "tla"
+    elif (x == "git"):
+        vcscmd = "git"
+        git = True
+    elif (x == "hg"):
+        vcscmd = "hg"
+        hg = True
+    elif (x == "svk"):
+        vcscmd = "svk"
+        svk = True
+    else:
+        print "Failed to determine VCS to use"
+        sys.exit(2)
+    print " VCSCMD: ", vcscmd
+
+def isdarcs():
+    global darcs
+    return darcs
+
+def issvk():
+    global svk
+    return svk
+
+def isgit():
+    global git
+    return git
+
+def ishg():
+    global hg
+    return hg
+
+def getvcssyntax():
+    global vcssyn, vcsobj
+    if vcssyn != None:
+        return vcssyn
+
+    if isdarcs():
+        vcssyn = 'darcs'
+        vcsobj = Darcs()
+    elif ishg():
+        vcssyn = 'hg'
+        vcsobj = Hg()
+    elif isgit():
+        vcssyn = 'Git'
+        vcsobj = Git()
+    elif util.getstdoutsafeexec(vcscmd, ['-V'])[0].find('tla-1.0.') != -1:
+        vcssyn = '1.0'
+        vcsobj = Tla10()
+    elif util.getstdoutsafeexec(vcscmd, ['-V'])[0].find('tla-1.1.') != -1:
+        vcssyn = '1.1'
+        vcsobj = Tla11()
+    elif util.getstdoutsafeexec(vcscmd, ['-V'])[0].find('tla-1.3.') != -1:
+        vcssyn = '1.3'
+        vcsobj = Tla13()
+    elif util.getstdoutsafeexec(vcscmd, ['-V'])[0].find('baz Bazaar version 1.4.') != -1:
+        vcssyn = 'baz1.4'
+        vcsobj = Baz14()        
+    elif util.getstdoutsafeexec(vcscmd, ['-V'])[0].find('This is svk') != -1:
+        vcssyn = 'svk'
+        vcsobj = Svk()
+    else:
+        vcssyn = '1.3'
+        vcsobj = Tla13()
+    return vcssyn
+
+class Tla10:
+    tagging_method = 'tagging-method'
+    add = ['add-tag']
+    move = 'move-tag'
+    delete = ['delete-tag']
+    update = 'update --in-place .'
+    replay = 'replay --in-place .'
+    commit = 'commit'
+    importcmd = 'import'
+
+class Tla11:
+    tagging_method = 'id-tagging-method'
+    add = ['add']
+    move = 'move'
+    delete = ['delete']
+    update = 'update'
+    replay = 'replay'
+    commit = 'commit'
+    importcmd = 'import'
+
+class Tla13:
+    tagging_method = 'id-tagging-method'
+    add = ['add-id']
+    move = 'move-id'
+    delete = ['delete-id']
+    update = 'update'
+    replay = 'replay'
+    commit = 'commit'
+    importcmd = 'import'
+
+class Baz14:
+    tagging_method = 'id-tagging-method'
+    add = ['add-id']
+    move = 'move-id'
+    delete = ['delete-id']
+    update = 'update'
+    replay = 'replay'
+    commit = 'commit'    
+    importcmd = 'import'
+
+class Darcs:
+    tagging_method = None
+    add = ['add', '--case-ok']
+    move = 'mv'
+    delete = None
+    update = 'pull'
+    replay = 'pull'
+    commit = 'record'
+
+class Hg:
+    tagging_method = None
+    add = ['add']
+    move = 'mv'
+    delete = None
+    update = 'pull'
+    replay = 'pull'
+    commit = 'commit'
+
+class Git:
+    tagging_method = None
+    add = ['add']
+    move = 'mv'
+    delete = ['rm', '-r']
+    update = 'checkout'
+    replay = None 
+    commit = 'commit'
+
+class Svk:
+	tagging_method = None
+	add = ['add']
+	move = 'mv'
+	delete = ['rm']
+	update = 'pull'
+	replay = 'pull'
+	commit = 'commit'
+
+def cmd():
+    global vcsobj
+    getvcssyntax()
+    return vcsobj