说我正在研究一个项目,我知道我已经完成了一个特定的课程,并且不应该再次编辑它。我如何锁定这个类,以便不再提交它?我试过锁定它,但只持续一次提交,仍允许我编辑它。
推理:
我有一个课程,只执行一件事,而且只有一件事。它管理数据库的 X 部分。 X 不会改变,因此课程不必改变。任何变化都可能是危险的,并引入不必要的错误。为了举例,这是一个包含googol(1.0 x 10 ^ 100)类的项目中的一个类。对一个小班的分支会过于复杂,特别是如果一半的班级是这样的话,至少你会找到半个googol分支。
答案 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”(双关语))来锁定。这样,当你提交时,它不会尝试释放锁。如果要释放所有锁定,请使用单独的用户帐户将其解锁。