2

我们正在尝试编写一个可变的预提交钩子,它应该与命令行和 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 插件不是一个完整的解决方案。

4

1 回答 1

0

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

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

Jira 有两个乌龟问题跟踪器插件1、2

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

于 2013-09-17T14:57:55.530 回答