假设您有一个典型的Web应用程序和文件配置.无论如何.每个开发该项目的开发人员都有一个版本用于他们的开发盒,将有一个dev,prod和stage版本.你如何在源代码管理中处理这个问题?根本不检查这个文件,用不同的名字检查或完全做些什么?
我的情况是,一堆文件被检入svn,这是非常讨厌的源代码控制(特别是一个log4j.properties文件),我想从版本控制中删除它们.我已经知道如何在我自己的本地工作副本中从svn版本控件中删除文件,就像在这个问题和这个问题中一样,但这并不是我正在寻找的.
问题是,一旦我删除文件svn rm --keep-local,当每个其他用户从存储库中拉出时,他们的本地副本log4j.properties将消失,他们的环境将崩溃.我想要做的是从存储库中的版本控制中删除该文件,但也使其成为当其他人从存储库中拉出时,就好像他们--keep-local在自己的机器上使用它一样,以便它们的log4j.properties文件的现有副本坚持不懈但变得无法接受.
这甚至可能吗?我怀疑它是svn没有的功能.
之前已经提出过这个问题的变化,但似乎没有提到令其他团队成员感到不安的问题.在现有帖子中(请参阅如何"取消"svn和/或git中的文件),接受的答案通常是运行svn rm FILE或svn rm --keep-local FILE,然后svn:ignore根据需要设置属性.我花了最后20分钟玩这个(在两个地方检查一个回购,从一个删除一个文件,然后更新另一个,等等).这是我发现的(我正在使用SVN 1.6.16):
首先,从我所知道的--keep-local标志不会影响将要从存储库更新的其他所有人发生的事情.对于他们来说,它看起来就像你刚刚做了一个常规的svn delete(没有一个我见过的明确提到的subversion文档 - 也许很明显你还在做一个svn delete操作而且"保持本地"只会影响事物在当地方面,但对我来说并不一定明显).
因此有两种情况 - 1.团队成员A删除团队成员B没有本地修改的文件或2.团队成员A删除团队成员B 确实具有未提交的本地更改的文件.
在1中,删除发生后B的文件已被删除.他现在必须自己恢复它(svn merge -rHEAD:XXX FILE; svn revert FILE即将FILE的XXX版本恢复到工作目录中并且在下一次提交时不再重新提交)
在2中,B在更新时看到树冲突,并且FILE现在具有 A + C在其下面具有消息"本地编辑,在更新时传入删除"的状态.在这一点上,我不确定推荐的解决方案是什么.我做的是将FILE复制到其他地方,只是为了安全,然后运行svn revert FILE.它最终是不必要的,因为FILE在工作目录中仍然存在未版本化,所有本地修改都保持不变.但是我不知道我有多信任这个,因为我已经svn revert在其他场景中删除了我未提交的更改.
TL;博士:是不是真的,只有到联合国版本的方式在SVN文件是从每个人的其他工作目录的团队将其删除,并让他们找回自己的情况?我使用--keep-local错误,还是错过了另一个类似的选项?