Visual studio 如何使用Mercurial将我想要的版本代码导入Visual Studio

Visual studio 如何使用Mercurial将我想要的版本代码导入Visual Studio,visual-studio,version-control,mercurial,Visual Studio,Version Control,Mercurial,我会首先说,这可能是一个愚蠢的问题,所以如果我盯着答案看,但看不见,我会道歉 我过去使用VCS主要是作为一种方法,允许我在出现问题时恢复代码。我总是有一个单一的石灰的发展。然而,在发布和启动下一个版本时,我遇到了通常的麻烦——处理bug。所以这次我决定使用分支(forking或其他最好的名称)。我是一个孤独的开发者,所以我是唯一一个与Repository合作的人。我的场景很简单。我想在发布时创建一个分支,这样我就有一行代码用于发布代码,一行代码用于测试版。然后我就可以在测试版上愉快地工作了。现在

我会首先说,这可能是一个愚蠢的问题,所以如果我盯着答案看,但看不见,我会道歉

我过去使用VCS主要是作为一种方法,允许我在出现问题时恢复代码。我总是有一个单一的石灰的发展。然而,在发布和启动下一个版本时,我遇到了通常的麻烦——处理bug。所以这次我决定使用分支(forking或其他最好的名称)。我是一个孤独的开发者,所以我是唯一一个与Repository合作的人。我的场景很简单。我想在发布时创建一个分支,这样我就有一行代码用于发布代码,一行代码用于测试版。然后我就可以在测试版上愉快地工作了。现在出现了一个bug,我需要回到发布的最后一次提交

我的问题是什么是在IDE中恢复代码以进行处理的最佳方法

我读过Mercurial的一个简单方法是克隆存储库,包括工作目录。这将给我两个代码库的副本,我想我可以选择哪一个加载到IDE中。然后,我会使用推送或拉送的方式将bug修复从发布版本复制到beta版本(我想)

我想一定有另一种方法没有克隆。我该怎么做?我可以猜测是否会恢复到发布代码的最后一次提交。然后我假设将解决方案加载到IDE中会得到这样的结果。我不确定代码完成后,我会从那里走到哪里

为了记录在案,我看了很多不同的VCS——我过去用过SVN,但想用DVCS。我研究了Git、Bazaar、Mercurial和准确性(过去使用CodeCoop)。你可能认为另一种工具更适合我的需要。但是,在尝试了其他工具之后,我发现我能够理解Mercurial的工作方式和GUI工具,例如带有工作台的OrtoiseHG和HgSccPackage()的吸引力

这里有很多很好的文档和链接,我也读过关于分支的不同方法,包括使用书签等等,但它们似乎主要针对多成员团队——这当然是有意义的


提前非常感谢

你在混合一些概念,我想你有SVN背景吧

为了回答您的问题,若要“恢复IDE中的代码”,您需要“更新”到以前的版本。但这是考虑到您已经克隆了存储库。你的问题是关于如何克隆?正如你所问的那样,没有克隆就没有别的办法了。克隆是建立本地HG存储库的第一步。克隆后,您可以提交并推送更改,也可以拉送并更新

为了进一步扩展答案,并考虑到您将要使用Mercurial,以下是您应该做的:

  • 阅读本文:-伟大的HG(教程)由乔尔斯波尔斯基自己!HG及其概念简介。你需要很好地理解这一点,因为现在你正在做很多猜测、假设和思考:)HG/Git与SVN不同,在乞讨中,这些概念可能很难理解和习惯

  • 对于您的项目和您的问题,有一个名为“dev”或“trunk”或“version X”等的分支,您将在其中提交所有新的更改

  • 有一个名为“live”等的分支,它将代表当前的“live”版本。这样,当您需要及时恢复到实时版本并对其进行快速修复时,您将“更新”到“实时”分支的尖端,放弃所有本地更改(当然,在您提交到trunk之后)

  • 当将一个版本置于活动状态时,您需要(假设所有更改都已提交!):更新到活动分支,然后将版本X合并到本地(本地处于活动状态)。这将把您的versionX分支包含到live中,这正是您目前所需要的。然后,要么更新回版本X branch,要么创建一个新的分支版本X+1。这将处理版本并保持分支分离

  • 因为您使用的是VS-install。汞源控制集成到VS中

我想一定有另一种方法没有克隆

对。您可以在单一回购(我更喜欢VS)中使用(命名的)分支,更新到修订分支头,更改,提交,合并


顺便说一句,使用书签/克隆/分支进行分支对于任何规模的团队都是一样(好)的——这是一个品味的问题

谢谢——不是真的关于克隆——我知道怎么做。我的基本问题是如何在Mercurial下拥有一套发布版代码和一套测试版代码,并在IDE中获得正确的代码集。我想我知道如何使用克隆来实现这一点,但我想知道是否有一种正确的方法可以从单个未加密的存储库中实现这一点。我并不奇怪我的概念是混合的!未加密存储库?你不想把你的信息源保存在外部镜像上吗?是的,你可以只与当地的回购协议合作(我从来没有这样做过)。你的问题现在更清楚了,我的答案也经过了编辑。希望这是您所需要的。这只是一个名称,所以它不太重要,但对于Mercurial,实时代码的分支通常称为
stable
。感谢您的输入!其余的建议呢?我对HG并不陌生,我只是想知道其他人是如何使用它的。它看起来不错,但是主开发分支应该被称为
default
,因为它是在克隆后设置为工作副本的分支。我也在使用HgSccPackage。它支持VS2012,但据我所知,VisualHg目前不支持。我想我需要创建一个测试项目,并尝试其中的一些东西