白痴使用Mercurial和Visual Studio 2010的检查清单

14 浏览
0 Comments

白痴使用Mercurial和Visual Studio 2010的检查清单

我是一个源代码控制白痴,请帮助我完成这个清单。

我最终决定在我的下一个项目中使用Mercurial + TortoiseHg + (VS2010 + HgSccPackage) + Kiln。

我读了http://hginit.com/,并且已经进行了一些尝试,但是我对源代码控制不太了解,所以我不想在这里犯错,我的当前项目是我迄今为止最大和最有价值的项目。

所以这是我的清单:

创建

  1. 在Kiln在线上创建一个新的仓库。
  2. 然后在我的电脑上克隆它。
  3. 将我的整个项目文件夹(包含多个项目的解决方案文件夹)复制到仓库中。
  4. 在仓库根目录中创建一个.hgignore文件,并将这个内容添加到其中。
  5. TortoiseHg中点击添加文件。
  6. 我偶尔从VS中进行提交。
  7. 当我准备好的时候,我点击同步->推送

    (这样做没问题,对吧?)

我在这里遇到的一个问题是,我找不到HgScc中的添加文件等效功能,我注意到当我从VS-IDE中添加新文件时,它没有源代码控制的图标(它没有被添加到Mercurial中?)

所以我最终是通过IDE添加文件的,它们没有被检查。然后在进行了几次提交(和其他我不记得的事情)之后,我注意到有一个额外的分支或者其他什么东西:

alt text

现在,如果我尝试推送,我会得到"(did you forget to merge? use push -f to force)"。(是的,我点击了incoming,没有任何变更)

无论如何,这只是一个试验场,**我刚刚意识到每次我从VS创建文件时使用TortoiseHG -> 添加文件可以修复这个问题?**(还是有其他更好的方法?)

分支:

所以我有点困惑于命名分支,但是Kiln有自己的分支/克隆功能。我在这里阅读了说明

  1. 所以,在线上,我有一个在Kiln在线上创建“分支”的选项。
  2. 然后,我会将其作为一个新的本地仓库进行克隆(就像是一个新的仓库)。
  3. 我会进行更改,提交,推送。
  4. 然后,我会从主仓库中拉取,并从我的分支仓库中推送到主仓库。

所以我实际上没有看到任何合并选项,我猜测Mercurial会自行处理合并?所以我没有在仓库资源管理器中看到分支?这就是应该这样做的方式吗?

最后一个问题,查看历史和查看变更日志选项有什么区别,它们对应的hg选项是什么?:

alt text


更新:忘了提到我是这个项目中唯一的开发者。=P

0
0 Comments

在使用Visual Studio 2010时,如果遇到与Mercurial集成的问题,可以参考以下的问题和解决方法。

问题1:如果项目还没有被Mercurial控制,则应使用"Add to source control"命令。在解决方案资源管理器中右键单击解决方案或项目文件,并在上下文菜单中选择该命令。该命令还将在解决方案/项目位置创建一个存储库(如果还没有)。

问题2:如果你在Visual Studio之外将项目添加到Mercurial中,则需要重新加载IDE中的项目。否则,HgSccPackage无法知道该项目已被控制。

问题3:如果项目已被控制,则从IDE中添加现有或新文件到该项目将自动将它们添加到Mercurial中。

问题4:合并命令位于"Change log"对话框中。要执行合并,你需要"Update"到Rev1,然后选择要与之合并的修订版(Rev2),然后使用工具栏命令或上下文菜单命令运行"Merge"命令。

问题5:如果你认为在HgSccPackage中发现了一个错误,请在HgSccPackage问题跟踪器中创建一个包含重现步骤的问题。

解决方法1:在Visual Studio中从IDE添加文件时,如果没有将文件添加到Mercurial中,请确保项目已被控制,并检查Mercurial配置文件中是否启用了caseguard Mercurial扩展。如果启用了该扩展,请升级到HgSccPackage v1.5.3,该版本修复了与"Add files"命令相关的问题。

解决方法2:如果你对HgSccPackage不熟悉,可以重新审视一下该工具,它在过去的一两年中有很大的发展。

解决方法3:根据另一个用户的回复,他选择了从bitbucket.org/lmn/visualhg2/wiki/Home使用VisualHg。

通过使用Visual Studio 2010与Mercurial进行集成,可以更方便地管理项目和版本控制。然而,一些问题可能会阻碍集成的正常运行。通过遵循上述解决方法,可以解决一些常见的问题,从而提高工作效率和项目管理的便利性。

0
0 Comments

这是一个关于Mercurial和Visual Studio 2010的问题。下面是文章内容的整理:

问题出现的原因:

- 用户需要在Visual Studio 2010中使用Mercurial版本控制系统。

- 用户在使用Mercurial和Visual Studio 2010的过程中遇到了一些困难和挑战。

- 用户希望找到一个可行的解决方案来解决这些问题。

解决方法:

- 用户可以参考链接http://secretgeek.net/mercurial_flow.asp中的内容。

- 用户可以将该链接打印出来,并将其粘贴在墙上以备参考。

- 用户也可以订阅该链接中作者的博客,以获取更多有关Mercurial和Visual Studio的信息和技巧。

希望以上整理的内容能够对解决Mercurial和Visual Studio 2010的问题有所帮助。

0
0 Comments

这是你的个别问题,每个问题都有我的观点/答案。


7. 当我准备好之后,我会进行同步->推送(所以这一切都很好,对吗?

正确。

在这个工作流中可能有一个不同的地方,那就是如果还有其他人也在向同一个仓库推送。如果是这样,那么在某个时刻,其他人已经向仓库推送了你本地没有的变更集。当你试图推送你的变更集时,这将在在线仓库中创建一个分支,通过多个“heads”(如果你不明白我所说的这个术语是什么意思,你可以在Mercurial的上下文中查找它)来显示。通常情况下,你不允许这种情况发生,因此推送将被中止。

当中止时,你应该从在线仓库中拉取变更集到你的本地仓库中,将你的变更集头与刚刚拉取的头进行合并,然后重新尝试推送,这通常会成功(除非你运气不好,在此期间有其他人推送更多变更)。


至于HgSCC和添加文件,我遇到了HgSCC的问题,所以我转向了VisualHg - http://visualhg.codeplex.com,具体原因是HgSCC 1.52版本中似乎有关于新文件的问题。如果你找不到解决方法,我建议你尝试一下VisualHG。


你忘记合并了吗?

你应该将你的变更集合并在一起,这样你就只有一个头了。在你的示例截图中,你有3个头,“添加到表单2的按钮”,“最终提交”和“第二个项目(2)”。你应该更新到你认为是“大部分项目”的那个头,选择它,然后右键点击其他任何一个头,选择TortoiseHg中的“与...合并”,并完成合并和提交。每个这样的合并+提交将删除一个头,所以你需要至少进行2次这样的合并才能回到一个头。


Kiln和Fogcreek对如何处理分支有不同的理解。他们建议你创建一个完全不同的分支仓库并在其中进行工作,而不是使用命名分支。命名分支类似于你给截图中的三个变更集(以“最终提交”结尾的3个变更集)命名为添加新表单或修复一个大错误的分支。

所以,与你在这里所做的不同,有3个头,Kiln的“方式”是有3个克隆,每个克隆只有到达其分支头的变更集。基本上,你将有一个存储库克隆,其中包含一切到“添加第二个表单”的变更集,并继续进行“第二个项目”,但是之间的变更集将不在那里。第二个克隆将一直到“添加第二个表单”,然后是额外的“添加到表单的按钮”,第三个克隆将从“添加第二个表单”开始,然后是以“最终提交”结尾的三个变更集。

当然,最后,当推送和拉取回到主存储库时,你最终会得到这些分支,但是他们建议你像这样使用分支存储库来处理更大的分支,比如添加大的功能、模块等。


我猜Mercurial自己处理合并?

在你的情况下,只有在原始存储库和你的分支存储库克隆中都有新的变更集时,合并才会起作用。

如果你有这种情况,从分支存储库推送到原始存储库(或者相反)将在目标存储库中添加新的头。这就是合并可以帮助你避免的地方。

这样,你的工作流程如下:

  1. 将所有的变更集推送到你的分支存储库(即由分支存储库引起的变更集,如大型错误修复、新功能、大型重写等)
  2. 尝试从分支存储库推送到原始存储库,收到在目标存储库中创建头的消息,因此你中止了推送。
  3. 从原始存储库中拉取到分支存储库。这将创建另一个头。
  4. 从分支存储库拉取到你的本地存储库,在这里进行合并,处理任何和所有的合并冲突,最后提交你的合并变更集
  5. 从本地存储库推送回分支存储库
  6. 在你正式发布之前完成你可能想要在Kiln中进行的任何代码审查
  7. 从分支存储库推送到原始存储库(注意,这与步骤2相同,如果在此期间其他人(或你自己)在原始存储库中进行了更多工作,返回到步骤3并重复)

“查看历史”和“查看更改日志”选项之间的区别

区别仅在于你查看的位置。查看历史始终显示所选内容的历史记录,无论是文件还是解决方案文件本身,即仅涉及该文件的变更集。

查看更改日志查看存储库的变更日志,无论你选择了什么。

非常感谢。如果我能点赞两次就好了!=P(哦,忘了提,我是唯一一个开发这个项目的人)

0