mercurial repo中的文件夹结构?

时间:2010-04-16 05:23:54

标签: svn mercurial

我刚刚从svn切换到mercurial并阅读了一些关于它的教程 我还有一些困惑,希望你能帮助我理清。
我想知道我是否理解了mercurial repo中的文件夹结构 在svn repo中,我通常有这些文件夹:

的svn:

branches (branches/chat, branches/new_login etc)
tags (version1.0, version2.0 etc)
sandbox
trunk

分支实际上应该是mercurial中原始/中央仓库的另一个克隆吗? 当我阅读手册时,似乎就是这样。

标签只是一个命名标识符,但是你想在创建标签时克隆原始/中央仓库?

沙箱怎么样?那应该是另一个克隆吗?

所以基本上你只需要在回购中拥有trunk文件夹中的所有文件夹/文件?

水银:

central repo: projects folders/files (not in any parentfolder)
tag repo: cloned from central repo at a given moment for release 
  (version1.0, version2.0 etc)
branch repo: cloned from central repo for adding features (chat, new_login etc)
sandbox repo: experimental repo (could be pushed to central repo, or just deleted)

这是正确的吗?

3 个答案:

答案 0 :(得分:4)

我不完全确定我理解你的所有问题,我认为你只是对某些术语感到困惑,但我会对它们进行一些刺激。

  

分支实际上应该是mercurial中原始/中央仓库的另一个克隆吗?

是的,分支只是一个从特定版本开始的克隆。如果您在一个克隆中进行不同的更改,那么基本上它与“克隆”相比变为“分支”。

  

标签只是一个命名标识符,但是你想在创建标签时克隆原始/中央仓库?

标记只是一种更人性化的方式来记住特定修订版本,即存储库历史记录中的某个点。您可以将某些内容标记为“版本0.8”,这样您就不必记住在版本427中发布了0.8版本。没有理由将克隆作为其中的一部分,除非您需要一个分支(例如,集成一个分支)运行版本0.8的人的错误修复,也没有向他们发布主干代码)。如果有必要,您可以随后从标记中创建克隆,在创建时不必执行此操作。

  

沙箱怎么样?那应该是另一个克隆吗?

假设“沙盒”只是“让我玩的地方”,那只是一个分支。所以最初,它是一个克隆,是的。

  

所以基本上你只需要在回购中拥有trunk文件夹中的所有文件夹/文件?

是的,分支的所有其他概念,“沙盒”等都是由Mercurial的功能处理的,而不是像你在subversion中使用的那样的文件。

您是否阅读过The Mercurial Book?我发现它非常有助于理解这些概念。

答案 1 :(得分:4)

要记住的主要事情是分支不再是像Mercurial(或Git)这样的DVCS中的目录。

Mercurial提供4个分支模型(此SO questionthis article中的详细信息):

  • 克隆
  • 书签
  • 命名分支
  • 匿名分支

ConvertExtension默认使用名为branch(但您可以选择使用克隆或标记的分支)

尝试一些SVN to Mercurial Conversion cases,看看哪种情况最适合你的情况 一旦在一个 Mercurial仓库中导入了SVN仓库(其中包含了命名分支),您仍然可以在单独的仓库中克隆您需要的任何分支:

hg clone -r <branch-head-rev> <repo> <new-repo>

答案 2 :(得分:1)

mercurial有四种分支模式:匿名,克隆,命名和(带扩展名)书签。

根据您要执行的操作(启动并行功能开发,在沙箱中进行试验等),您可以选择其中一个。 Mercurial本身不会强加任何一种方法或工作流程,只提供您可供选择的机制。

article解释得更好。它让我更清楚。