【问题标题】:Rearranging project after SVN checkoutSVN结帐后重新排列项目
【发布时间】:2009-07-21 04:50:59
【问题描述】:

这可能是SVN 101,但我不得不问:

我正在开发一个目录结构有点蹩脚的项目。为了让它在我最喜欢的 IDE 中构建和运行,在我签出项目后,我将整个项目复制到不同的目录,然后根据我(和我的 IDE)的喜好移动。

所以我的基本问题是:我可以安全地编辑/更新/合并与存储库目录结构不同的目录结构中的文件吗?

例如,如果我检查 /home/me/dev/proj/index.jsp,然后将其(及其 .svn 元数据)复制到 /home/me/dev/better-proj/web/index.jsp,那么 index.jsp 驻留在不同目录中的事实就其 SVN 状态而言应该没问题,对吧?错误的?还是我只是自找麻烦?

【问题讨论】:

    标签: svn


    【解决方案1】:

    你是在自找麻烦。很多麻烦。如果您尝试更新根目录,您将因此而彻底发疯(很多障碍,“恢复”文件等)。另外,您如何复制单个文件的元数据? SVN 元数据位于每个目录的 .svn 文件夹中。您可能能够更新和提交未更改的单个目录(即,目录本身已被移动或重命名,但其所有子目录与 repo 中的完全相同)。再说一次,你可能不会。很危险。

    您应该自定义 IDE 以匹配项目的预期使用/构建方式,或者重新排列项目以匹配其需要使用/构建的方式。在后一种情况下,您需要调查svn move 子命令(即svn help move)。 SVN 的 GUI 可能也会有所帮助,例如 TortoiseSVN(适用于 Windows),如果您要进行大量重新排列。

    【讨论】:

      【解决方案2】:

      如果目标仍在您的工作副本中,请使用svn move (documentation)。无论哪种方式,您都永远不想自己操作 .svn 元数据,因为这会导致冲突和令人头疼的问题。

      如果目标是另一个存储库的工作副本,您需要在源存储库上执行 svn export (documentation),然后在目标存储库上执行 svn add (documentation)。

      也值得一读:Subversion Basic Work Cycle

      【讨论】:

        【解决方案3】:

        因此,您的项目结构与团队中的其他人不同?我不确定它是如何诚实地工作的。我会与所有相关人员交谈,并使用 svn:move 将所有具有历史记录的文件放在大家都同意的地方。

        【讨论】:

          【解决方案4】:

          如果您尝试将版本控制目录放在不是其父目录的版本控制目录中,您会遇到这种方法的问题。除此之外,除了与脱节的工作副本相关的文书工作令人头疼之外,您不应该遇到任何其他问题。

          您是否有不能使用svn move 重新组织存储库中的项目的原因?这样你就不会丢失任何历史,而且你会让你的生活更轻松。

          【讨论】:

            【解决方案5】:

            我误解了你的问题。我以为你在寻找类似 SVN move 命令的东西。 (see these questions)

            但这显然不是您想要的。

            我认为您在提议的工作流程中遇到问题。这真的不是一个好主意。为什么不直接在 svn 中移动工作项?

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2016-12-30
              • 2015-08-26
              • 2014-11-26
              • 2013-01-09
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多