2009-02-13 58 views
1

假设我正在开发一个项目,并且我知道我已经完成了一个特定的类,并且不应该再次编辑它。我怎样才能锁定这个类,这样就不会再发生任何提交了?我试图锁定它,但只能持续一次提交,并仍然允许我编辑它。使用Subversion实现代码冻结


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

+0

如果它“不会改变”,那么为什么要担心呢? – Tim 2009-02-13 18:57:00

+1

因为有人可能会尝试 – Malfist 2009-02-13 19:23:53

+0

http://www.noah.org/wiki/SVN_Directory_Lock有一个完美的解决方案来锁定回购分支(目录)。 – 2014-09-10 08:56:38

回答

5

编辑:根据您的编辑

,如果你知道它不会改变,那么为什么还要担心呢?如果你不信任你的开发者,那么还有一些其他问题,但是从我所看到的你试图使用版本控制来“解决”那些并不存在的东西。

我和其他许多人对“不变”断言非常怀疑。

就这样吧。

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

POST之前编辑:

如果您使用的是Apache你可以设置权限,只有FR该文件(S)读取信息库。但在我看来这是一个很大的错误。

为您构建你可以强制特定版本的“得到”?

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

如果添加提交你可以知道更改文件的时间,你不希望的钩通知。

或者你可以有一个发展分支和“批准”分支,只是从来没有促进该文件(S)

2

好了,开始有任何改变,基本的答案是你知道应该永远不要再编辑一个特定的类。相信我,它会的。

尽管如此,代码冻结 - 在你说“没有更多的变化” - 很容易在通过拉动标签或分支机构(差别是相当任意的)上的代码svn的实现。

如果要冻结一个文件,请考虑使用SVN属性标记它。

1

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

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

对于大型项目,在冻结发行版之前,您通常会从HEAD分支,并继续在分支中插入错误修复(如v1) - 这可以隔离进入V2的HEAD的任何新开发。

2

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

0

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