我对SVN比较新,但不是一个完整的初学者。我最近尝试重构我正在处理的项目的本地副本。然后我尝试创建我的项目的标签,现在我很困惑,因为在比较我的最新本地副本与我在Repo浏览器中看到的文件位置/命名时没有对齐。
文件“结构”:
我的根文件夹在Repo和我的本地都称为可靠性。我有可靠性/主干,... /分支,.. /标签在Repo-但直到最近一直只是保留在Trunk中的所有内容并在那里进行更新/提交。
在“Trunk”中我有一个文件夹“Instrument Drivers”,其中包含我开发的各种乐器驱动程序的子文件夹。我决定SVN将该文件夹从trunk转移到顶级根文件夹,然后将项目分支回trunk,这样我就可以在Trunk中创建一个开发副本,并在顶层使用“ready-use copy”。我这样做是因为我觉得这是使用SVN更正确的方式。简而言之,我感动了:
/ Reliability / trunk / Instrument Drivers / Source / AgilentDAQ
到
/可靠性/仪器驱动程序/来源/ AgilentDAQ
工作得很好。接下来我想为1.0创建一个当前仪器驱动程序(... / AgilentDAQ)的“标记”,并将其置于/ Reliability / Tags文件夹中/Reliability/Tags/AgilentDAQ-1.0
它似乎工作,但后来我开始得到所有这些冲突和警告重复文件和工作目录问题(我可能不小心将我的工作副本设置为标签)。我花了很多时间在假期休息之前尝试清理它并且我不是100%确定我做了什么改变(我已经查看了日志并且有很多需要消化的内容)。重点是,我现在看到的是混淆了我,我不知道是不是因为我真的搞砸了或者只是这就是标签的工作方式。
为什么我的本地存储库和repo-browser显示不同的结构?
RepoBroswer中的一切看起来都很好,但我的本地有一个新文件夹,看起来像是标签。但它存在于与源版本相同的文件级别,但是在与我的根同名的新子文件夹下。 SVN是否将Tag文件实际存储在它标记的主存储库中?
Here's pictures,但这里是我目前看到的摘要。
在RepoBrowser中,我看到了我的期望: /可靠性/仪器驱动程序/来源/ AgilentDAQ(预期) /Reliability/Tags/AgilentDAQ-1.0( 预期)
本地磁盘,我很困惑: C:/可靠性/仪器驱动程序/来源/ AgilentDAQ(预期) C:/可靠性/仪器驱动程序/来源/可靠性/ AgilentDAQ-1.0(它是上面的AgilentDAQ的副本,我希望它是一个标签,但为什么它在Instrument Drivers文件夹下的物理上在我的磁盘上,为什么它是嵌套的在另一个名为“Reliability”的子文件夹下,这是我的根目录)
非常感谢帮助,试图最终强迫自己正确使用SVN并成为更好的开发人员。
答案 0 :(得分:0)
好的,所以要开始,我只是想让你知道,当你从主干下面移动一切时,你已经打破了颠覆知识库的“传统”范式。
所以你假设有一个名为可靠性的存储库。默认目录结构应该是(并且是):
Reliability
|_branches
|_tags
|_trunk
|_Instrument Drivers
首先,让我解释一下branches
,tags
和trunk
目录的用途。
分支机构 - 此文件夹通常被指定为开发人员修复错误,添加新功能等的目录,以用于您正在处理的任何功能。您基本上可以复制trunk
,进行需要进行的任何更改,一旦测试和工作,您就会将这些更改合并回trunk
。
标记 - 此目录通常用于存储库的稳定版本或快照。例如,假设您正在处理的任何应用程序已正式发布为1.0版。在发布时,开发人员通常会获取存储库的“快照”并标记此目录下的trunk
。理想情况下,您会看到类似
Reliability
|_ tags
|__ 1.0
1.0 将是trunk
的州/修订版的副本。需要注意的一件重要事情是标签通常从不进行修改。它们在开发过程中仅用作参考点。例如,如果某些版本之间存在中断,并且您需要返回以验证某些内容是否有效,则可以将此结帐字符串用作重置点。
trunk - trunk是存储库的活动工作开发分支。这意味着所有开发人员活动的开始和结束。每当您完成分支中的功能处理时,就会将它们合并回主干。您从主干发布。当您有新任务时,您将从中继分支。 (是的,您可以直接对主干进行更改,但对于许多在同一个存储库上工作的开发人员,必然会出现冲突)。
如果您愿意,我可以详细了解这个结构,请随时询问您是否有任何其他问题,但这是一般性的想法。
现在为您解决问题:
为了将来参考,请不要将SVN移动到任何根目录 库中。
我不确定你做了什么,但看起来你做了一个 SVN签出可靠性在 Instrument Drivers文件夹中 (我可以告诉因为下面还有另一个.svn文件夹 可靠性/仪器驱动/可靠性)。
这更像是一种挑剔,但作为开发者你应该知道 这一点并牢记在心。在Windows上,大小写并不重要, 但在Unix / Linux上它会很重要。确保你使用一致 资本。所以每当你试图分支到标签/分支时 确保使用正确的外壳。
您通常想要标记整个主干,但如果您只想标记AgilentDAQ目录,只需右键单击AgilentDAQ目录(在主干)> TortoiseSVN > 分支/标记... 以及字段至路径:您希望将其指向tags/AgilentDAQ-1.0
。
截至目前,您的回购和工作副本实际上是一团糟,但它可以恢复(因此您使用版本控制系统的原因;))。希望这可以帮助指导您整理您的回购。