嘿,想象一个普通的 webapp,它带有一个log4j.properties
受版本控制的。我无法添加它,svn:ignore
因为它是强制性文件。如果我为开发进行自定义更改并且我不想提交它们,我必须注意意外提交。对于一个文件,它很容易处理,对于 3 个或更多文件,它变得令人毛骨悚然。
有没有办法从 svn commit 临时禁用这些文件?那么它更容易提交吗?我正在使用svn
和subclipse
。
嘿,想象一个普通的 webapp,它带有一个log4j.properties
受版本控制的。我无法添加它,svn:ignore
因为它是强制性文件。如果我为开发进行自定义更改并且我不想提交它们,我必须注意意外提交。对于一个文件,它很容易处理,对于 3 个或更多文件,它变得令人毛骨悚然。
有没有办法从 svn commit 临时禁用这些文件?那么它更容易提交吗?我正在使用svn
和subclipse
。
处理此类情况的典型方法是执行以下操作:
这样,您将拥有一个新副本,并且在部署期间您可以将文件从模板复制回真实文件。
这样您就不会冒对该文件进行错误更改的风险,并且至少对于其他版本控制系统,您不会冒有人检查文件并忘记锁定的风险。
在 Subversion 中没有办法表明一个文件是 only-commit-first-time 类型的东西,所以当您将它添加到您的存储库时,您告诉 Subversion 跟踪该文件中的更改。除非您手动确保(或编写工具,或更改您的工具)永远不会提交对该文件的更改,否则 Subversion 不会帮助您。
我对这个问题的解决方案是在我们的 svn 服务器上创建一个新的(有点虚拟的)用户并将他添加到所有项目中,我们称他为 Locker。因此,我以用户 Locker 的身份在代码库中不应修改的配置文件上设置了一个锁。
等等瞧!这些文件不再被错误地提交,但是如果生产系统需要更新配置文件,任何团队成员都可以强制锁定,或者那些知道储物柜凭据的人可以更新和重新锁定文件!
可能不是每个人都能解决,有些公司规定可能会禁止使用代理用户。
例如,我这样做的方法是拥有名为 log4j.properties.server 的文件,然后我设置了我的部署脚本来复制 .server 文件而不是普通文件。