【问题标题】:Maintaining individual folder structure with Mercurial使用 Mercurial 维护单个文件夹结构
【发布时间】:2014-05-08 16:56:49
【问题描述】:

我们有一个主要的代码存储库,分为 SQL、Websites 等子文件夹。我们希望为我们的 SSIS 包和类似项目添加一个额外的文件夹,以便我们可以保留备份。但是,它们存储在我们代码存储库外部的文件夹结构中,位于三个单独的服务器中。我们需要在这些包含 SSIS 包的服务器上维护原始文件夹结构。

通常我会将 Mercurial 放在每台托管要添加到存储库中的文件的机器上,下载我们的存储库的副本,然后将文件添加到存储库中。但是,在这种情况下,我将无法在下载副本后将文件移动到 repo 文件夹中,因为需要维护目录结构。

我能想到的唯一替代方案是为 SSIS 包创建第二个存储库,但这仍然会遇到问题,即有三台服务器要添加 SSIS 文件,它们都有自己独特的文件夹结构。这意味着我们必须要么更改三台服务器的目录结构以相互匹配,要么创建三个独立的存储库。

请注意,这里的目的不是为了将这些文件“安装”到服务器上——这些文件已经在预期的服务器上,并且(很少)在需要时在本地进行修改——纯粹是为了备份版本和维护最低限度mercurial 存储库的数量。

在将文件提交到 Mercurial 时,是否可以在本地计算机上维护唯一的单个文件夹结构?

在 cmets 中请求了一个示例文件夹结构:

当前回购结构:

  • 回购
    • 文档
    • 报告
    • SQL
    • 应用
      • 应用 A
      • 应用程序 B

目标是添加一个新文件夹,使其如下所示:

  • 回购
    • 文档
    • SSIS
      • 服务器 1
      • 服务器 2
    • 报告

但是,每台服务器都将文件存储在不同的目录结构中(直接放在基本 C 驱动器中,一个在单独的子目录中,第三个在旧的 Visual Source Safe 目录中),并在外部引用,因此更改它们匹配回购是次优的。

因此问题是 - 有没有办法将文件添加到 mercurial repo 而不将它们放入 repo 的拉取副本中?

【问题讨论】:

  • 3台机器上的文件是一样的,只是存放在不同的文件夹结构吗?
  • 不,它们都是不同的文件。但它们属于同一类型,因此最好将它们分类到存储库中的同一文件夹中,可能带有一个子文件夹,指示它们来自哪个服务器。
  • 恕我直言,如果 repo 的逻辑结构不符合部署的逻辑结构,您需要一个安装工具。 Makefiles 是旧的学校版本,但你需要一些东西。试图让你的版本控制工具成为安装工具总是以泪水告终。
  • 也许您可以发布几个示例目录结构,以及您期望生成的 Mercurial 存储库的样子,这样我们就可以明白您的意思了?正如你所描述的那样,听起来很疯狂。

标签: mercurial


【解决方案1】:

首先,您尝试做的事情对我来说听起来不是一个好主意。我认为您可以使用文件系统中的符号链接来做您想做的事情。

Mercurial 知道如何管理符号链接,您可以为每台机器创建一个符号链接树,以指向不同位置的真实文件 树。

所以,这是可能的,但对我来说,这似乎是一个非常容易出错的过程。我认为 您最好使用安装工具并将“Makefile”或 rake 任务,或...放入您的存储库中。

【讨论】:

    猜你喜欢
    • 2018-12-04
    • 1970-01-01
    • 2019-03-06
    • 2013-07-18
    • 1970-01-01
    • 1970-01-01
    • 2011-09-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多