【问题标题】:Why am I able to create the same SVN branch twice?为什么我可以两次创建相同的 SVN 分支?
【发布时间】:2008-12-02 12:16:06
【问题描述】:

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

【问题讨论】:

  • 这到底是什么意思?这个问题很模糊,并且没有更具体的描述(理想情况下是示例路径和命令),我怀疑我们能否为您提供帮助。
  • 我同意 Blair 的观点,您需要在此处详细说明您所做的工作。

标签: svn branch


【解决方案1】:

来自SVN RedBook

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

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

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

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


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

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

如果你真的想防止任何“与案例相关的路径冲突”,你可以设置一个pre-commit hook(也是triggered by a svn copy),就像这个,来自svn tools contrib

case-insensitive.py

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

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

【讨论】:

  • 注意:也可以创建一个分支,提交,合并和删除,然后返回并再次创建分支(在同一个文件夹中使用相同的名称)。
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-02
    • 2016-09-11
    • 1970-01-01
    • 1970-01-01
    • 2020-03-26
    • 2016-12-26
    • 1970-01-01
    • 2013-06-12
    相关资源
    最近更新 更多