使用Mercurial维护单个文件夹结构

时间:2014-05-08 16:56:50

标签: mercurial

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

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

我能想到的唯一选择是为SSIS包创建第二个存储库,但这仍然会遇到这样的问题:有三个服务器要添加SSIS文件,所有这些服务器都有自己独特的文件夹结构。这意味着我们必须更改三个服务器的目录结构以相互匹配,或者创建三个单独的存储库。

请注意,此处的目标不适用于"安装"这些文件到服务器 - 文件已经在预期的服务器上,并且在需要时很少在本地修改 - 它纯粹用于备份版本和维护最少数量的mercurial存储库。

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

评论中请求了一个示例文件夹结构:

当前的回购结构:

  • 回购
    • 文档
    • 报告
    • SQL
    • 应用
      • 申请A
      • 申请B

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

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

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

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

1 个答案:

答案 0 :(得分:2)

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

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

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