如何关闭subversion标签分支?

max*_*zig 8 svn tags branch

标签在Subversion中实现为分支.因此我的问题是:在创建Subversion标记之后 - 如何关闭此分支,以便没有人意外地将更改集添加到该标记分支?

例如,考虑以下目录布局:

calc+-trunk
    |-branches
    |-tags

在某些时候,trunk已准备好发布并被标记:

$ svn cp svn://example.net/calc/trunk svn://example.net/calc/tags/v1.0
Run Code Online (Sandbox Code Playgroud)

现在可能发生以下事故:

$ svn co svn://example.net/calc/tags/v1.0
$ cd v1.0
$ # change files
$ svn ci
Run Code Online (Sandbox Code Playgroud)

(也许上面的URL是copy'n'pasted,而是一个分支意味着)

如何关闭分支calc/tags/v1.0以使最后一个svn ci失败?

我称之为关闭 - 或者你可以调用该操作将分支切换到只读模式 - 或类似的东西.

Dav*_* W. 7

您可以通过预提交挂钩来控制提交. 这个允许您创建,但不能编辑标签.您可以控制对分支的访问(防止对其进行更改或保留谁可以对选定的一组人进行更改).

当我意识到用户可能无意中编辑了一个没有意义的标签时,我创建了原始副本.我想要一种用户可以创建标签的方法,但是一旦创建标签就无法修改标签.

您可以通过控制文件控制挂钩(该控制文件甚至可以驻留在存储库中以便于访问).第一行阻止任何人写入/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
Run Code Online (Sandbox Code Playgroud)

你可以在分支中做同样的事情.这里,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
Run Code Online (Sandbox Code Playgroud)