0

我不打算讨论如何为 Drupal 多站点安装设置 mercurial,但我遇到了一些令我难以置信的事情。我有一个 drupal 多站点安装,我正在尝试设置版本控制。我所做的是在 Drupal Root 中使用 hg init,使用忽略 drupal_root/sites/ 的 .hgignore。这就是我的 .hgignore 中的内容,它似乎工作正常:

# Glob syntax
syntax: glob
# Everything in sites
sites/*

这工作得很好,因为 mercurial 会找到除站点文件夹之外的所有其他内容。现在,在站点文件夹中,结构如下所示:

sites/
    sites/all
    sites/default
    sites/domain1.com
    sites/domain2.com

我的问题是,当我在站点内执行 hg status 时,mercurial 将找不到站点/所有/模块。我尝试了 .hgignore 的多种排列,因为我想忽略站点/domain1.com/files,但似乎没有任何效果。我什至删除了 repo,并在没有任何 .hgignore 的情况下重新开始。站点/所有/库和站点/所有/脚本都显示得很好。

父目录中的 .hgignore 可能与它有关吗?

更新:我刚刚完全删除了子存储库(我知道它实际上不是子存储库,但我在这里受到限制)删除了 drupal 根目录中的存储库,并开始将整个安装视为单个存储库。同样的事情,mercurial 只是找不到 root/sites/all/modules。

更新: @Ry4an - drupal 根目录中的行为是正确的。我正在尝试模拟子存储库,因为我坚持使用 Hg 1.3,它并没有真正实现它们。因此,我的目录结构如下所示:

drupal_root/
    .hg/
    modules/
    includes/
    themes/
    sites/
        .hg/
        all/
        default/
        domain1.com/
        domain2.com/

所以,我确实希望 drupal_root 中的存储库忽略 drupal_root/sites 下的所有内容,但我在 drupal_root/sites 中有第二个存储库应该处理那里的所有内容。那是没有找到一切的回购。

4

3 回答 3

0
  • If you task is "ignore all, except one dir"
  • If you can write (and test) regexps

you can consult with this question and accepted answer in order to adopt regexp to your conditions

Another (slightly more inaccurate) solution can be

  • leave current "ignore all" pattern
  • add all files in sites/all/modules into repo by hand (hgignore ignore only untracked objects)
  • don't forget all new files, added later into modules, add explicitly to Mercurial (they will be ignored by rule)
于 2012-02-10T05:16:30.580 回答
0

您所看到的是我所期望的行为。这个全局规则:

syntax: glob
# Everything in sites
sites/*

忽略站点中的所有内容,包括“ sites/all”,因此 Mercurial 根本不会向下看“ all”,因此它不会看到“ sites/all/modules”。

如果您提供完整的文件列表及其路径,并用您想要忽略的文件和不想忽略的文件进行注释,我相信有人可以帮助您制定正确的规则,但您的问题并不完全清楚.

于 2012-02-10T02:16:54.707 回答
0

嗯,我觉得自己像个白痴。问题是在 drupal_root/sites/all/modules 中已经有一个存储库。我不记得把它放在那里,但似乎 mercurial 忽略了任何已经包含 .hg 目录的目录。感谢大家的帮助。

于 2012-02-10T14:46:34.387 回答