标签在Subversion中实现为分支。因此,我的问题是:在创建Subversion标记之后 - 如何关闭此分支,以便没有人意外地将更改集添加到该标记分支?
例如,请考虑以下目录布局:
calc+-trunk |-branches |-tags
在某些时候,主干已准备好发布并被标记:
$ svn cp svn://example.net/calc/trunk svn://example.net/calc/tags/v1.0
现在可能发生以下事故:
$ svn co svn://example.net/calc/tags/v1.0
$ cd v1.0
$ # change files
$ svn ci
(也许上面的网址是拷贝'n'pasted,而不是分支)
如何关闭分支calc/tags/v1.0
以使最后svn ci
失败?
我称之为关闭 - 或者你可以调用该操作将分支切换到只读模式 - 或类似的东西。
答案 0 :(得分:7)
您可以通过预提交挂钩来控制提交。 This one将允许您创建,但不能编辑标签。您可以控制对分支的访问(防止对其进行更改或保留谁可以对选定的一组人进行更改)。
当我意识到用户可能会意外地编辑标签而没有意义时,我创建了原始副本。我想要一种用户可以创建标签的方法,但是一旦标签创建就无法修改标签。
您可以通过控制文件控制挂钩(该控制文件甚至可以驻留在存储库中以便于访问)。第一行阻止任何人写入/tags
目录(或任何子目录)。第二个允许用户将分支复制到新标记,但是它们不能修改该标记中的任何内容。
[FILE You cannot edit a tag once it's been created]
file = /tags/**
access = read-only
users = @ALL
[FILE You cannot edit a tag once it's been created]
file = /tags/*
access = add-only
users = @ALL
你可以在分支中做同样的事情。在这里,2.2分支完全被锁定,只有Bob和Carol可以在准备发布时更改2.3分支:
[FILE No one is allowed to touch the 2.2 branch. It is dead]
file = /branches/2.2
access = read-only
users = @all
[FILE Only Bob and Carol can make changes to the 2.3 branch]
file = /branches/2.3/**
access = read-only
users = @ALL
[FILE Only Bob and Carol can make changes to the 2.3 branch]
file = /branches/2.3/**
access = read-write
users bob, carol
答案 1 :(得分:1)
您有三种选择,从最简单/最快到最复杂。