在一个 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 的建议所做的事情的快速概述。
- 使用 "Clone/New" 选项从
app
、bootstrap
和 Project
文件夹创建了单独的新存储库(我确定跟踪 vendor
).
- 提交了每个存储库的内容。
- 在
inetpub
之外创建了一个新的 Project_Repository
文件夹
- 从
Project_Repository
文件夹创建了一个新的存储库
- 打开 Project_Repository 选项卡,从存储库菜单中选择 "Add Subdirectory",然后选择
app
目录。
- 对
bootstrap
和 Project
重复 4.
这样做之后,我在 Project_Repository 文件夹中获得了所有 3 个目录内容的当前副本,以及相应的 .hg 文件。我很乐观,这也适用于 Project2。
更新:我错过了目录结构中的一层(具体来说是 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 的建议所做的事情的快速概述。
- 使用 "Clone/New" 选项从
app
、bootstrap
和Project
文件夹创建了单独的新存储库(我确定跟踪vendor
). - 提交了每个存储库的内容。
- 在
inetpub
之外创建了一个新的 - 从
Project_Repository
文件夹创建了一个新的存储库 - 打开 Project_Repository 选项卡,从存储库菜单中选择 "Add Subdirectory",然后选择
app
目录。 - 对
bootstrap
和Project
重复 4.
Project_Repository
文件夹
这样做之后,我在 Project_Repository 文件夹中获得了所有 3 个目录内容的当前副本,以及相应的 .hg 文件。我很乐观,这也适用于 Project2。