我可以使用 ANT 从 SVN 签出我的代码。但现在我只想检查一些文件夹,而不是全部。假设我的 SVN 有 Folder1、Folder2 和 Folder3,但我只想签出 Folder1 和 Folder2。有没有使用 ANT 的方法?
2 回答
先问几个问题。为什么要使用蚂蚁?您也可以在 COBOL 中执行此操作 - 这并不是一个好主意。一般来说,我发现使用 ANT 处理源闻起来很糟糕。ant 文件应该在源代码控制中,所以你有一个鸡/蛋悖论的问题——你如何在没有代码的情况下检查代码?
为什么要检出项目中的文件夹子集?听起来您可能会从更改存储库的布局中受益。Folder1、Folder2 和 Folder3 是应该有自己的分支、标签和主干的独特项目吗?在 SO 上有很多关于 svn 布局的问题和答案。一般来说,如果Folder1和Folder2没有一起发布,它们是不同的svn项目。
现在回答您的问题:您将无法使用svnant checkout 签出同一级别的目录子集,或者使用 exec 任务调用 svn 客户端,您必须对 Folder1 和 Folder2 进行单独的签出
您可以使用 Ant 来检查您的代码,但我不喜欢这样做。
首先,存在检出 的问题build.xml
,因此您可以运行它以检出其余代码。如果我的结帐自动更新build.xml
怎么办?
我的论点是 Ant 应该用于构建,而您让其他可以更好地做事的工具来做他们的事。
要执行您想要的操作,您可以使用以下命令行:
svn co --depth=none $REPO_LOCATION
svn up --set-depth=infinity Folder1
svn up --set-depth=infinity Folder2
这可以放在 Windows 批处理脚本或 Unix shell 脚本中,甚至可以放在 Ant 构建文件中:
<exec executable="svn">
<arg line="co --depth=none ${env.REPO_LOCATION}/>
<exec/>
<exec executable="svn"
<arg line="up --set-depth=infinity Folder1"/>
</exec>
<exec executable="svn"
<arg line="up --set-depth=infinity Folder2"/>
</exec>
有一个 Subversion ant 任务插件,但让它工作起来可能很棘手,而且我相信它只是直接执行 SVN 命令。