You're right. You have resultproperty
attribute to hold the exit code and output
attribute to redirect the output.
Why don't you redirect the output and load the file afterwards via loadfile
task:
<target name="foo">
<property
name="git.output.file"
value="C:\foo.txt" />
<exec program="${git.executable}" output="${git.output.file}">
<arg value="describe" />
</exec>
<loadfile
file="${git.output.file}"
property="git.output" />
</target>