SVN 标记一个标签
SVN tagging a tag
客户有一个结构为 /trunk/branches/tags 的 SVN 存储库。现在我们想对旧版本进行修补程序。但是旧版本的状态只在tags/oldversion。我可以制作一个 tags/oldversion 的标签,然后进行修复,然后提交新标签吗?还是有其他方法可以做到这一点?
您可以 branch/tag 关闭存储库中的任何目录。它通常不是 convention 从标签上完成它,但它也不是闻所未闻 - 特别是由于您已经详细说明了需要在该特定标签上进行修补程序的原因。
如果您愿意,可以直接在标记的分支中进行更改。如果您使用的是 TortoiseSVN,您可能会看到类似 "this appears to be a tag, are you sure you want to make this change?" 的内容(很可能被屠杀了——记不起我脑海中的信息)然后继续。
替代方案如您所述;你可以制作另一个 svn copy
(svn copy
是 actual 命令你是 运行 每当你 branch/tag 一个目录 - 有该标签的分支和标签之间的差异为零)并在其中进行更改(您将在上面看到相同的消息)。
例如:
Repo
|_trunk
|_branches
|_tags
|_oldversion // svn copy (branch) this directory
|_newversion // to create this directory and apply the fix
我更喜欢第二种方法,如果您需要保持以前的标签原始状态以实现可追溯性。
tunk/branches/tags 布局只是一种约定,没有什么会阻止您处理标签。但约定意味着标签是只读的,您不打算将更改提交到现有标签中。
根据您的描述,我了解到 /tag/oldversion
指向 /trunk
的相当旧的修订版或 /branches
中不再存在的子目录。我建议您创建一个新分支以在旧版本中执行常规工作,并在完成后创建一个新标签。
启动 Repo-browser,右键单击 /tag/oldversion
和 select "Show log".
单击最新修订版,希望是创建标签的那个修订版。在下面的窗格中,记下 "Copy from path" 和 "Revision"。这就是标签指向的来源 URL。例如,/trunk
在 r123
。
返回 Repo-browser,点击 "Revision" 旁边的 "HEAD" 按钮并使用对话框 select旧版本。
现在 Repo-browser 正在显示 r123,右键单击 /trunk
、select "Copy to..." 并编辑创建新分支的建议路径,例如/branches/legacy
或 /branches/1.x
或适合您的任何内容。别担心,您可以在提交之前在 "Enter log message" 对话框中查看更改。
现在您有了一个指向旧代码的功能齐全的新分支。您可以检查该分支并开始编码。发布时从中创建标签。
(是的,使用命令行整个过程可能更快。)
客户有一个结构为 /trunk/branches/tags 的 SVN 存储库。现在我们想对旧版本进行修补程序。但是旧版本的状态只在tags/oldversion。我可以制作一个 tags/oldversion 的标签,然后进行修复,然后提交新标签吗?还是有其他方法可以做到这一点?
您可以 branch/tag 关闭存储库中的任何目录。它通常不是 convention 从标签上完成它,但它也不是闻所未闻 - 特别是由于您已经详细说明了需要在该特定标签上进行修补程序的原因。
如果您愿意,可以直接在标记的分支中进行更改。如果您使用的是 TortoiseSVN,您可能会看到类似 "this appears to be a tag, are you sure you want to make this change?" 的内容(很可能被屠杀了——记不起我脑海中的信息)然后继续。
替代方案如您所述;你可以制作另一个 svn copy
(svn copy
是 actual 命令你是 运行 每当你 branch/tag 一个目录 - 有该标签的分支和标签之间的差异为零)并在其中进行更改(您将在上面看到相同的消息)。
例如:
Repo
|_trunk
|_branches
|_tags
|_oldversion // svn copy (branch) this directory
|_newversion // to create this directory and apply the fix
我更喜欢第二种方法,如果您需要保持以前的标签原始状态以实现可追溯性。
tunk/branches/tags 布局只是一种约定,没有什么会阻止您处理标签。但约定意味着标签是只读的,您不打算将更改提交到现有标签中。
根据您的描述,我了解到 /tag/oldversion
指向 /trunk
的相当旧的修订版或 /branches
中不再存在的子目录。我建议您创建一个新分支以在旧版本中执行常规工作,并在完成后创建一个新标签。
启动 Repo-browser,右键单击
/tag/oldversion
和 select "Show log".单击最新修订版,希望是创建标签的那个修订版。在下面的窗格中,记下 "Copy from path" 和 "Revision"。这就是标签指向的来源 URL。例如,
/trunk
在r123
。返回 Repo-browser,点击 "Revision" 旁边的 "HEAD" 按钮并使用对话框 select旧版本。
现在 Repo-browser 正在显示 r123,右键单击
/trunk
、select "Copy to..." 并编辑创建新分支的建议路径,例如/branches/legacy
或/branches/1.x
或适合您的任何内容。别担心,您可以在提交之前在 "Enter log message" 对话框中查看更改。现在您有了一个指向旧代码的功能齐全的新分支。您可以检查该分支并开始编码。发布时从中创建标签。
(是的,使用命令行整个过程可能更快。)