如何在ant中运行git结账



我一直在阅读这篇文章,以便在特定日期前进行git结账。我已经能够获得修订版提交SHA代码到我为结账所做的特定提交,但当我试图实际运行git checkout命令行时,我得到了错误:

错误:路径规范'de957d59f5ebef20f3415456b8ab46f127dc345'与git已知的任何文件都不匹配。

不确定这意味着什么。我正在我的Windows7机器上运行蚂蚁1.94的这个命令

ant命令脚本如下所示:

<target name="git.revlist" description="Revision list of repo for a particular timeframe" >
<exec executable="git" dir="${run.repo.dir}" failifexecutionfails="true" output="${output_commit_sha_file}" >
<arg line="rev-list -n 1 --before=${snapshot_before_date} ${repo_branch}"/>
</exec>
<loadfile property="output_commit_sha" srcfile="${output_commit_sha_file}"  />
<exec executable="git" dir="${run.repo.dir}" failifexecutionfails="true" >
<arg line="checkout ${output_commit_sha}"/>
</exec> 
</target>

当第一次执行实际成功地检索到SHA(de957d59f5ebef20f3415456b8ab46f127dc345)代码时,但当试图将其用于第二次执行任务命令参数时,它会通过上述错误。

关于我在这里遗漏的任何想法/建议。正如我提到的,我确实有几个任务命令行看起来像这样,用于执行其他任务,如git clonegit log,但这一行似乎缺少一些关键的东西。

提前感谢

在错误消息中,我注意到结束引号前有一个空格:

pathspec 'de957d59f5ebef20f34155456b8ab46f127dc345 '
^ a space

我相信<exec>output属性在输出文件的末尾插入了一行换行符。<loadfile>随后将换行符转换为空格。

为了避免处理空间,可以考虑使用outputproperty而不是output:将git rev-list的结果保存为Ant属性

<exec executable="git" dir="${run.repo.dir}" outputproperty="output_commit_sha">
<arg line="rev-list -n 1 --before=${snapshot_before_date} ${repo_branch}"/>
</exec>
<exec executable="git" dir="${run.repo.dir}">
<arg line="checkout ${output_commit_sha}"/>
</exec>

上面的版本很好,因为它避免了创建一个存储git rev-list结果的文件。它还删除了对<loadfile>的调用。

顺便说一下,您可能希望使用failonerror="true"而不是failifexecutionfails="true"failifexecutionfails默认为true,可以省略。但是,默认情况下,failonerrorfalse。将failonerror="true"添加到<exec>通常是一件好事

相关内容

  • 没有找到相关文章

最新更新