1

我能够两次创建相同的 SVN 分支。我希望 SVN 不会允许我再次创建相同的分支。请帮我解决这个问题。

4

2 回答 2

10

来自SVN 红皮书

Subversion 没有内部的分支概念——它只知道如何进行复制。当您复制一个目录时,生成的目录只是一个“分支”,因为您将那个含义附加到它上面。你可能对目录有不同的看法,或者对它有不同的处理方式,但对于 Subversion 来说,它只是一个普通的目录,恰好包含一些额外的历史信息。

由于这种复制机制,Subversion 的分支作为存储库中的普通文件系统目录存在。

因此,当您创建分支“补丁”时,您的存储库中可以有多个目录“补丁”。

当您在区分大小写的操作系统中使用不同的大小写(补丁与补丁)在同一父目录中创建两次“补丁”时,您可能会感到困惑。


为了更好地回答您的问题:

我希望 SVN 不会允许我再次创建相同的分支。

如果您真的想防止任何“与案例相关的路径冲突”,您可以设置一个预提交挂钩(也由 svn copy 触发),就像这个一样,来自svn tools contrib

不区分大小写.py

  • 检测与现有或其他新路径“冲突”的新路径。
  • 忽略已经“冲突”的现有路径
  • 如果检测到“冲突”,则以错误代码退出,并在 stderr 上进行诊断。

使用该钩子,您仍然可以创建多个具有相同名称的分支,但至少不在同一个父目录中,但大小写不同。

于 2008-12-02T12:28:20.400 回答
0

在 SVN 中,分支(和标签也是)只是副本。

SVN 不知道分支是什么,它只知道副本。SVN 用户赋予这些副本分支的含义,但这只是人们遵循的约定,而不是 SVN。

于 2008-12-02T13:23:47.327 回答