我的项目中的'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"
答案 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"
我自己没试过,但它应该有效:)