【问题标题】:Multiple Eclipse projects in one Mercurial repository一个 Mercurial 存储库中的多个 Eclipse 项目
【发布时间】:2011-01-21 18:53:30
【问题描述】:

我有许多 Eclipse 项目,我想将它们放在两个单独的 hg 存储库中。

我通过首先使用 TortouiseHg 创建两个 hg 存储库并添加,首先将我的项目提交到每个存储库来设法做到这一点。通过这样做,我现在有两个 hg 存储库,每个存储库中有两个项目。

接下来,我使用 MercurialEclipse 在 Eclipse 中克隆该存储库。项目在 Eclipse 中按预期显示。

示例 1:

Eclipse workspace
               |
               |--Project 1
               |--Project 2
               |--Project 3
               |--Project 4

但是如果我查看目录结构,它看起来像这样:

示例 2:

  c:-- 
     |
     |-workspace
               |
               hgRepository1
               |           |--.hg
               |           |--Project 1
               |           |--Project 2
               |
               |
               hgRepository2
                           |--.hg
                           |--Project 3
                           |--Project 4

当我希望它看起来像这样时。

示例 3:

  c:-- 
     |
     |-workspace
               |--.hg
               |--Project 1
               |--Project 2
               |--Project 3
               |--Project 4

是否有可能拥有一个 Mercurial 存储库并以某种方式克隆它并使项目直接出现在工作区目录下,而不是在子目录中?

【问题讨论】:

  • 您不能让 1 个 .hg 目录包含来自多个存储库的数据。这 4 个项目真的只是同一个项目的一部分,还是您以某种方式组合的不同项目?
  • 我可能还不清楚......但它是一个包含多个 Eclipse 项目的 hg 存储库。它们不是嵌套的 hg 存储库。

标签: eclipse mercurial


【解决方案1】:

您不应从 Eclipse 工作区保存项目,或在 Eclipse 工作区中恢复它们。
这些项目(.project.classpathother project specific resources)应该位于它们自己的目录中,位于 Eclipse 工作区之外(然后是 imported into the workspace)。

这样,任何目录结构都可以将不同的项目导入新的 Eclipse 工作区。

【讨论】:

  • 两个问题,如果我理解正确的话。假设我没有将 mercurial 存储库导入/克隆到工作区中。我在其他地方做,然后导入到 Eclipse 中。这仍然不能解决项目本身位于目录树中不同位置的事实。它们仍然会像示例 2 一样显示,但显然不在工作区目录中。
  • @stuff22:想法是它们可以出现在任何他们想要的地方:一旦 repo 被克隆(无论它必须遵循什么内部结构),你将永远能够然后 将上述项目导入 Eclipse 工作区。您不必为您的项目遵循任何特定的工作空间结构。
【解决方案2】:

我自己也遇到了这个确切的问题,但解决方案并不是很明显。这篇博文包含分步说明,展示了如何实现您所追求的目标:workflow: create and init multi-project repositories with HgEclipse (Mercurial)

简而言之,您想要:

  • 打开 Mercurial 视图并在 /path/to/workspace/projects-folder 中创建一个新存储库
  • 根据需要创建许多新项目,每个项目都应在 /path/to/workspace/projects-folder/project name 的(非默认)位置创建。

您会发现最终在 Eclipse 中得到了您想要的布局,并且所有项目都将共享位于项目文件夹中的存储库。

【讨论】:

  • 感谢您的链接。它确实有效,并且使用最新的 HgEclipse 似乎不需要执行原始帖子中描述的步骤 2.2 和 2.3。只需在同一存储库下的非默认位置添加项目即可开箱即用。
【解决方案3】:

我不太明白。您不能将 repo 克隆到其内部。为什么不能直接制作 Project1 和 Project2 的硬拷贝,创建 3 和 4?

【讨论】:

  • 我不会克隆自己内部的存储库。 .hg 只是指示哪些文件夹是 mercurial 存储库(或者我希望它们在哪里)
  • 我还是不明白。为什么不使用 1 hg repo 制作所需的结构并将现有项目导入 eclipse 工作区?
  • 无论如何,我想我想说的和 VonC 说的一样。做任何你想做的结构,然后在eclipse中导入每个项目。 .project、.classpath 和其他文件将位于您的 Eclipse 工作区中(在 hg 存储库之外),但您将通过 eclipse 从您的 hg 存储库编辑源文件。
【解决方案4】:

我知道有些人不喜欢我的解决方案(而且我知道这个问题被问到已经有一段时间了)但是这里是:

  1. 照常创建工作区
  2. 从 Eclipse 中退出(不确定是否有必要,但这样做没有害处)
  3. 使用 hg 直接在创建的工作区目录中克隆 Mercurial 存储库(如果存储库的名称与工作区相同,这会有所帮助)
  4. 返回 Eclipse 并为每个子目录创建一个新项目(在您的示例中,它将是项目 1、项目 2 等)。它会警告您该目录已经存在但没关系。
  5. MercurialEclipse 应将每个项目识别为受 Mercurial 版本控制

这已在 Linux 上的 Eclipse 中的 CDT 中成功测试。我建议您将 Eclipse 创建的文件放入 .hgignore 以管理您的项目。

我希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-13
    • 2011-11-16
    相关资源
    最近更新 更多