在Ant构建脚本期间确定Git repo是否清洁

时间:2015-01-19 17:24:24

标签: git ant

我在我的Ant构建脚本中集成了一些过滤链,在打包时将构建日期,程序版本和git head sha添加到源文件中,但是我不确定如何确定源代码是否存在如果在当前要构建的源中的HEAD提交后没有任何更改,那么" clean",as-in。

要标记HEAD提交,请使用此问题中生成的git.revision目标:How to lookup the latest git commit hash from an ant build script

我想做类似的事情,但要表明回购状态,即。 "来源:@STATUS @"将过滤到:"来源:清洁" /"来源:DIRTY"或类似。

在ant git status中运行exec命令会返回很多内容并使其更难处理。有更简单的方法吗?

1 个答案:

答案 0 :(得分:1)

解决此问题的首选方法是永远不要更改我的一个源文件(在版本控制下)。相反,ANT创建了一个“build”或“target”目录,该目录被添加到“.gitignore”文件中,以便git不关心其内容。

├── build.xml
├── .gitignore
├── src
│   ├── main
│   │   ├── java
│   │   └── resources
│   └── test
│       └── java
└── build
    ├── classes
    ├── jars
    └── resources

这种方法的优点是:

  1. 构建生成的任何文件都将被git
  2. 忽略
  3. 在ANT中创建“干净”目标以刷新工作区非常简单。
  4. 我的标准“干净”目标的一个例子

    <target name="clean">
      <deleted dir="build"/>
    </target>
    

    为了确保干净的构建,请运行以下

    ant clean build
    

    最后,如果您正在使用像Jenkins这样的CI服务器(我强烈建议您这样做),通常会有插件支持,例如:

    提供删除整个项目工作区或所选文件的功能。

    希望这有帮助。