0

可能重复:
Mercurial 简介

我最近的变化是远程的。我最后做对了吗?

$ hg pull
warning: code.google.com certificate with fingerprint d2:33:75:af:62:64:5b:75:dc:3f:bf:22:30:b6:27:13:ff:3f:90:fd not verified (check hostfingerprints or web.cacerts config setting)
pulling from https://niklasro@code.google.com/p/montao/
searching for changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files
(run 'hg update' to get a working copy)
ubuntu@ubuntu:/media/Lexar/montao$ hg update
1 files updated, 0 files merged, 0 files removed, 0 files unresolved

所以我不应该合并,我应该拉?

为什么没有两个开发人员如何协作的简单示例?

例如

Time        Developer 1              Developer  2
              hg clone                 hg clone
              editing
              hg commit
              hg push
                                       editing
                                       hg pull
                                       hg commit
                                       hg push

像上面这样的 2 个开发人员之间的工作流示例可以更容易地理解什么是 hg pull、merg、update,而不是让我混淆 pull 和 merge。

例如,当有来自另一个地方的变更集时,我现在如何知道如何不获得 2 个正面。

我可能需要一个示例 2 个开发人员如何协作以及我如何进行远程更改。

4

3 回答 3

5

基本概念

取将来自其他开发人员的新变更集带入您自己的存储库。这可能会引入一个新的负责人,如果确实如此,它会这么说。

合并将两个头合二为一。如果头数不超过 1,则不需要合并。

更新在修订之间切换,例如从您当前的工作修订到您刚刚拉入的修订。如果您有本地未提交的更改,更新将尝试通过执行未跟踪的合并来合并它们。

在 pull 之后是更新还是合并取决于 pull 是否引入了新的 head。

简单的两个开发人员工作流程

两个开发人员直接合作时最简单的基本工作流程是:

  1. hg pull otherdev
  2. hg update或者hg merge
  3. 编辑
  4. hg commit -m "testing..."

pull + update(简写:)pull -u确保您从最新版本的代码开始。如果您的同事在您上次拉取和提交之间进行了任何更改,这将告诉您它引入了一个新的头部,您需要合并。

您不必总是拉,有时也可以跳过它,然后编辑,提交,编辑,提交(...)一段时间;如果您正在做某事并且不想破坏您的流程,只需等待拉动和合并,直到您准备好(但我每天至少会这样做一次)。

一般来说,您不应该将更改推送给您的同事;这样,您每个人都可以控制存储库中的内容,并且您不会被突然出现的新变更集弄糊涂。

注意:通过在第 3 步和第 4 步之间进行更新,您可以减少创建分歧分支的可能性,在 SVN 中,这是您被迫做的事情。但是,我建议不要使用这种做法,因为如果存在冲突,它会使您的更改处于损坏状态,并且在您修复它之前您将无法提交它。DVCS 的一大优势就是您可以避免这种情况并在不必费心合并之前安全地提交您的工作代码。

改进的两个开发人员工作流程

为了改进这个工作流程,我实际上建议为您和您的同事创建第三个共享存储库,以用作中间人,而不是直接从彼此那里拉取。

This introduces an additional push step, but the nice thing about this is that you can make a bunch of commits and decide by yourself when your changes are ready to share with your colleague, by pushing. This reduces time needed for testing and the odds of wasting your colleague’s time because you accidentally broke something and he pulled it in.

于 2011-10-25T11:11:10.490 回答
1

如果你输入hg help pull

表明:

pull changes from the specified source

    Pull changes from a remote repository to a local one.

所以是 RemoteRepository->Local Repository 操作。与您的本地工作目录无关。

如果你输入'hg help merge'

merge working directory with another revision

    The current working directory is updated with all changes made in the requested revision since the last common predecessor revision.

它发生在您的本地存储库和本地工作副本之间。与远程回购无关。

如果您要求示例/手册,网上有很多。我在这里列出一些,希望对你有帮助。

http://hgbook.red-bean.com/read/a-tour-of-mercurial-merging-work.html
http://www.rutherfurd.net/2010/apr/22/merging-mercurial-example/
https ://www.mercurial-scm.org/wiki/TutorialMerge

于 2011-10-25T10:59:17.917 回答
1

For great in-depth examples of how to use Mercurial and a few other VCS's check out Eric Sink's Version Control by Example or Joel Spolsky's hginit.com (Does my answer get an automatic downvote for listing Joel second?)

于 2011-10-25T12:01:08.890 回答