在一个 inetpub 目录中使用 Mercurial 管理两个项目

Managing two projects with Mercurial in one inetpub directory

更新:我错过了目录结构中的一层(具体来说是 laravel 父文件夹)。我好尴尬...

我有一个 Mercurial 存储库跟踪我在其下构建的 Laravel 项目 IIS 6,目录结构如下:

inetpub
|--laravel
   |--app
   |--bootstrap
   |--vendor
|--wwwroot
   |--Project
   |--OtherScript (set to ignore in .hgignore)

我现在想开始第二个项目,并相应地修改了目录结构:

inetpub
|--laravel
   |--app
   |--app2
   |--bootstrap
   |--bootstrap2
   |--vendor
|--wwwroot
   |--Project
   |--Project2
   |--OtherScript (set to ignore in .hgignore)

我已将“2”个文件夹添加到原始存储库的 .hgignore 中,但我无法弄清楚如何设置忽略原始项目文件夹的单独存储库,并且只会跟踪2秒。我想我可以创建一个新的存储库,覆盖使用不同的 .hgignore 文件的 inetpub,但是当我创建存储库时,它会自动引用为第一个存储库建立的 .hgignore 文件。我大概遗漏了什么,但我不确定是什么。我怎样才能使这项工作?该项目刚刚开始,因此如果有必要,重组是完全可行的。

驻留在同一目录中的两个存储库不起作用。 不过,有几个选项可能适合您的需要:

a) 使用父目录,在该目录中您可以在子目录中组织项目。这通常是推荐的 mercurial 标准方法;每个子目录都成为一个独立的存储库。父目录不会包含太多内容,但如果需要,也可以将其作为一个单独的存储库。

b) 为不同的项目使用分支。在项目之间切换则需要在项目中切换分支。

c) 您可以扩展选项 (a) 并考虑使用子存储库或来宾存储库。它们有一些粗糙的边缘,因此需要仔细考虑它们的使用。您也可以从选项 (a) 开始,并在以后的任何时间将其转换为选项 (c)。请参阅 Subrepository 以及 'Alternatives' 部分中的链接。

为了帮助其他人摸索着更好地理解如何使用 Sourcetree 做到这一点,这里是我根据 planemaker 的建议所做的事情的快速概述。

  1. 使用 "Clone/New" 选项从 appbootstrapProject 文件夹创建了单独的新存储库(我确定跟踪 vendor).
  2. 提交了每个存储库的内容。
  3. inetpub
  4. 之外创建了一个新的 Project_Repository 文件夹
  5. Project_Repository 文件夹创建了一个新的存储库
  6. 打开 Project_Repository 选项卡,从存储库菜单中选择 "Add Subdirectory",然后选择 app 目录。
  7. bootstrapProject
  8. 重复 4.

这样做之后,我在 Project_Repository 文件夹中获得了所有 3 个目录内容的当前副本,以及相应的 .hg 文件。我很乐观,这也适用于 Project2。