Cómo hacer git pull a través de build.xml (tarea ant)

Aquí, estoy tratando de extraer un file de git si no está presente en la carpeta local, aquí está mi código.

<?xml version="1.0" encoding="utf-8"?> <project name="MyProject" default="deploy"> <target name="deploy" depends="file-checks, local-file, git-file"/> <target name="file-checks"> <available file="C:\Users\Hareesh\Desktop\H2H\conf\rdbms1.properties" property="file.found"/> </target> <target name="local-file" if="file.found"> <echo message="File is available in Local" /> </target> <target name="git-file" unless="file.found"> <echo message="No" /> <git command = "clone"> <args> <arg value = "git://github.com/280north/ojunit.git" /> <arg value = "ojunit" /> </args> </git> </target> </project> 

muestra el siguiente error:

 Buildfile: C:\Users\Hareesh\Desktop\H2H\conf\build.xml file-checks: local-file: git-file: [echo] No BUILD FAILED C:\Users\Hareesh\Desktop\H2H\conf\build.xml:15: Problem: failed to create task or type git Cause: The name is undefined. Action: Check the spelling. Action: Check that any custom tasks/types have been declanetworking. Action: Check that any <presetdef>/<macrodef> declarations have taken place. Total time: 203 milliseconds 

He seguido la siguiente URL: http://tlrobinson.net/blog/2008/11/ant-tasks-for-git/

¿Hay algún error en los valores arg? no puedo encontrar ya que no tengo conocimiento de los commands de git … Por favor, ayúdenme … Gracias de antemano.

Al marcar el enlace proporcionado, el autor ha definido git como macrodef. Por lo tanto, debe include estas definiciones en su file de compilation; de lo contrario, Ant no reconocerá qué es git :

 <macrodef name = "git"> <attribute name = "command" /> <attribute name = "dir" default = "" /> <element name = "args" optional = "true" /> <sequential> <echo message = "git @{command}" /> <exec executable = "git" dir = "@{dir}"> <arg value = "@{command}" /> <args/> </exec> </sequential> </macrodef> <macrodef name = "git-clone-pull"> <attribute name = "repository" /> <attribute name = "dest" /> <sequential> <git command = "clone"> <args> <arg value = "@{repository}" /> <arg value = "@{dest}" /> </args> </git> <git command = "pull" dir = "@{dest}" /> </sequential> </macrodef>