代码之家  ›  专栏  ›  技术社区  ›  shmicah

生成代码标记后的文件结构混乱

  •  0
  • shmicah  · 技术社区  · 6 年前

    我对SVN比较陌生,但不是一个完全的初学者。最近,我试图为我正在进行的一个项目重组我的本地副本。然后我尝试为我的项目创建一个标记,现在我很困惑,因为在比较我的最新本地副本和我在Repo浏览器中看到的内容时,我的文件位置/命名不一致。

    文件“结构”:

    我的根文件夹在Repo和本地上都称为可靠性。我有可靠性/行李箱/分支/Repo中的标签——但直到最近,所有东西都一直保存在主干中,并在主干中进行更新/提交。

    在“Trunk”中,我有一个文件夹“Instrument Drivers”,其中包含我开发的各种仪器驱动程序的子文件夹。我决定将该文件夹从主干中移到顶级根文件夹,然后将项目分支回主干中,以便在主干中有一个开发副本,在顶级中有一个“随时可用的副本”。我这样做是因为我觉得这是使用SVN更正确的方法。总之,我提出:

    /可靠性/行李箱/仪器驱动器/来源/AgilentDAQ

    /可靠性/仪器驱动程序/来源/AgilentDAQ

    这很好。接下来,我想为我当前的一个仪器驱动程序(…/AgilentDAQ)为1.0创建一个“标签”,并将其作为/Reliability/Tags/AgilentDAQ-1.0放在/Reliability/Tags文件夹中

    这似乎是可行的,但后来我开始收到所有这些冲突和关于重复文件和工作目录问题的警报(我可能不小心将我的工作副本设置为标记)。我花了很多时间试图在假期前把它清理干净,但我不能百分之百确定我做了什么改变(我已经查看了日志,有很多东西需要消化)。重点是,我现在看到的让我困惑,我不知道是因为我真的把事情搞砸了,还是因为标签就是这样工作的。

    为什么我的本地存储库和repo浏览器显示不同的结构?

    RepoBroswer中的一切看起来都很好,但我在本地有一个新文件夹,看起来就是标签。但它与源版本存在于同一文件级别,但位于与我的根目录同名的新子文件夹下。SVN是否将标记文件物理存储在其标记的主存储库中?

    Here's pictures ,但这是我目前看到的情况的总结。

    在RepoBrowser中,我看到了我的期望: /可靠性/仪器驱动程序/来源/AgilentDAQ( 预期 ) /可靠性/标签/AgilentDAQ-1.0( 预期 )

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

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

    1 回复  |  直到 6 年前
        1
  •  0
  •   Chris    6 年前

    好的,首先,我只想让你们知道,当你们把所有东西从主干下面移走的时候,你们已经打破了颠覆存储库的“传统”范式。

    所以您有一个名为 可靠性 我想是吧。默认目录结构应为(并且是):

    Reliability
    |_branches
    |_tags
    |_trunk
        |_Instrument Drivers
    

    首先,让我解释一下 branches , tags trunk 目录。

    分支机构 -此文件夹通常被指定为开发人员的目录,用于修复bug、向您正在使用的任何功能添加新功能等。基本上是复制 大旅行箱 ,进行任何需要进行的更改,一旦这些更改经过测试并正常工作,就可以将这些更改合并回 大旅行箱 .

    标签 -此目录通常用于存储库的稳定版本或快照。例如,假设您正在使用的任何应用程序都已正式发布为1.0版。在发布时,开发人员通常会拍摄存储库的“快照”,并标记 大旅行箱 在此目录下。理想情况下,你会看到

    Reliability
    |_ tags
        |__ 1.0
    

    哪里 1 将是 大旅行箱 . 需要注意的一点是,标记通常是 从不 待修改。它们只是在开发过程中用作参考点。例如,如果版本之间出现中断,您需要返回以验证是否正常工作,您可以使用此签出字符串作为重置点。

    大旅行箱 -主干是存储库的活动工作开发分支。它是所有开发人员活动开始和结束的地方。每当您在分支中完成对功能的处理时,都会将它们合并回主干中。你从后备箱中释放。当您有新任务时,您将分支 从…起 行李箱。(是的,您可以直接对主干进行更改,但对于在同一存储库上工作的许多开发人员来说,冲突不可避免)。

    如果您愿意,我可以更详细地介绍这个结构,如果您还有其他问题,请随时提问,但这是总体思路。

    现在,请关注您的问题:

    1. 为便于将来参考,请勿将项目移动到任何 存储库。

    2. 我不太清楚你做了什么,但看起来你做了 SVN可靠性检验 在…内 仪器驱动程序文件夹 (我看得出来,因为下面还有一个.svn文件夹 可靠性/仪器驱动器/可靠性)。

    3. 这更像是吹毛求疵,但作为一名开发人员,您应该知道 请记住这一点。在Windows上,大写并不重要, 但在Unix/Linux上,这很重要。确保您使用的是一致的 资本化。因此,每当您尝试分支到标记/分支时 确保使用正确的外壳。

    4. 典型的 想要标记整个主干,但如果您想立即标记AgilentDAQ目录,只需右键单击AgilentDAQ目录(位于 大旅行箱 )> 乌龟Vn &燃气轮机; 分支/标记。。。 在球场内部 至路径 :您要将其指向 tags/AgilentDAQ-1.0 .

    因此,到目前为止,您的回购和工作副本有点混乱,但它可以恢复(因此您使用的是版本控制系统;)。希望这能帮助你整理你的回购协议。