如果我在命令行上向 Mercurial 架子添加一些内容:
C:> hg shelve ...
当我在 TortoiseHG Workbench 的 Repository > Shelve > 菜单下查看时,没有新的相应条目(在下拉列表中)。
同样,如果我执行相反的操作并在 THG 中执行搁置操作,然后在命令行上运行
hg shelve -l
或仅运行 hg unshelve
,则似乎会忽略新的搁架。
为什么会发生这种情况?是否有设置或类似的东西会影响这个?
据我所知,“核心”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 还有其他选择。
要添加到现有答案,这里有一个配置,用于添加上下文命令以从提交 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
(据我所知)仍然没有干净的方法来取消搁置单个文件。