mercurial - 使用 Mercurial 本地克隆进行分支开发?

标签 mercurial branch clone local

我是一名前 SVN 用户,试图找出在 hg 中进行分支开发的最佳方法。我的项目相当新,目前没有分支。我的一个 friend 建议在本地克隆该存储库。那么在其中工作比使用命名分支更好。

所以如果我使用这个模型,工作流程会是:

  • [假设原始项目已克隆到 c:\projects\sk\tracker 中]
  • hg clone https:[存储库的 URL] tracker_featurex [从 c:\projects\sk 发布]
  • 更改为子目录 tracker_featurex
  • 按照正常方式 checkin 和推送
  • [可选,如何从主存储库中提取更改。进入这个?]
  • [最后一步,如何将此克隆的更改返回主干?]

我需要有关此工作流程是否正确以及 [] 大括号中的两个步骤的确切命令是什么的帮助。

非常感谢任何可以提供帮助的人, 弗雷德

最佳答案

我建议您查看 Steve Losh 关于 Mercurial 分支的帖子:http://stevelosh.com/blog/2009/08/a-guide-to-branching-in-mercurial/

他介绍了各种类型的分支(克隆、书签、命名分支、匿名分支)以及为每个分支运行的命令。它们都有优点和缺点。如果您是唯一的开发人员,则本地克隆是可以的,但在需要多个开发人员在一个分支上工作的工作流程中,本地克隆就没那么有用了。克隆普遍比命名分支更好的说法是一个神话。您应该找到适合您的工作流程的分支模型。

更新:

如果您确实想要进行本地克隆,您可以使用 hg Push 从新工作区移动更改(假设您有一个 Projects 文件夹和一个名为 test 的存储库) :

Projects> hg clone test test-new-feature
Projects> cd test-new-feature
Projects/test-new-feature> <do some work>
Projects/test-new-feature> hg commit -m "Work is done."
Projects/test> <Might need a pull/merge here>
Projects/test-new-feature> hg push

如果 test 存储库中有更改,您需要在推送之前拉取/merge 它们。

您还可以从原始工作区hg pull:

Projects> hg clone test test-new-feature
Projects> cd test-new-feature
Projects/test-new-feature> <do some work>
Projects/test-new-feature> hg commit -m "Work is done."
Projects/test-new-feature> cd ../test
Projects/test> hg pull ../test-new-feature

这可能会在 test 存储库中创建多个头,您需要 merge/提交。

Projects/test> hg merge
Projects/test> hg commit -m "Merged in new-feature."

两者都是不错的选择。我可能会建议拉而不是推。对我来说主要的区别是 merge 步骤的位置。我认为从功能存储库中提取数据会使历史更具可读性。

关于mercurial - 使用 Mercurial 本地克隆进行分支开发?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8547782/

相关文章:

由于文件太大,已经删除,git 阻止推送

jQuery 克隆问题

Mercurial "server"

mercurial - 从文件夹中删除 Mercurial 版本控制

git - 如何在 git 中列出包含另一个分支的分支

version-control - Mercurial:如果标签具有相同的名称,如何切换到命名分支?

java - HashMap 的副本

c# - 清除所有事件订阅(克隆链接)

mercurial - Repository Registry 中的 S 符号是什么意思

mercurial - 将 mercurial 存储库转换为具有完整历史记录的子存储库(如 hg log -f)