2010-10-08 52 views
4

有一个文件,我们称之为fileToBeIgnored,它在SVN中版本化,不应该是。据我所知,svn:ignore只能防止将文件添加到SVN存储库,并且已经版本化的文件将继续获得版本,无论它们是否与模式匹配。我完全可以从SVN仓库中删除fileToBeIgnored并将其添加到其目录的svn:ignore属性中。删除并忽略版本化的项目,同时保留用户的本地副本

我的问题是,如果我这样做,当其他用户进行下一次更新时,他们的SVN客户端将尝试删除他们的本地副本fileToBeIgnored。我不想那样;相反,我想为每个人现有的本地副本进行保存。

有没有办法从SVN存储库中删除文件,而不会在后续更新中从用户本地副本中删除文件?

+0

有一个名为'ignore-on-commit'的更改列表,它将保持文件版本化,但不会稍后尝试提交。然而,据我所知,并非所有的客户都支持这一点。 – mihi 2010-10-08 17:20:55

+1

@Brain,如果你是唯一不需要该文件的人,为什么要在repo中进行更改?或者你的意思是任何新的结账不应该有文件fileToBeIored? – 2010-10-08 18:08:49

+0

fileToBeIored是一个配置文件。曾几何时,我们认为我们希望集中管理它。随着时间的推移,很明显,单个开发者将在其本地副本中有所变化。如果每个人都记得不检查他们的文件,其他人都很高兴。但偶尔会发生事故。只是想减少人为错误的可能性。 – Brian 2010-10-08 22:23:48

回答

0

有没有办法从SVN存储库中删除文件,而不会在后续更新中从用户本地副本中删除文件?

我不这么认为。

我会做的是发送一封邮件给每个人,通知他们有关更改。无法保留副本的人可以始终从存储库获取文件的早期版本。

+1

嗯......如果你删除了这个文件并且同时添加了一个'svn:ignore',它可能会成为可能* – 2010-10-08 17:15:45

0

将文件移动到不同的文件夹。
从SVN中删除。
更新。
将文件添加回文件夹。
使用svn提交:忽略。

1

做删除和属性更改提交;那么有两种情况:

  1. 另一个dev没有本地更改。他更新,他的文件被删除。他可以将svn cat文件的适当修订再次提交给他的工作副本。

  2. 另一个dev有局部变化。当他更新时,他会得到树冲突。他可以通过svn resolve --accept=working fileToBeIgnored解决冲突,然后svn rm --keep-local fileToBeIgnored避免再次将文件添加到版本控制,同时保留其本地副本。