使用svn delete后立即提交的必要性?

时间:2011-09-06 06:23:41

标签: linux svn

我的项目中的'build'目录需要在每次签出后删除并再次创建。 这是我所做的,这是一个漫长而繁琐的过程,并创建了大量不必要的提交:

$ svn delete build
$ svn commit -m "build directory deleted..." [Unnecessary commit]
$ svn update
$ mkdir build [to create a fresh empty directory of build]
$ cd build [perfom operations in build]
$ svn add build
$ svn commit -m "New revision having following XYZ changes"

问题: 是否有一种解决方法可以在删除后避免冗余提交?我只想在'build'目录中删除与我的项目相关的所有内容以便删除,以便我可以创建它们的新版本。以下步骤,我认为应该有效,给出问题

$ svn delete build
$ rm -r build
$ mkdir build
$ svn add build
$ svn commit -m "New revision having following XYZ changes"

3 个答案:

答案 0 :(得分:3)

构建目录不是您在存储库中通常需要的内容。理想情况下应该做的是1)使用svn:ignore属性从svn忽略构建目录,2)使用构建脚本删除或创建构建目录

通过这种方式,您还可以避免在您的存储库中进行任何(不必要的)提交,只需创建或删除构建目录。

答案 1 :(得分:0)

传统方法是签出和构建,但不提交生成的构建工件。相反,创建一个标签(在svn中,你用svn cp执行此操作,通常用于标记/ _build_id_)。如果需要跟踪构建时使用的编译器版本等,可以生成并提交包含必要信息的文本文件。这样,您可以 - 至少在理论上 - 如果您需要,可以重新生成相同的构建。将构建工件复制到单独的存档仍然是一个想法,但这通常不受版本控制。

答案 2 :(得分:0)

从你的svn命令我想你想提交没有本地构建目录的代码版本,然后从svn repo更新(也没有build dir),但是然后重新创建“build”目录并且将它保存到存储库中。

如果在每次“svn更新”之后必须重新创建构建目录(例如因为“svn update”而导致某些内容发生了变化),那么您可以使用 svn ignore 在第一次提交时忽略“build”目录,但无法逃避重新创建它。

如果可以在“svn update”之后重新使用旧的“build”目录,则可以通过在提交之前/之后设置和重置svn ignore属性来节省时间:

$ svn propset svn:ignore build
$ svn commit -m "build directory deleted..." [Unnecessary commit]
$ svn update    
$ svn propdel svn:ignore build
$ svn commit -m "New revision having following XYZ changes"

我自己没试过,但它应该有效:)