【问题标题】:idiots checklist for mercurial with visual studio 2010带有 Visual Studio 2010 的 mercurial 的白痴清单
【发布时间】:2011-05-25 18:45:42
【问题描述】:

所以我是一个源代码控制白痴,所以请用这个清单来幽默我。

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

我阅读了http://hginit.com/ 并且玩了很多,但我对源代码管理了解不多,所以我不想在这里犯错,我目前的项目是我最大和最有价值的项目。

这是我的清单:

创作

  1. 我在 kiln online 中创建了一个新的 repo。
  2. 然后在我的电脑上克隆它。
  3. 我将整个项目文件夹(该文件夹下有多个项目的解决方案)复制到存储库中。
  4. 我将 this content 添加到 repo 根目录中的 .hgignore 文件中。
  5. TortoiseHg 我点击添加文件
  6. 我偶尔会从 VS 提交。
  7. 当我准备好时,我会去同步->推送
    (所以这一切都很好,对吧?)

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

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

现在如果我尝试推送,我会得到"(did you forget to merge? use push -f to force)"。 (是的,我击中了传入,但我在即将发生的更改中没有)

无论如何,只是一个游乐场,** 我刚刚意识到使用 TortoiseHG ->每次从 VS 创建文件时添加文件修复问题? **(或者这里有更好的方法吗?)

分支:

所以我对命名分支有点困惑,但是 Kiln 作为他们自己的分支/克隆的东西。我read instructions here

  1. 所以,在线,我可以选择在 Kiln 在线创建一个“分支”。
  2. 然后我将其克隆为本地的新仓库(就像是新仓库一样)
  3. 我将进行更改、提交、推送。
  4. 然后我将从 MAIN 存储库中提取并从我的分支存储库推送到 MAIN。

所以我在这里并没有真正看到任何合并选项,我猜是 mercurial 自己处理合并?所以我没有从存储库浏览器中看到分支?应该是这样的吗?

最后一个问题,View History 和 View Change Log 选项有什么区别,分别对应什么 hg 选项?:


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

【问题讨论】:

  • 我在使用最新版本的 HgSCC 添加新文件时遇到了问题。对我来说,该版本似乎存在错误或其他问题。我已经切换到 VisualHg (visualhg.codeplex.com),它也使用 TortoiseHg。
  • VisualHg 很简洁,可以在解决方案中自动添加/删除文件,没有太多麻烦。
  • 另外请注意,有一个 Mercurial 聊天室,它的人并不多,但是当我可以将其纳入我的日程安排时,我会在那里,以及一些帮助构建 Mercurial 的聊天室(我我只是一个粉丝)。如果您有更多的讨论问题,那可能就是您要找的地方。 chat.stackoverflow.com/rooms/39/mercurial
  • +1 一个好问题我已将其添加到我的收藏夹中

标签: visual-studio-2010 mercurial tortoisehg kiln


【解决方案1】:

这是您的个人问题,每个部分一个,每个部分都有我的意见/答案。


7.当我准备好并准备好时,我会去同步->推送(所以这一切都很好吗?

正确。

此工作流程可能不同的一件事是,是否还有其他人也推送到同一个存储库。如果你有这个,在某些时候其他人已经将变更集推送到你本地没有的存储库。当您尝试推送将在在线存储库中创建一个分支时,该分支会被多个“头”可见(如果您不明白我的意思,您应该在 Mercurial 上下文中查找该术语。)通常您不会不允许这种情况发生,所以推送将被中止。

当它中止时,您会将变更集从在线存储库拉到本地存储库中,将变更集头与您刚刚拉出的头合并,然后重新尝试推送,这通常会成功(除非您不走运其他人在此期间推得更多。)


至于 HgSCC 和添加文件,我遇到了 HgSCC 的问题,所以我切换到 VisualHg - http://visualhg.codeplex.com,特别是因为 1.52 版本的 HgSCC 似乎在新文件方面存在问题。如果您找不到解决方案,我建议您尝试 VisualHG。


您忘记合并了吗?

您应该将更改合并在一起,这样您就只有一个头了。在该示例屏幕截图中,您有 3 个,“将按钮添加到表单 2”、“最终提交”和“2nd prj (2)”。您应该更新到您认为是“大部分项目”的那个,选择它,然后右键单击其他头之一并在 TortoiseHg 中选择“与...合并”,然后完成合并并提交。每个这样的合并+提交都会删除 1 个头,因此您至少需要 2 个这样的合并才能恢复到 1 个头。


Kiln 和 Fogcreek 对如何处理分支的看法与许多其他公司不同。他们建议您创建一个完全不同的分支存储库并在其中工作,而不是使用命名分支。命名分支类似于您将屏幕截图中的三个变更集(以“最终提交”结尾的 3 个)命名为添加新表单或修复大错误的分支。

因此,与其做你在这里所做的那样,拥有 3 个头,Kiln 的“方式”将是拥有 3 个克隆,每个克隆只有直到它们的分支头的变更集。基本上,您将拥有 1 个 repo 克隆,其中包含“添加 2nd form”的所有内容,并继续使用“second proj”,但中间的变更集将不存在。第二个克隆最多有“添加第二个表单”,然后是一个额外的标记为“添加按钮到表单”,第三个将有“添加第二个表单”,然后三个以“最终提交”结尾。

当然,最后,当推拉回到主存储库时,无论如何你最终都会得到这些分支,但他们建议你将类似的分支存储库用于更大的分支,比如添加大功能、模块、等等


我猜是 mercurial 自己处理合并的?

只有在原始存储库和分支存储库克隆中都有新的变更集时,才会在您的场景中进行合并。

如果你有这个,从分支存储库推送到原始存储库(或以其他方式拉取)会在你的目标存储库中添加新的头。这就是合并可以帮助您避免的。

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

  1. 将您拥有的所有更改推送到您的分支存储库(即,由于您首先需要分支存储库的原因而产生的更改集、大错误修复、新功能、大重写等)
  2. 尝试从分支存储库推送到原始存储库,收到消息说这将在目标存储库中创建头,所以你放弃了。
  3. 从原始存储库拉到分支存储库。这将产生另一个头。
  4. 从分支存储库拉到本地存储库,并在此处进行合并,处理所有合并冲突,最后提交合并变更集
  5. 从本地仓库推送回分支仓库
  6. 在正式发布之前完成您可能想要在 Kiln 中进行的任何代码审查
  7. 从分支存储库推送到原始存储库(注意这与第 2 步相同,如果其他人(或您)同时在原始存储库中完成了更多工作,请跳回第 3 步并重复)

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

不同之处在于您所查看的内容。查看历史记录始终显示您选择的任何内容的历史记录,无论是文件还是解决方案文件本身,即。只是涉及该文件的变更集。

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

【讨论】:

  • 非常感谢。如果我能投票两次就好了! =P(哦忘了说我是唯一开发这个的人)
【解决方案2】:

打印,层压,贴在墙上。我做到了。

http://secretgeek.net/mercurial_flow.asp

【讨论】:

  • +1 谢谢! =D 秘密极客真棒!我应该分到他的博客!
【解决方案3】:

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

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

如果项目是受控的,那么从 IDE 向该项目添加现有或新文件将自动将它们添加到 mercurial。

合并命令在“更改日志”对话框中可用。要进行合并,您需要“更新”到 Rev1,然后选择要与之合并的版本(Rev2),然后使用工具栏命令或上下文菜单命令运行“合并”命令。

如果您认为您在 HgSccPackage 中发现了错误,请在 HgSccPackage 问题跟踪器 (http://bitbucket.org/zzsergant/hgsccpackage/issues) 上创建问题并提供重现步骤。

【讨论】:

  • 谢谢中士,我希望你能看到这篇文章。不幸的是,对我来说,从 IDE 添加文件并不会将它们添加到 mercurial。(即使项目受到控制,因为 IDE 中的所有其他文件上都有图标)我会尝试确保所有内容并将其添加为一个问题。我不确定这是错误还是未实现的功能。
  • HgSccPackage v1.5.2 中有一个带有“添加文件”命令的错误。在 mercurial 配置文件中启用 caseguard mercurial 扩展时,它不起作用。 HgSccPackage v1.5.3 中修复了这个错误,您可以再试一次。
  • hgscc 包发展得非常好。我是 VisualHG 几年的用户,但几个月前切换到这个。如果你一两年没看它,再看一遍
  • 只是为了跟进,我从bitbucket.org/lmn/visualhg2/wiki/Home回到VisualHg
猜你喜欢
  • 1970-01-01
  • 2012-05-17
  • 2016-06-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多