在 Ant 构建脚本期间确定 Git 存储库是否干净
Determine if Git repo is clean during Ant build script
我在我的 Ant 构建脚本中集成了一些过滤器链,它在打包时将构建日期、程序版本和 git head sha 添加到源文件中,但是我不确定如何确定源回购是 "clean",如果自从当前要构建的源中的 HEAD 提交以来没有任何更改。
为了标记 HEAD 提交,我使用了这个问题中的 git.revision
目标:How to lookup the latest git commit hash from an ant build script
我想做类似的事情,但要指明回购状态,即。 "SOURCE: @STATUS@" 将过滤为:"SOURCE: CLEAN" / "SOURCE: DIRTY",或类似的。
只是 运行 来自 ant returns 的 exec
中的 git status
命令有很多东西并且使它更难使用。有没有更简单的方法?
我解决这个问题的首选方法是永远不要更改我的任何一个源文件(在版本控制下)。相反,ANT 创建了一个 "build" 或 "target" 目录,该目录被添加到“.gitignore”文件中,因此 git 不关心其内容。
├── build.xml
├── .gitignore
├── src
│ ├── main
│ │ ├── java
│ │ └── resources
│ └── test
│ └── java
└── build
├── classes
├── jars
└── resources
这种方式的优点是:
- 构建生成的任何文件都将被 git
忽略
- 在 ANT 中创建一个 "clean" 目标来刷新工作区很简单。
我的标准示例 "clean" 目标
<target name="clean">
<deleted dir="build"/>
</target>
为确保干净的构建,请运行以下命令
ant clean build
最后,如果您使用的是像 Jenkins 这样的 CI 服务器(我强烈建议您这样做),通常会有插件支持,例如:
提供删除整个项目工作区或选定文件的功能。
希望对您有所帮助。
我在我的 Ant 构建脚本中集成了一些过滤器链,它在打包时将构建日期、程序版本和 git head sha 添加到源文件中,但是我不确定如何确定源回购是 "clean",如果自从当前要构建的源中的 HEAD 提交以来没有任何更改。
为了标记 HEAD 提交,我使用了这个问题中的 git.revision
目标:How to lookup the latest git commit hash from an ant build script
我想做类似的事情,但要指明回购状态,即。 "SOURCE: @STATUS@" 将过滤为:"SOURCE: CLEAN" / "SOURCE: DIRTY",或类似的。
只是 运行 来自 ant returns 的 exec
中的 git status
命令有很多东西并且使它更难使用。有没有更简单的方法?
我解决这个问题的首选方法是永远不要更改我的任何一个源文件(在版本控制下)。相反,ANT 创建了一个 "build" 或 "target" 目录,该目录被添加到“.gitignore”文件中,因此 git 不关心其内容。
├── build.xml
├── .gitignore
├── src
│ ├── main
│ │ ├── java
│ │ └── resources
│ └── test
│ └── java
└── build
├── classes
├── jars
└── resources
这种方式的优点是:
- 构建生成的任何文件都将被 git 忽略
- 在 ANT 中创建一个 "clean" 目标来刷新工作区很简单。
我的标准示例 "clean" 目标
<target name="clean">
<deleted dir="build"/>
</target>
为确保干净的构建,请运行以下命令
ant clean build
最后,如果您使用的是像 Jenkins 这样的 CI 服务器(我强烈建议您这样做),通常会有插件支持,例如:
提供删除整个项目工作区或选定文件的功能。
希望对您有所帮助。