在 localhost + Mercurial 上使用源代码管理的基本逻辑
-
19-09-2019 - |
题
我是 Mercurial 的新手 - 实际上是源代码管理方面的新手。
我在本地主机上有项目,即 ~/mamp/htdocs。我想在本地工作。有一点我很困惑:
我应该将存储库保存在与我的 htdocs 不同的路径中,因此我创建了“/reps/”文件夹并为此处下的每个项目创建文件夹,并将所有文件从 htdocs 项目文件夹复制到代表。
例如;项目01
复制文件自
~/mamp/htdocs/project01/
到/reps/project01/
但我在本地主机(htdocs)工作以更改文件等。那么我如何将这些变化与 /reps/
?
显然我错过了一些关于源代码控制的非常明显的观点。难道我的开始就错了?
我想我在网上找到的所有教程都需要某种基础知识;他们都没有从零开始讲述任何事情!:/
解决方案
最简单的方法,如果您想编辑文件 ~/mamp/htdocs/project01/
(因为我也同意,最好有某种暂存区域,您可以在将更改部署到生产服务器之前测试您的更改,但也许正是您的计算机就是暂存区域,所以一切都可以:- )) 是为了:
- 安装 Mercurial
cd ~/mamp/htdocs/project01/
hg init
hg add *.html subdir *.css
(无论你想管理什么)hg commit -m"initial version"
完成后 hg init
, ,有一个存储库 .hg
目录下 ~/mamp/htdocs/project01/
!使用 hg 无法(至少)避免这种情况:如果您在project01中有源代码,则需要在project01中有一个存储库。这已经足够了,因为您可以从版本控制中受益,每当您更改文件时,您都可以提交它并给出一条日志消息来告诉系统您做了什么,例如,
<edit> a.html
hg status
(会告诉你当前修改的文件)hg diff
(会告诉你与保存版本的差异)hg commit -m"what-has-changed-message"
(保存新版本)
即使没有必要在其他地方(例如,在 /reps 中)建立另一个存储库,如果您 想要, ,例如要将数据保存在备份区域中,那么您可以将数据克隆到 $HOME 中:
cd /reps
hg clone /home/name/mamp/htdocs/project01/ project01
哪个会进入 /reps/project01
您所做的事情的精确副本:您的所有更改和所有日志消息。现在如果你这样做,无论何时你这样做 "hg commit"
要保存主存储库中的更改,您还需要执行以下操作 "cd /reps/project01"
和 "hg pull"
为了将更改转发到 /reps(如果您希望它保持同步)。
希望它足够简单..
其他提示
有 许多不同的途径/方法. 。我的工作方式如下:
发展: 我将我的文件检查(在 Mercurials 情况下克隆)到我的“开发环境”以对其进行处理,然后提交/推送/等。在同一个地方。
下一阶段: 一旦我认为他们已准备好进行用户测试/生产/或无论您的下一阶段是什么,那么您可以将代码作为
2a.包(可以是最新文件的简单 zip)或
2b.将它们签入下一阶段目录。
其他用途: 一旦您熟悉了主要使用场景,那么您应该考虑其他 版本控制用法如 标记, 分枝 和 合并
通常,您应该将 VCS(版本控制系统)及其文件与生产 Web 服务器环境分开(鉴于提到了 htdocs,我推断您正在询问这个问题)。
许多(至少是旧时代的)网络系统都有一个暂存区域,您可以在其中从源系统复制材料,您可以使用第二个(不可公开访问的)网络服务器仔细检查。当您确信代码正确时,您可以将其投入生产。
该场景包含三个区域:
- 具有VCS等的工作(开发)区域;也许可以通过另一个网络服务器访问)。
- 暂存区(无 VCS,无公共通道;测试和验证)。
- 生产区域(无 VCS,公共访问)。
听起来有点像是您将这三者混为一谈——这是我有限经验中的常见情况。即使您决定不使用临时区域,您也确实需要将开发系统和生产系统分开。工作区域使用VCS(Mercurial)。