gid*_*eon 13 mercurial tortoisehg visual-studio-2010 kiln
所以我是一个源控制白痴,所以请用这个清单幽默我.
我终于决定在下一个项目中使用Mercurial + TortoiseHg +(VS2010 + HgSccPackage)+ Kiln.
我阅读http://hginit.com/并且我玩了很多,但我对源代码控制知之甚少,所以我不想在这里犯错误,我目前的项目是我最大和最有价值的一个然而.
所以这是我的清单:
创作:
我在这里遇到的一个问题是.我在HgScc中找不到相应的Add Files,我注意到当我从VS-IDE添加新文件时,它没有源控件的图标.(它没有添加到mercurial?)
所以我最终通过IDE添加文件,他们没有检查.然后经过几次提交(以及其他我不记得的事情),我注意到有一个额外的分支或者其他东西:
现在,如果我去尝试推动我得到"(did you forget to merge? use push -f to force)"
.(是的,我击中了传入,我在即将发生的变化中没有)
无论如何,只是一个游乐场,**我刚刚意识到使用TortoiseHG - >每次我从VS修复文件创建文件时添加文件?**(或者这里有更好的方法吗?)
分枝:
所以我对命名分支有点困惑,但是Kiln作为他们自己的分支/克隆东西.我在这里阅读说明
所以我在这里看不到任何合并选项,我猜是mercurial自己处理合并?所以我没有看到存储库资源管理器中的分支?这是应该怎么做的?
最后一个问题,查看历史记录和查看更改日志选项之间的区别是什么以及它们对应的hg选项?:
更新:忘记提及我是这个项目中唯一孤独的开发者.= P
ang*_*son 13
这是您的个人问题,每个部分一个,每个问题都有我的意见/答案.
7.当我很好并准备好时,我会去同步 - >推(所以这一切都很好吗?
正确.
在这个工作流程中可能有所不同的一件事是,是否还有其他人也在推送到同一个存储库.如果你有这个,那么其他人已经将更改集推送到你本地没有的存储库.当你试图推动那些会在在线资源库中创建一个分支时,你可以通过多个"头"看到它们(如果你不明白我的意思,你应该在Mercurial环境中查找该术语.)一般来说,你不要t允许这种情况发生,因此推送将被中止.
当它中止时,您将把变更集从在线存储库中拉到本地存储库中,将变更集头部与您刚刚拉出的头部合并,然后重新尝试推送,这通常会成功(除非您不幸和其他人在此期间推动更多.)
至于HgSCC和Add文件,我遇到了HgSCC的问题,所以我切换到VisualHg - http://visualhg.codeplex.com,特别是因为1.52版本的HgSCC似乎有关于新文件的问题.如果你找不到解决方案,我建议你试试VisualHG.
你忘了合并吗?
您应该将更改合并在一起,这样您只能再次使用一个头.在该示例屏幕截图中有3个,"向表单2添加按钮","最终提交"和"第2个prj(2)".您应该更新到您认为是"项目的大部分"的那个,选择它,然后右键单击其中一个头并在TortoiseHg中选择"Merge with ...",并完成合并和提交.每个这样的合并+提交将删除1个头,因此您需要至少2个这样的合并才能返回到1个头.
Kiln和Fogcreek对如何处理分支的看法不同于其他许多人.他们建议您创建一个完全不同的分支存储库并使用它,而不是使用命名分支.命名分支类似于您将屏幕截图中的三个变更集(以"最终提交"结尾的3个)命名为添加新表单或修复大错误的分支.
因此,不是做你在这里做过的,有3个头,窑"方式"将有3个克隆,每个只有变化集直到它们的分支头.基本上你会有1个repo克隆,一切都是"添加第二个形式",并继续"第二个项目",但中间的变化集不会存在.第二个克隆将有"添加第二个形式",然后一个额外标记为"添加按钮形成",第三个将"添加第二个形式",然后三个以"最终提交"结束.
当然,最后,当推拉回到主存储库时,无论如何最终都会使用这些分支,但是他们建议您使用更大分支的分支存储库,例如添加大型功能,模块等.
我猜mercurial自己处理合并?
只有在原始存储库和分支存储库克隆中都有新的更改集时,才会在场景中进行合并.
如果您有这种情况,从分支存储库推送到原始存储库(或以其他方式拉动)将在目标存储库中添加新的头.合并可以帮助您避免这种情况.
通过这种方式,您的工作流程如下:
查看历史记录和查看更改日志选项之间的差异
区别在于您所看到的内容.查看历史记录始终显示您选择的任何历史记录,无论是文件还是解决方案文件本身,即.只是涉及该文件的更改集.
无论您选择了什么,View Changelog都会查看存储库的变更集日志.