1

我是 Mercurial 的新手——实际上是源代码管理的新手。

我在 localhost 有项目,即 ~/mamp/htdocs。我想在当地工作。有一点我很困惑:

我应该将存储库保存在与我认为的 htdocs 不同的路径中,因此我创建了“/reps/”文件夹并在此处为每个项目创建文件夹,并将所有文件从 htdocs 项目文件夹复制到 reps。

例如; 项目01

将文件复制~/mamp/htdocs/project01//reps/project01/

但是我在 localhost (htdocs) 工作以更改文件等,那么我如何将这些更改与/reps/

显然我错过了一些关于源代码控制的非常明显的观点。我是不是开始错了?

我在网上找到的所有教程都需要某种基础知识,我猜;他们都没有从零点告诉任何事情!:/

4

3 回答 3

4

最简单的方法,如果您想在其中编辑文件~/mamp/htdocs/project01/(因为我也同意最好有某种暂存区域,您可以在将更改部署到生产服务器之前测试您的更改,但也许它正是您的机器这是暂存区,所以一切都很好:-)) 是:

  1. 安装 Mercurial
  2. cd ~/mamp/htdocs/project01/
  3. hg init
  4. hg add *.html subdir *.css (无论你想管理什么)
  5. hg commit -m"initial version"

完成后,在目录下hg init有一个存储库!使用 hg 无法避免这种情况(但至少):如果您在 project01 中有源代码,则需要在 project01 中有一个 repo。这已经足够了,因为您可以从版本控制中受益,每当您更改文件时,您都可以提交它并给出一条日志消息来告诉系统您做了什么,例如,.hg~/mamp/htdocs/project01/

  • <edit> a.html
  • hg status (会告诉你当前修改的文件)
  • hg diff (会告诉你与保存版本的区别)
  • hg commit -m"what-has-changed-message" (保存一个新版本)

即使不需要在其他地方(例如,在 /reps 中)有另一个 repo,如果你想要,例如将你的数据放在一个备份区域中,那么你可以在 $HOME 中克隆一个:

  • cd /reps
  • hg clone /home/name/mamp/htdocs/project01/ project01

这将获得/reps/project01您所做工作的精确副本:所有更改和所有日志消息。现在,如果您这样做,每当您"hg commit"在主存储库中保存更改时,如果您希望它保持同步,您还需要这样做"cd /reps/project01""hg pull"以便将更改转发到 /reps。

希望它足够简单..

于 2010-03-01T12:19:11.183 回答
1

许多不同的方法/方法。这是我的工作方式:

  1. 开发:我检查(在 mercurials 情况下克隆)我的文件到我的“开发环境”以处理它们,然后提交/推送/等。在同一个地方。

  2. 下一阶段:一旦我认为他们已准备好进行用户测试/生产/或您的下一阶段,那么您可以将您的代码分发为

    2a. 包(可以是最新文件的简单压缩包)或

    2b。将它们检出到下一阶段目录。

  3. 其他用法:一旦您对主要使用场景感到满意,那么您应该考虑其他修订控制用法,如标记分支合并

于 2010-02-06T20:07:19.920 回答
1

您通常应该将您的 VCS(版本控制系统)及其文件与您的生产 Web 服务器环境分开(这是我推断您在提到 htdocs 时所问的问题)。

许多(至少是旧时代的)网络系统都有一个暂存区,您可以在其中从源系统复制材料,您可以使用第二个(不可公开访问的)网络服务器仔细检查。当您确信代码正确时,您可以将其投入生产。

这个场景有三个方面:

  • 具有VCS等的工作(开发)区域;也许可以通过另一个 Web 服务器访问)。
  • 暂存区(无 VCS,无公共访问;测试和验证)。
  • 生产区(无 VCS,公共访问)。

听起来好像您将这三者混为一谈——这是我有限经验中的常见情况。即使您决定不使用暂存区,您也需要将开发系统和生产系统分开。并且在工作区使用了 VCS(Mercurial)。

于 2010-02-06T20:07:44.957 回答