用Subversion实现代码冻结

时间:2009-02-13 16:01:52

标签: svn

说我正在研究一个项目,我知道我已经完成了一个特定的课程,并且不应该再次编辑它。我如何锁定这个类,以便不再提交它?我试过锁定它,但只持续一次提交,仍允许我编辑它。


推理:
我有一个课程,只执行一件事,而且只有一件事。它管理数据库的 X 部分。 X 不会改变,因此课程不必改变。任何变化都可能是危险的,并引入不必要的错误。为了举例,这是一个包含googol(1.0 x 10 ^ 100)类的项目中的一个类。对一个小班的分支会过于复杂,特别是如果一半的班级是这样的话,至少你会找到半个googol分支。

7 个答案:

答案 0 :(得分:7)

Create a branch of your entire project - 然后,您可以在部署它们时合并以后的更改。

答案 1 :(得分:5)

编辑:

根据您的编辑,如果您知道它不会改变,那为什么甚至担心呢?如果你不信任你的开发人员,那么还有一些其他问题,但从我可以看到你试图使用版本控制来“解决”那些并不存在的东西。

我和其他许多人一样,对“不改变”的断言非常怀疑。

保持原样。

另外两个选项是通过权限文件的预提交挂钩或访问控制。

编辑前的帖子:

如果您正在为存储库使用apache,则可以将权限设置为只读取该文件。但在我看来,这是一个很大的错误。

对于您的构建,您可以在“获取”中强制执行特定修订吗?

创建一个分支并将其强制为一直使用的分支。

如果添加提交挂钩通知,您可以了解您不想要的文件更改。

或者,您可以拥有开发分支和“已批准”分支,并且永远不会对该文件进行任何更改

答案 2 :(得分:4)

您可以使用预提交挂钩拒绝在特定条件下对特定文件的更改。

http://svnbook.red-bean.com/en/1.2/svn.reposadmin.create.html#svn.reposadmin.create.hooks

答案 3 :(得分:2)

嗯,首先,基本的答案是你知道永远不会再次编辑某个特定的类。相信我,它会。

也就是说,代码冻结 - 你说“不再发生变化” - 可以通过在代码上拉一个标签或分支(差异非常随意)在svn中轻松实现。

如果要冻结一个文件,请考虑使用svn属性对其进行标记。

答案 4 :(得分:2)

我不会为此使用源代码控制,相反,如果您可以提取一大块功能(包括此类),那么您可以创建一个单独的项目。然后,该项目的输出可以作为库包含在您的主项目中,即在Java中我将从新项目中创建一个jar并将其包含在我的主项目中。如果/当此类及其关联的类发生更改时,您可以重新创建库,但可以完全控制何时决定将这些更改包含到主项目中。

答案 5 :(得分:1)

通常,源代码管理系统不允许您永久锁定类。这是有道理的,因为如果你有一个bug,你必须“解冻”这个类等等。

然而,Subversion允许您标记或分支代码。标记允许您返回特定版本的代码,分支允许您同时处理程序的多个版本。两者都允许您以某种方式“冻结”代码。

在大型项目中,在冻结版本之前,您通常会从HEAD分支,并继续将错误修复放入分支(比如v1) - 这将提供与进入HEAD for V2的任何新开发的隔离。

答案 6 :(得分:0)

您可以使用SVN锁定功能,但不是使用您自己的用户名锁定它,而是使用特定的用户帐户(例如“ice-code”(双关语))来锁定。这样,当你提交时,它不会尝试释放锁。如果要释放所有锁定,请使用单独的用户帐户将其解锁。