2010-12-15 51 views
13

因此,我是一个源代码管理白痴,请这个清单幽默我。视觉工作室的merilial白痴清单2010

我终于决定为我的下一个项目使用Mercurial + TortoiseHg +(VS2010 + HgSccPackage)+窑。

我看过http://hginit.com/,我玩了很多次,但对源代码控制不太了解,所以我不想在这里犯错,我目前的项目是我最大也是最有价值的项目。

因此,这里是我的清单:

创造

  1. 我在网上建立在窑内新的回购协议。
  2. 然后克隆它在我的电脑上。
  3. 我复制我的整个项目文件夹(解决方案与该文件夹下的多个项目)到回购。
  4. 我将this content添加到回购根目录中的.hgignore文件中。
  5. TortoiseHg我点击添加文件
  6. 我偶尔从VS提交。
  7. 当我准备好了,我去SYNC->推
    (所以这是所有好的吧?)

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

所以我最终通过IDE添加文件,他们没有检查。再经过(我不记得和其他的东西)少数提交我注意到有一个额外的分支或东西: alt text

现在如果我去尝试推我让"(did you forget to merge? use push -f to force)"。 (是的,我打来电,我有没有在即将到来的变化)

无论如何,只是一个操场**,我刚刚意识到使用TortoiseHG->添加文件每次我创建文件从VS修复的东西? **(或者是有更好的办法吗?)

分支:

所以我是一个有点困惑命名分支,但由于窑自己的分公司/克隆啄。我read instructions here

  1. 所以,在线,我有选项,在窑中创建一个“分支”在线。
  2. 然后,我将在本地克隆这个新的回购(好像它是一个新的回购)
  3. 我会做我的更改,承诺,推动。
  4. 然后,我将从主要回购拉动并从我的分支回购推到主要。

所以我没有真正看到任何合并选项在这里,我猜mercurial处理自己合并?所以我没有看到存储库资源管理器的分支?这是应该如何完成的?

最后一个问题,就是查看历史记录和查看变更日志选项,什么汞柱选项做自己对应?:

alt text


更新之间的区别:忘记提到我是这个项目中唯一孤独的开发者。 = P

+1

我已经与添加新文件的最新版本HgSCC的问题。对我来说,它看起来像有一个错误或与该版本的东西。我已经切换到VisualHg(http://visualhg.codeplex.com),它也使用了TortoiseHg。 – 2010-12-15 12:15:30

+1

VisualHg整洁,自动添加/删除解决方案中的文件没有太多麻烦。 – Macke 2010-12-15 12:24:47

+0

另外请注意,Mercurial有一个聊天室,但人口并不稠密,但我在那里可以适应我的日程安排,以及一些帮助构建Mercurial的人(我只是一个粉丝)。如果你有更多的讨论问题,那可能就是这个地方。 http://chat.stackoverflow.com/rooms/39/mercurial – 2010-12-15 12:35:58

回答

13

以下是您的个人问题,每个部分一个,并附上我的意见/答案。


7.当我准备好了,我去SYNC->推(所以这是所有好权?

正确的。

的一件事可能在此有所不同工作流程是否有其他人也推送到同一个存储库,如果有的话,在某些时候,别人已经将更改集推送到本地没有的存储库中,当你尝试推送你的分支时会创建一个分支在线存储库,可以通过多个“头像”显示出来(如果你不愿意,你应该在Mercurial环境中查找这个术语,不要理解我的意思。)通常你不允许发生这种情况,所以推送将被中止。

当它中止时,您可以将联机存储库中的变更集下载到本地存储库中,将您的变更集头合并到您刚刚拖出的头部,然后重新尝试推送,这通常会成功(除非您随着HgSCC吉利和其他人在此期间推更多)


至于HgSCC和添加文件,我有问题,所以我切换到VisualHg - http://visualhg.codeplex.com,特别是因为有似乎有点问题关于新文件的1.52版本的HgSCC。如果你找不到解决方案,我会建议你试用VisualHG。


你忘记合并了吗?

您应该将您的更改合并在一起,以便您只有一个头。您在该示例截图中有3个“添加了按钮以形成2”,“最终提交”和“第2 prj(2)”。您应该更新到您认为是“大部分项目”的那个,选择它,然后右键单击其中一个头,然后在TortoiseHg中选择“合并...”,然后完成合并和提交。每个这样的merge + commit都会删除1个头,所以你至少需要2个这样的合并才能回到1个头。


对于如何处理树枝比其他许多人有一个不同的概念。他们建议你创建一个完全不同的分支仓库,并在其中工作,而不是使用命名分支。一个命名分支类似于你在截图中命名三个变更集(以“final commit”结尾的三个变更集),作为添加新表单或修复大错误的分支。

所以不是你在这里做了什么,有3个头,窑的“方式”将有3个克隆,每个克隆只有变化集到他们的分支头。基本上你会有1个回购克隆,一切都是“添加第二个形式”,并继续“第二个项目”,但是中间的变更集不会存在。第二个克隆将有“添加第二个表单”,然后一个额外的标记为“添加按钮形成”,第三个将有“添加第二个表单”,然后三个结尾与“最终提交”。

当然,最后,在推拉回到主存储库时,最终会得到这些分支,但他们建议您使用类似更大分支的分支库,比如添加大特性,模块等


即时猜测善变处理自身的兼并,合并?

如果您在原始存储库和分支存储库克隆中都有新的更改集,则仅在您的方案中进行合并才会起作用。

如果你有这个想法,从分支仓库推送到原始仓库(或以另一种方式拉动)会在目标仓库中添加新的头部。这是合并会帮助你避免。

这样,您的工作流程想如下:

  1. 推所有的你有你的分支库(即从你需要摆在首位的分支库的原因引起的变更,大变化错误修正,新功能,大改写,无论如何)
  2. 尝试从分支存储库推送到原始存储库,获取消息,这将创建在目标存储库头,所以你中止。
  3. 从原始存储库下拉到分支存储库。这将创造另一个头。
  4. 从分支仓库拉到你的本地库,并在这里做了合并,处理任何和所有的合并冲突,最后提交您的合并变更从本地存储库
  5. 推回支库
  6. 敲定任何代码审查你可能想在官窑之前做到这一点
  7. 将分支存储库推送到原始存储库(注意,这与步骤2相同,如果其他人(或您)在此期间在原始存储库中完成了更多工作,则跳转返回步骤3并重复)
查看历史记录和查看变更日志选项

之间差异

差异正是您查看它。查看历史记录总是显示您选择的历史记录,无论是文件还是解决方案文件本身,即。只是涉及该文件的变更集。

查看更改日志查看存储库的更改集日志,而不管您选择了什么。

+0

非常感谢。如果只有我可以upvote两次! = P(哦,忘了提及我是唯一一个开发这个的人) – gideon 2010-12-15 13:16:26

3

如果你的项目还没有被mercurial控制,那么你应该使用“Add to source control”命令。在解决方案资源管理器中右键单击解决方案或项目文件,并在上下文菜单中选择命令。如果没有一个,此命令还将在解决方案/项目位置创建一个存储库。

如果您将项目添加到Visual Studio之外的mercurial,那么您需要在IDE中重新加载项目。否则HgSccPackage不知道该项目是受控的。

如果项目被控制,那么从IDE添加现有或新的文件到该项目将自动添加到mercurial。

合并命令在“更改日志”对话框中可用。要进行合并,需要将“Update”更改为Rev1,然后选择要合并的修订(Rev2),然后使用工具栏命令或上下文菜单命令运行“合并”命令。

如果您认为在HgSccPackage中发现了一个错误,那么在HgSccPackage问题跟踪器(http://bitbucket.org/zzsergant/hgsccpackage/issues)中创建一个步骤以重现问题。

+0

感谢sergant,我希望你能看到这篇文章。不幸的是,对于我来说,从IDE添加文件并不会将它们添加到mercurial中(即使在项目被控制时,由于IDE中所有其他文件都有图标),我会尝试确保所有内容并将其添加为一个问题。我不确定这是一个错误还是未实现的功能。 – gideon 2010-12-15 17:37:04

+1

HgSccPackage v1.5.2中有一个“添加文件”命令的错误。当在mercurial配置文件中启用caseguard mercurial extension时,它不起作用。 这个bug在HgSccPackage v1.5.3中修复,所以你可以再试一次。 – 2010-12-23 21:23:38

+0

嘿,谢谢,在此之前你没有注意到你的评论。 – 2011-01-12 09:52:04

9

打印此文件,将其层压并粘贴在墙上。我做到了。

http://secretgeek.net/mercurial_flow.asp

+2

+1谢谢! = D秘密极客真棒!我应该转到他的博客! – gideon 2010-12-18 07:23:02

+0

+1我正在寻找类似的东西... – 2011-02-03 14:42:19