代码生成Tag后文件结构混乱
Confusion of file structure after generating Tag of code
我对 SVN 比较陌生,但不是完全的初学者。我最近试图为我正在进行的项目重组我的本地副本。然后我尝试为我的项目创建一个标签,现在我很困惑,因为我的文件 locations/naming 在比较我的最新本地副本与我在 Repo 浏览器中看到的内容时没有对齐。
文件"Structure":
我的根文件夹在 Repo 和我的本地文件夹中都称为 Reliability。我在 Repo 中有 Reliability/Trunk, .../Branch, ../Tags - 但直到最近我总是将所有内容都保存在 Trunk 中并在那里 Updates/Commits 。
在 "Trunk" 中,我有一个文件夹 "Instrument Drivers",其中包含我开发的各种仪器驱动程序的子文件夹。我决定将该文件夹从 trunk 中移出,移到顶级根文件夹中,然后将项目分支回 trunk 中,这样我就可以在 Trunk 中有一个开发副本,在顶级中有一个 "ready to use copy"。我这样做是因为我觉得这是使用 SVN 的更正确的方法。所以简而言之,我感动了:
/Reliability/trunk/Instrument Drivers/Source/AgilentDAQ
至
/Reliability/Instrument Drivers/Source/AgilentDAQ
效果很好。接下来,我想为 1.0 创建一个我当前的仪器驱动程序 (.../AgilentDAQ) 的 "tag",并将其作为 /Reliability/Tags/AgilentDAQ-1.0[=11 放置在 /Reliability/Tags 文件夹中=]
它似乎有效,但后来我开始收到所有这些冲突和关于重复文件和工作目录问题的警报(我可能不小心将我的工作副本设置为标签)。我花了很多时间试图在假期前清理它,但我不是 100% 确定我做了什么更改(我已经查看了日志并且有很多东西需要消化)。重点是,我现在看到的让我感到困惑,我不知道是因为我真的把事情搞砸了还是这就是标签的工作方式。
为什么我的本地存储库和存储库浏览器显示不同的结构?
RepoBroswer 中的一切看起来都很好,但我的本地文件夹中有一个看起来是标签的新文件夹。然而它存在于与源版本相同的文件级别,但位于与我的根目录同名的新子文件夹下。 SVN 是否将标记文件物理存储在标记它的主存储库中?
Here's pictures,但这是我目前看到的内容的摘要。
在 RepoBrowser 中,我看到了我所期望的:
/Reliability/Instrument Drivers/Source/AgilentDAQ(预期)
/Reliability/Tags/AgilentDAQ-1.0(预期)
本地磁盘,我很困惑:
C:/Reliability/Instrument Drivers/Source/AgilentDAQ (预期)
C:/Reliability/Instrument Drivers/Source/Reliability/AgilentDAQ-1.0(它是 AgilentDAQ 的副本,因为它是一个标签,所以我期望它在上面,但为什么它物理上位于我的磁盘上的 Instrument Drivers 文件夹下,为什么它是嵌套在另一个名为 "Reliability" 的子文件夹下,这是我的根目录)
非常感谢您的帮助,努力最终迫使自己正确使用 SVN 并成为更好的开发人员。
好的,首先,我只想让您知道,当您将所有内容从主干下面移走时,您已经打破了颠覆存储库的 "traditional" 范式。
我假设您有一个名为 Reliability 的存储库。默认目录结构应该是(并且是):
Reliability
|_branches
|_tags
|_trunk
|_Instrument Drivers
首先,让我解释一下 branches
、tags
和 trunk
目录的用途。
branches - 此文件夹通常被指定为开发人员修复错误、添加新功能等的目录,无论您正在开发什么功能。您实质上是复制 trunk
,进行任何您需要进行的更改,一旦它们经过测试并正常工作,您就可以将这些更改合并回 trunk
.
tags - 此目录通常用于存储库的稳定版本或快照。例如,假设您正在开发的任何应用程序都已正式发布为 1.0 版。在发布时,开发人员通常会获取存储库的 "snapshot" 并在该目录下标记 trunk
。理想情况下,您会看到类似
的内容
Reliability
|_ tags
|__ 1.0
其中 1.0 将是 trunk
的 state/revision 的副本。需要注意的一件重要事情是,标签通常 永远不会 被修改。它们只是在开发过程中用作参考点。例如,如果版本之间出现问题并且您需要返回以验证某些内容是否正常工作,您可以使用此签出字符串作为重置点。
trunk - 主干是您的存储库的活动工作开发分支。它意味着所有开发人员 activity 开始和结束的地方。每当你在一个分支中完成你的特性工作时,你将它们合并回主干中。你从你的行李箱中释放。当您有新任务时,您将从 树干分支 。 (是的,您可以直接对主干进行更改,但是对于在同一个存储库上工作的许多开发人员来说,肯定会发生冲突)。
如果你愿意,我可以更详细地介绍这个结构,如果你有任何其他问题,请随时询问,但这是一般的想法。
现在解决您的问题:
为了将来参考,不要将 SVN 项目移动到任何项目的根目录
存储库。
我不太确定你做了什么,但看起来你做了一个
SVN 可靠性检查在 Instrument Drivers 文件夹中
(我能看出来是因为下面还有另一个 .svn 文件夹
Reliability/Instrument Drivers/Reliability).
这比较吹毛求疵,但作为开发者你应该知道
记住这一点。在 Windows 上,大小写无关紧要,
但在 Unix/Linux 上这很重要。确保您使用的是一致的
资本化。因此,每当您尝试分支到 tag/branch
确保您使用的是正确的大小写。
您通常想要标记整个主干,但如果您立即想要标记 AgilentDAQ 目录,您只需右键单击在 AgilentDAQ 目录(trunk 内)> TortoiseSVN > Branch/Tag... 和字段内部 To path: 你想将它指向 tags/AgilentDAQ-1.0
.
到目前为止,您的存储库和工作副本有点乱,但可以恢复(这就是您使用版本控制系统的原因;))。希望这可以帮助指导您整理存储库。
我对 SVN 比较陌生,但不是完全的初学者。我最近试图为我正在进行的项目重组我的本地副本。然后我尝试为我的项目创建一个标签,现在我很困惑,因为我的文件 locations/naming 在比较我的最新本地副本与我在 Repo 浏览器中看到的内容时没有对齐。
文件"Structure":
我的根文件夹在 Repo 和我的本地文件夹中都称为 Reliability。我在 Repo 中有 Reliability/Trunk, .../Branch, ../Tags - 但直到最近我总是将所有内容都保存在 Trunk 中并在那里 Updates/Commits 。
在 "Trunk" 中,我有一个文件夹 "Instrument Drivers",其中包含我开发的各种仪器驱动程序的子文件夹。我决定将该文件夹从 trunk 中移出,移到顶级根文件夹中,然后将项目分支回 trunk 中,这样我就可以在 Trunk 中有一个开发副本,在顶级中有一个 "ready to use copy"。我这样做是因为我觉得这是使用 SVN 的更正确的方法。所以简而言之,我感动了:
/Reliability/trunk/Instrument Drivers/Source/AgilentDAQ
至
/Reliability/Instrument Drivers/Source/AgilentDAQ
效果很好。接下来,我想为 1.0 创建一个我当前的仪器驱动程序 (.../AgilentDAQ) 的 "tag",并将其作为 /Reliability/Tags/AgilentDAQ-1.0[=11 放置在 /Reliability/Tags 文件夹中=]
它似乎有效,但后来我开始收到所有这些冲突和关于重复文件和工作目录问题的警报(我可能不小心将我的工作副本设置为标签)。我花了很多时间试图在假期前清理它,但我不是 100% 确定我做了什么更改(我已经查看了日志并且有很多东西需要消化)。重点是,我现在看到的让我感到困惑,我不知道是因为我真的把事情搞砸了还是这就是标签的工作方式。
为什么我的本地存储库和存储库浏览器显示不同的结构?
RepoBroswer 中的一切看起来都很好,但我的本地文件夹中有一个看起来是标签的新文件夹。然而它存在于与源版本相同的文件级别,但位于与我的根目录同名的新子文件夹下。 SVN 是否将标记文件物理存储在标记它的主存储库中?
Here's pictures,但这是我目前看到的内容的摘要。
在 RepoBrowser 中,我看到了我所期望的: /Reliability/Instrument Drivers/Source/AgilentDAQ(预期) /Reliability/Tags/AgilentDAQ-1.0(预期)
本地磁盘,我很困惑: C:/Reliability/Instrument Drivers/Source/AgilentDAQ (预期) C:/Reliability/Instrument Drivers/Source/Reliability/AgilentDAQ-1.0(它是 AgilentDAQ 的副本,因为它是一个标签,所以我期望它在上面,但为什么它物理上位于我的磁盘上的 Instrument Drivers 文件夹下,为什么它是嵌套在另一个名为 "Reliability" 的子文件夹下,这是我的根目录)
非常感谢您的帮助,努力最终迫使自己正确使用 SVN 并成为更好的开发人员。
好的,首先,我只想让您知道,当您将所有内容从主干下面移走时,您已经打破了颠覆存储库的 "traditional" 范式。
我假设您有一个名为 Reliability 的存储库。默认目录结构应该是(并且是):
Reliability
|_branches
|_tags
|_trunk
|_Instrument Drivers
首先,让我解释一下 branches
、tags
和 trunk
目录的用途。
branches - 此文件夹通常被指定为开发人员修复错误、添加新功能等的目录,无论您正在开发什么功能。您实质上是复制 trunk
,进行任何您需要进行的更改,一旦它们经过测试并正常工作,您就可以将这些更改合并回 trunk
.
tags - 此目录通常用于存储库的稳定版本或快照。例如,假设您正在开发的任何应用程序都已正式发布为 1.0 版。在发布时,开发人员通常会获取存储库的 "snapshot" 并在该目录下标记 trunk
。理想情况下,您会看到类似
Reliability
|_ tags
|__ 1.0
其中 1.0 将是 trunk
的 state/revision 的副本。需要注意的一件重要事情是,标签通常 永远不会 被修改。它们只是在开发过程中用作参考点。例如,如果版本之间出现问题并且您需要返回以验证某些内容是否正常工作,您可以使用此签出字符串作为重置点。
trunk - 主干是您的存储库的活动工作开发分支。它意味着所有开发人员 activity 开始和结束的地方。每当你在一个分支中完成你的特性工作时,你将它们合并回主干中。你从你的行李箱中释放。当您有新任务时,您将从 树干分支 。 (是的,您可以直接对主干进行更改,但是对于在同一个存储库上工作的许多开发人员来说,肯定会发生冲突)。
如果你愿意,我可以更详细地介绍这个结构,如果你有任何其他问题,请随时询问,但这是一般的想法。
现在解决您的问题:
为了将来参考,不要将 SVN 项目移动到任何项目的根目录 存储库。
我不太确定你做了什么,但看起来你做了一个 SVN 可靠性检查在 Instrument Drivers 文件夹中 (我能看出来是因为下面还有另一个 .svn 文件夹 Reliability/Instrument Drivers/Reliability).
这比较吹毛求疵,但作为开发者你应该知道 记住这一点。在 Windows 上,大小写无关紧要, 但在 Unix/Linux 上这很重要。确保您使用的是一致的 资本化。因此,每当您尝试分支到 tag/branch 确保您使用的是正确的大小写。
您通常想要标记整个主干,但如果您立即想要标记 AgilentDAQ 目录,您只需右键单击在 AgilentDAQ 目录(trunk 内)> TortoiseSVN > Branch/Tag... 和字段内部 To path: 你想将它指向
tags/AgilentDAQ-1.0
.
到目前为止,您的存储库和工作副本有点乱,但可以恢复(这就是您使用版本控制系统的原因;))。希望这可以帮助指导您整理存储库。