【问题标题】:TortoiseHg hook with GUI带有 GUI 的 TortoiseHg 钩子
【发布时间】:2013-09-17 11:00:59
【问题描述】:

我们正在尝试编写一个可变的预提交钩子,它应该适用于命令行和 TortoiseHg。

钩子的想法是连接到 JIRA 并获取分配给开发人员的活动列表,并在列表中显示活动,开发人员可以从中选择一个。然后将 JIRA ID 和摘要放在提交评论中。

现在,我们已经弄清楚了大部分功能的基本部分,但缺少一种显示列表的方法。我们尝试显示一个带有输入字段和按钮的基本 QtWidget(使用 PyQt4),并使用命令行窗口出现,我们可以输入文本并按下按钮打印文本(或使用 ui.status 将其发送出去) )。

在 TortoiseHg(2.7.1 版)中,它不能很好地工作。钩子触发并且窗口打开,但看起来好像控制没有正确传递。新窗口上的输入字段没有激活,当我们输入文本时我们看不到,但是当单击按钮时,内容会打印到 ui.status。更令人担忧的是 TortoiseHg 停止更新图形,所以当窗口关闭时,TortoiseHg 窗口中有一个空白点,并且 THG 不会响应任何输入。我们必须使用进程浏览器将其击落。

关于如何编写一个钩子来打开一个我们可以在 TortoiseHg 下与之交互的窗口的任何提示?

钩子定义:

pre-commit = python:e:\repos\SCM-TOOLS\hg-hooks\user.py:hook

Python 代码:

import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *


class AppForm(QMainWindow):
    def __init__(self, ui, parent=None):
        QMainWindow.__init__(self, parent)
        self.u = ui
        self.create_main_frame()      


    def create_main_frame(self):        
        page = QWidget()        

        self.button = QPushButton('Test', page)
        self.edit1 = QLineEdit()

        vbox1 = QVBoxLayout()
        vbox1.addWidget(self.edit1)
        vbox1.addWidget(self.button)
        page.setLayout(vbox1)
        self.setCentralWidget(page)

        self.connect(self.button, SIGNAL("clicked()"), self.clicked)

    def clicked(self):
        self.u.status (str(self.edit1.text()))

def hook(ui, repo, **kwargs):
    app = QApplication(sys.argv)
    form = AppForm(ui)
    form.show()
    app.exec_()
    sys.exit(1)

编辑: 除了在 TortoiseHg 和命令行中工作之外,它还应该在 Eclipse 和 IntelliJ 中工作,因此建议的 TortoiseHg 插件不是一个完整的解决方案。

【问题讨论】:

    标签: python user-interface mercurial hook tortoisehg


    【解决方案1】:

    这个任务在 Tortoise 产品中通常会有不同的处理方式,因为它们已经定义了问题跟踪插件接口。这是定义here

    从用户的角度来看,他们在提交窗口上获得了一个新按钮,该按钮向他们提供了一个可供选择的问题列表。然后将适当的文本添加到提交消息中。

    Jira 有两个乌龟问题跟踪器插件:12

    我知道他们说它们是 TortoiseSvn 插件,但它们也应该适用于 TortoiseHg - 我们使用 TurtleMine 没有问题。

    【讨论】:

    • 感谢您的建议 - 我完全没有看到它会起作用。我设法让 JiraTorto 从 TortoiseHg 本身和通过命令行的 thg 工作。出于某种原因,我无法从命令行通过 hg 让它工作。我会暂时不回答这个问题,以防有人提出其他建议。我仍然想听听 Python 问题的解决方案。
    • 你不会让 JiraTorto 从命令行通过 hg 工作,因为它专门是一个 Tortoise 插件,而不是 Mercurial 插件。
    • 正确。虽然有一个 JiraToroBrowser.exe,但我可以看到它引用了 SVN,您可以将其用作您的提交编辑器。当我尝试使用 hg commit 时,它会弹出一个窗口,我可以在其中从我的 JIRA 问题中进行选择。确定按钮什么也不做。我想投票赞成你的答案,因为它是一个很好的答案(但我的声誉太弱了)。在咨询开发人员后,证明他们还需要在 Eclipse 和 IntelliJ 中工作的功能,而我无法为插件工作。我将返回并编辑原始问题以反映这一点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-15
    • 2021-03-19
    • 1970-01-01
    • 2018-01-16
    • 2019-10-22
    相关资源
    最近更新 更多