Tortoise 和 Mercurial 命令行中的 Shelf 似乎无法互操作?

问题描述 投票:0回答:2

如果我在命令行上向 Mercurial 架子添加一些内容:

C:> hg shelve ...

当我在 TortoiseHG Workbench 的 Repository > Shelve > 菜单下查看时,没有新的相应条目(在下拉列表中)。

同样,如果我执行相反的操作并在 THG 中执行搁置操作,然后在命令行上运行

hg shelve -l
或仅运行
hg unshelve
,则似乎会忽略新的搁架。

为什么会发生这种情况?是否有设置或类似的东西会影响这个?

mercurial tortoisehg unshelve shelving
2个回答
3
投票

据我所知,“核心”Mercurial(命令行

hg
)和 TortoiseHG GUI 中的搁置功能是完全相互独立的。

(从历史上看,这种看似奇怪的情况是由于首先创建了 THG 功能,然后将具有相同名称的等效/相似功能添加到 HG 本身)。


IMO 从在取消搁置操作期间有效使用 HG 合并逻辑将搁置的更改应用到本地工作文件夹的角度来看,HG 搁置功能比 THG 功能效果更好。一旦我意识到这一点,我就不再使用 THG 架子,这就是我的建议。


可以配置 THG Workbench 以(在一定程度上)与 HG 搁架功能集成。使用说明:

编辑您的

mercurial.ini
设置文件。 (通过文件 > 设置 > 全局设置 > 编辑文件按钮,或手动在编辑器中打开文件)。

添加以下部分和项目:

[tortoisehg]
...
workbench.custom-toolbar = HG_shelve HG_unshelve

[tortoisehg-tools]
HG_shelve.command = hg shelve
HG_shelve.enable = istrue
HG_shelve.icon = go-next
HG_shelve.label = HG_shelve
HG_shelve.showoutput = True
HG_shelve.tooltip = HG_shelve
HG_unshelve.command = hg unshelve
HG_unshelve.enable = istrue
HG_unshelve.icon = go-previous
HG_unshelve.label = HG_unshelve
HG_unshelve.showoutput = True
HG_unshelve.tooltip = HG_unshelve

(小心不要重复任何现有的

[tortoisehg]
[tortoisehg-tools]
部分)。

这将在工具栏上产生新按钮:

一个箭头将搁置当前工作文件夹,另一个箭头将取消搁置。

显然,以这种方式运行搁置/取消搁置是相当粗粒度的,但我发现 99% 的时间这就是我所需要的。


备注:

上面的

.INI
编辑也可以通过 THG Workbench File > Settings > Tools GUI 部分完成。:

如果您喜欢其他图标,则不必使用这些特定图标,THG 还有其他选择。


0
投票

要添加到现有答案,这里有一个配置,用于添加上下文命令以从提交 UI 中搁置所选文件:

[tortoisehg]
...
workbench.commit.custom-menu = HG_shelve_selected

[tortoisehg-tools]
...
HG_shelve_selected.command = hg shelve {SELECTEDFILES}
HG_shelve_selected.enable = istrue
HG_shelve_selected.icon = thg-shelve-move-right-file
HG_shelve_selected.label = hg shelve
HG_shelve_selected.showoutput = False
HG_shelve_selected.tooltip = hg shelve

(据我所知)仍然没有干净的方法来取消搁置单个文件。

© www.soinside.com 2019 - 2024. All rights reserved.