生成代码标签后混淆文件结构

问题描述 投票:0回答:1

我对SVN比较新,但不是一个完整的初学者。我最近尝试重构我正在处理的项目的本地副本。然后我尝试创建我的项目的标签,现在我很困惑,因为我的文件位置/命名在比较我的最新本地副本与我在Repo浏览器中看到的时候没有对齐。

文件“结构”:

我的根文件夹在Re​​po和我的本地都称为可靠性。我有可靠性/主干,... /分支,.. /标签在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(预期)/可靠性/标签/安捷伦DAQ-1.0(预期)

本地磁盘,我很困惑:C:/可靠性/仪器驱动程序/来源/ AgilentDAQ(预期)C:/可靠性/仪器驱动程序/来源/可靠性/ AgilentDAQ-1.0(这是我所期望的安捷达的重复,因为它是一个标签,但为什么它在Instrument Drivers文件夹下的物理上位于我的磁盘上,为什么它嵌套在另一个名为“Reliability”的子文件夹下,这是我的根目录

非常感谢帮助,试图最终强迫自己正确使用SVN并成为更好的开发人员。

svn tortoisesvn
1个回答
0
投票

好吧,所以为了开始,我只是想让你知道,当你从主干下面移动一切时,你已经打破了颠覆存储库的“传统”范式。

所以你有一个名为Reliability我认为的存储库。默认目录结构应该是(并且是):

Reliability
|_branches
|_tags
|_trunk
    |_Instrument Drivers

首先,让我解释一下branchestagstrunk目录的用途。

分支 - 此文件夹通常被指定为开发人员修改错误,添加新功能等的目录,以用于您正在处理的任何功能。你基本上制作trunk的副本,做出你需要做的任何改变,一旦它们经过测试和工作,你就将这些变化合并回trunk

tags - 此目录通常用于存储库的稳定版本或快照。例如,假设您正在处理的任何应用程序已正式发布为1.0版。在发布时,开发人员通常会获取存储库的“快照”,并在此目录下标记trunk。理想情况下,你会看到类似的东西

Reliability
|_ tags
    |__ 1.0

其中1.0将是trunk的州/修订版的副本。需要注意的一件重要事情是标签通常永远不会被修改。它们在开发过程中仅用作参考点。例如,如果版本之间出现问题,并且您需要返回以验证某些内容是否有效,则可以将此结帐字符串用作重置点。

trunk - trunk是存储库的活动工作开发分支。这意味着所有开发人员活动的开始和结束。每当您完成分支中的功能处理时,就会将它们合并回主干。您从主干发布。当你有一个新任务时,你将从主干分支。 (是的,您可以直接对主干进行更改,但对于许多在同一存储库上工作的开发人员,必然会出现冲突)。

如果您愿意,我可以详细了解这个结构,随时问您是否有任何其他问题,但这是一般的想法。

现在为您的问题:

  1. 为了将来参考,请不要将SVN移动到任何存储库的根目录。
  2. 我不确定你做了什么,但看起来你在Instrument Drivers文件夹中做了一个SVN Checkout of Reliability(我可以告诉你,因为可靠性/仪器驱动程序/可靠性下面还有另一个.svn文件夹)。
  3. 这更像是一个挑剔,但作为开发人员,你应该知道这一点并记住它。在Windows上,大小写并不重要,但在Unix / Linux上它很重要。确保使用一致的大小写。因此,每当您尝试分支到标签/分支时,请确保使用正确的外壳。
  4. 您通常希望标记整个主干,但如果您只想标记AgilentDAQ目录,只需右键单击AgilentDAQ目录(主干内部)> TortoiseSVN>分支/标记......字段内部路径:您想将其指向tags/AgilentDAQ-1.0

截至目前,您的回购和工作副本实际上是一团糟,但它可以恢复(因此您使用版本控制系统的原因;))。希望这可以帮助指导您整理您的回购。

© www.soinside.com 2019 - 2024. All rights reserved.