subversion:如何管理调整后的文件

时间:2012-11-12 21:45:38

标签: svn

我们小组正在考虑转向SVN。但是,我似乎无法找到一种方法来执行以下操作:

我需要在本地对存储库中的大约20个文件进行一些小的调整,而SVN认为它们“已更改”并包含在提交中。 (如通信超时和日志记录级别的变化。)

理想情况下,我希望将调整后的文件合并到存储库中的较新版本。 (使调整后的本地文件与其他用户的提交更改保持同步。)

我无法想象我们在想要/需要它时是独一无二的。

是否有关于此类用例的最佳做法?

我正在考虑的一件事是将所有调整后的文件放入分支的“调整”工作副本中。

然后将我调整过的文件合并到我的“官方”工作副本中。

然后使用比较“调整”和“正式”工作副本的脚本来更新我的忽略列表。该脚本也会忽略并提醒我任何调整其他更改的文件,这些更改可能需要提交到存储库。

这看起来有点像黑客,我无法想象没有更好的方法。

4 个答案:

答案 0 :(得分:2)

每当您拥有存储库中的文件,但您不想更改时,您最终都会更改这些文件。您正在使用的版本控制系统并不重要。有人会不小心改变这些文件。

有几件事可以提供帮助:

  1. 我有一个pre-commit hook,可以防止意外更改特定文件。你说他们只是只读,如果有人试图对他们进行更改,提交将被拒绝。
  2. 也可以使用更改列表。您可以创建要修改的文件的更改列表,然后只使用更改列表。当然,可能会发生意外更改(请参阅第1点中的预提交挂钩)。
  3. 要考虑的一件事是改变你的工作方式。如果这些调整文件具有可替换参数,该怎么办?然后使用您的构建系统来调整这些文件。我使用Ant并设置一个build.template.properties文件,允许人们调整构建。此文件已签入,但开发人员可能会将其复制到build.properties并按照他们想要的方式进行调整。我使用svn:ignore和我的预提交钩子来确保没有人检查实际的build.properties文件。
  4. 分支在Subversion中便宜且易于操作。将文件放在分支上并在那里进行更改。您可以通过定期将原始分支合并回此分支来使分支保持最新。从版本1.5开始,Subversion具有出色的合并跟踪方法,可以防止重复合并。

答案 1 :(得分:1)

根据您使用的语言,您不能从定义值的单个文件加载这些调整,并且具有一组提交到源代码控制的默认值,并允许每个开发人员创建自己的“调整”文件哪个被忽略了?

这样,源代码中的版本是一致且稳定的,具有合理的合理默认值,但开发人员可以在本地副本上调整其内容。

听起来不像版本控制问题,更像是“我们如何获取值来覆盖可调整设置”问题。

答案 2 :(得分:0)

旁注:如果

  

我需要在本地对存储库中的大约20个文件进行一些小的调整,而SVN认为它们“已更改”并包含在提交中。

是您工作流程中相当常见的要求,那么您可以考虑不使用Subversion,但是,例如,Mercurial与MQ + mqcollab扩展,或者hg commit中的-X选项

答案 3 :(得分:0)

只是不提交包含设置的文件。提交一个文件,作为设置的“待配置模板”。然后(如果你很友好的话)删除一个“readme.txt”文件,解释复制模板文件,在编辑器中打开它,并按照文件中的描述设置适当的值。

你不需要每次安装“调整”,但为什么你会首先提交它们。源代码控制不是“系统备份”,它是源代码控制。

PS。如果您确实需要配置上述20个不同的文件,请考虑改进配置控制的集中化。