问题标签 [tortoisehg]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
mercurial - How do I cherry-pick a single revision in Mercurial?
In Mercurial/TortoiseHg, given the following example, what is the easiest way to merge revision "G" into repo A without taking D,E and F (Assume that G has no dependency on D,E or F).
Is a patch the best bet?
mercurial - Hg 拉取与更新到分支提示
使用 TortoiseHg Synchronize,单击“Pull”会拉下最近的第二个修订。
在同步界面的底部是一个按钮,“更新到分支提示”。单击此按钮将下拉最新版本。
这里发生了什么?
file - 从 TortoiseHG 数据源中删除文件
我在 Windows 中使用 TortoiseHG 进行源代码控制,我忘记编辑“.hgignor”文件,现在我有一个巨大的文件夹“.hg”,我知道这是因为我不需要的 DLL、EXE 和 PDB 文件他们。现在更改忽略文件不会删除这些文件。
我应该怎么做才能从我的 TortoiseHg 数据源中完全删除这些文件?
version-control - 想在 TortoiseHG/Mercurial 中为我的 .hgignore 文件创建一些默认值
我想让它每次创建新存储库时,默认情况下都会自动将某些过滤器添加到我的 .hgignore 文件中。
例如,对于 C# 项目,我希望添加以下内容:
这可能吗?如何?
如果不能自动化,将 .hgignore 文件从一个存储库复制到另一个存储库是否至少安全?
python - 在 Ubuntu 9.10 的 Gnome 上安装 TortoiseHG?
我按照以下步骤使用以下文档在 Ubuntu 9.10 上安装 TortoiseHG:
http://bitbucket.org/tortoisehg/stable/wiki/nautilus
我的 ~/.xsession-errors 中出现以下错误
有谁知道如何使这项工作?同时我将使用命令行。谢谢。
visual-studio-2008 - Mercurial:维护 Visual Studio 2005 和 2008 分支
我正在尝试开发一个工作流,它允许我们维护单独的 Visual Studio 2005 和 2008 版本的库,同时确保对一个分支的更改始终复制到另一个分支中。
目前,我建议只对默认(VS2005)分支进行更改,然后在完成后合并到 VS2008 分支中。不幸的是,这依赖于纪律,而不仅仅是在发现问题时以及当您处于紧缩状态时解决问题,这可能很困难。这导致我不得不在以后尝试将更改从一个分支改回默认设置。
我知道我们可以将 VS2005 和 VS2008 项目之间的更改存储在补丁队列中,但我是团队中唯一一个习惯使用命令行的人,我的同事更喜欢通过 Tortoise HG 来做所有事情。
因此,我依靠事后解决问题。我当前的过程涉及为 VS2008 分支中的每个变更集导出补丁并将它们应用到默认分支。这很耗时,但比尝试将 VS2008 分支的尖端与默认的尖端合并,然后手动转换回 VS2005 更不容易出错。
阅读了这篇文章后,我尝试退出“升级”变更集,但最终的退出变更集总是作为 VS2008 分支的新提示而结束,而且我无法将这些更改重新合并,因为结果合并结束了在 VS2008 分支中,即使我尝试在提交时显式关闭分支。
我已经尝试了很多方法,但我总是得到一个新的 VS2008 分支提示,并且无法将更改合并回默认分支。因此,我开始意识到我在这里错过了一些明显的东西。
所以,最终,当试图维护一个库的两个版本时,其他人认为最佳实践是什么,而您想要两者之间的唯一区别是嵌入到项目和解决方案文件中的 Visual Studio 版本号?
编辑:我要避免的问题是,如果您将 VS2005 项目添加到 VS2008 解决方案(以便于调试),它会自动将 VS2005 项目“升级”到 VS2008,从而导致“更改”的工作副本和飞溅不必要的“转换”文件。因此,与其让人们试图将他们的“升级”提交到主线,我更愿意将分支分开,并要求用户在克隆后的第一次更新时选择他们需要的版本。
进一步编辑,有解决方案。
有了更多的麻烦,我找到了一种使用标准 TortoiseHg 工具使这个工作流工作的方法,并且命令行干预只需要进行设置。
首先,我更新回将项目从 VS2005 转换为 VS2008 的变更集。我撤销了那个修订,创建了一个撤销补丁并剥离了撤销的变更集(因为它在默认分支中)。然后我将回退补丁应用于转换变更集(使用:hg patch --no-commit patch),然后使用新的“VS2005”分支名称提交补丁。然后我在(未命名的)VS2005 分支的尖端合并。
下一步是更新到(未命名的)VS2008 分支的旧提示,进行无关紧要的更改并将其作为新的“VS2008”分支提交。然后我合并了来自 VS2005 提示的更改,但是当我提交时不允许提交对 csproj 文件的更改。然后我在提交后恢复了这些文件。
最后,我更新到了VS2005的tip,并合并到了VS2008的tip中。
这导致了两个提示,除了由于 VS2005 到 VS2008 的转换而导致的差异之外,它们都具有相同的代码。
新工作流程:
- 根据需要在 VS2005 或 VS2008 分支中工作。
- 在一个分支中完成更新后,更新到另一个分支,合并来自已修改分支的更改并提交到它自己的分支。然后更新回您的首选分支。
- 如果两个分支同时发生更新,则分别执行两个分支,即。更新到 VS2005 提示并合并到 VS2008 提示中,然后更新到 VS2008 提示并合并到上一个(合并前)VS2005 提示中。
authentication - 如何在 TortoiseHg Web 服务器上验证用户身份?
TortoiseHg Web 服务器配置有一个“允许推送”参数,我将允许用户推送更改。但是当我尝试推送时,我收到“授权失败”错误。用户是如何认证的?密码从哪里来?
mercurial - 在 TortoiseHg 中存储密码
有没有办法配置TortoiseHg来存储我的密码?
我有一个托管在Google 代码上的项目,我使用 TortoiseHg 访问它。每当我想将更改推送到 Google 代码时,TortoiseHg 都会提示我输入用户名和密码。Google Code 要求我使用自动生成的密码,而且每次都需要重复查找。
mercurial - 使用 WinMerge 作为 TortoiseHG 合并工具
我正在尝试将 WinMerge 设置为 TortoiseHG 的合并工具;这是我的 Mercurial.ini:
Visual diff 完美运行,但是当我尝试合并两个文件时,出现以下错误:
我该如何解决?
version-control - Mercurial Subrepos - 你如何创建它们以及它们是如何工作的?
情况
我有两个 .NET 解决方案(Foo
和Bar
)和一个包含 ProjectA、ProjectB 和 ProjectC 的公共库。Foo
并Bar
引用一个或多个库项目,但库项目不位于Foo
和Bar
解决方案文件夹中。
目录结构:
*唉,我还在用 Windows XP...
Mercurial 子存储库
目标- 我想设置子存储库,以便我可以将任何引用的库项目的源代码存储在我的存储库Foo
和Bar
存储库中。
根据这个页面(这实际上是我在 subrepos 上可以找到的唯一文档),设置 subrepo 需要从 DOS 控制台窗口执行以下命令:
问题
- 从版本 0.9.2 开始,是否可以使用 TortoiseHG 执行任何或所有这些步骤?如果是,如何?我很确定第 1-3 行可以,但我不知道第 4-7 行。这些似乎都没有记录在 TortoiseHG 中。
- 上面的代码做了什么(非常感谢逐行解释)。以下是我试图破译它时想到的一些具体问题:
- 做什么
>
?我尝试在 Mercurial 文档中搜索>
,但没有找到任何东西。 - 在第 5 行,我不明白是什么
nested/foo
。是从哪里来foo
的?是什么foo
?存储库?一个文件夹? - 第 6 行 - 这完全让我感到困惑。
- 在第 7 行,我假设
.hgsub
正在添加到main
? 还是被添加到nested
?
- 做什么
- 假设我设置了子存储库,并且我的
Bar
存储库现在已更新到修订版 10。如果我尝试将工作目录更新到修订版 7,这是否会导致我的库文件夹 (My Documents/Development/Libraries/ProjectA
和.../Libraries/ProjectB
) 更新为修订版 7 中存储的任何内容好?
更新
我添加了第 8 行代码:ci -m "initial commit"
. 这做了两件事:(1) 将 .hgsubstate 文件添加到主存储库和 (2) 提交所有更改,包括新的子存储库到主存储库(带有消息“初始提交”)。.hgsubstate 文件的目的是跟踪所有子存储库的状态,因此如果您返回到较早的修订版,它也会从所有子存储库中获取正确的修订版。
更新 2 - 一些说明
经过进一步的实验,我想我现在可以提供解决我原来问题的步骤(主要使用 Windows Explorer 和 TortoiseHG):
创建一个子仓库
Libraries/ProjectA
,Libraries/ProjectB
, 和主存储库 (Projects/Foo/Solution
和Projects/Bar/Solution
) 必须是单独的存储库。- 打开
Projects/Foo/Solution
. - 克隆
Libraries/ProjectA
到Projects/Foo/Solution
. - 添加
ProjectA
到Foo
存储库。 使用文本编辑器创建一个名为 的文件
/li>.hgsub
,其中包含以下内容:打开一个 DOS 控制台窗口并输入以下命令(见下面的注释):
/li>对于
/li>Bar
,步骤基本相同,除了 .hgsub 文件应包含两个项目的条目,如下所示:
注意:从 TortoiseHG 0.10(定于 3 月发布)开始,您将能够使用HG Commit
shell 命令来执行此操作,但现在,您必须使用命令行。
一旦这一切都设置好了,它会变得更容易一些。
提交更改- 提交更改Foo
或Bar
,您Synchronize/Pull
为每个子存储库执行操作以使子存储库与库项目存储库中的最新修订同步。然后你再次使用命令行提交更改(直到版本 0.10,你可以只使用 TortoiseHG 提交)。
将工作目录更新到较早的版本- 这似乎与 TortoiseHG 一起正常工作,并且似乎不需要使用任何 DOS 命令。要在 Visual Studio 中实际使用早期版本,您需要执行Synchronize/Push
操作以将较旧版本的库项目放回Libraries/ProjectX
文件夹中。
尽管我喜欢 TortoiseHG 用于简单的任务,但最好为经常使用的 subrepo 操作(尤其是更新)编写批处理文件。
希望这对将来的某人有所帮助。如果您发现任何错误,请告诉我(或者如果可以,请随时自行编辑)。