Add vcs-load-dirs project to thirdparty directory.
vcs-load-dirs project contains load-dir scripts for different version control sysystems including git, hg, darcs, bazaar.
More information about the project:
http://software.complete.org/software/wiki/vcs-load-dirs/
http://software.complete.org/static/vcs-load-dirs/doc//hg_load_dirs.1.html
# 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 USAimport utilvcssyn = Nonevcsobj = Nonevcscmd = Nonedarcs = Falsesvk = Falsegit = Falsehg = Falsedef 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: ", vcscmddef isdarcs(): global darcs return darcsdef issvk(): global svk return svkdef isgit(): global git return gitdef ishg(): global hg return hgdef 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 vcssynclass 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