我有一个要部署到客户端 DEV 和 UAT 环境的网站,该网站是 mercurial repo 的一部分 - 它位于与 .hg 文件夹相同级别的网站文件夹中。我知道我可以推送整个存储库,但宁愿只推送网站文件夹,这样客户端就没有其他文件和文件夹。
回购看起来像这样:
- 项目根
- .hg
- 数据库(SQL 源代码控制使用它)
- 文档(所有规格、pdf、艺术作品等)
- Lib (Nuget 之前的第 3 方 dll)
- 包(Nuget 的东西)
- 网站 (这是我要部署的唯一区域)
- .hgignore
- 项目.sln
编辑: 客户端服务器没有直接连接到互联网,我对它们的访问是通过 vpn 然后 RDP。目前要部署我需要压缩站点的任何更改,将其放在共享的 ftp 服务器上,然后等待最多 3 天,以便将文件复制到服务器。规则已配置,因此我可以通过此连接使用 Mercurial。
编辑 2 我已经设法从网站文件夹创建了一个子存储库,方法是忘记网站文件夹及其所有内容,提交更改然后放回文件,创建一个存储库然后回显 .hgsub 文件。在本地这对我有用,我可以从网站回购克隆而无需获取任何其他文件夹。但是,即使我在我们的 repo 服务器上重复该过程,我也无法使用此版本的 repo。当我尝试将托管版本克隆到我的本地工作副本时,我收到 404 错误,但我可以在托管服务器上克隆托管版本。
我将不胜感激一些关于如何实现我的目标的分步说明(如果您愿意,可以提供傻瓜指南);这是为了能够仅将网站文件夹推送到客户端服务器。回购的主副本在我们的回购服务器上,我有一个本地克隆,需要能够从我的副本中推出版本。
编辑 3 结果是我将文件夹转换为子存储库,如http://mercurial.aragost.com/kick-start/en/subrepositories/#converting-folder-into-a-subrepository中所述的问题是在 2.1.0 之后的版本中,转换命令已损坏,并且在 2.3.1 中仍然损坏。在我弄清楚并回滚到那个版本的 TortoiseHg 之后,我能够将文件夹转换为子存储库,在存储库的根目录中,我有 .hgsub,它显示网站 = 网站。我能够在本地使用它,提交整个 repo,subrepo,克隆完整 repo 或 subrepo(这是我想要的),但是我无法从我们的主 repo 服务器上使用它。
我把整个东西压缩起来,用 ftp 传送到我们的远程主 repo 服务器,然后设置它,这样我就可以从中克隆了。直接在服务器上这工作正常(hg clone --verbose -- C:\Repositories\EM 。),但是当我尝试从服务器克隆到我的本地开发机器时(hg clone --verbose -- https:/ /myserver.com/hg/EM/。)它失败并显示“HTTP错误:404(未找到)”。
requesting all changes
adding changesets
adding manifests
adding file changes
added 628 changesets with 6002 changes to 4326 files
updating to branch default
resolving manifests
calling hook preupdate.eol: <function preupdate at 0x00000000035204A8>
getting .hgignore
getting .hgsub
getting .hgsubstate
HTTP Error: 404 (Not Found)
[command returned code 255 Fri Apr 20 10:51:23 2012]
我不知道问题是什么,文件在那里,为什么是 404?