Git show——发布到Microsoft Teams时颜色不保留颜色



我正在使用gitpython和pymsteams向Microsoft Teams发布git提交消息。本地日志输出按预期以颜色显示差异。但是,无论我指定了--color参数,Teams都不会显示颜色。

有人知道如何保留这里的颜色以完整发布到团队吗?

代码:

import pymsteams
from git import Repo
myTeamsMessage = pymsteams.connectorcard("Teams Webhook URL")
repo = Repo(os.environ[ "OX_REPO_NAME" ])
diff = repo.git.show("--color",os.environ[ "OX_REPO_COMMITREF" ])
msg = '''
Changes to `%s`:
```diff
%s```
''' % ( os.environ[ "OX_NODE_NAME" ],
diff, 
)
myTeamsMessage.text(msg)
myTeamsMessage.send()

更新自适应卡

我尝试过使用微软的自适应卡示例,但在Teams中得到了完全相同的输出。[没有颜色,而是显示了33m的奇怪格式][1]

url="Teams Webhook URL"
payload2 = {
"type":"message",
"attachments":[
{
"contentType":"application/vnd.microsoft.card.adaptive",
"content":{
"$schema":"http://adaptivecards.io/schemas/adaptive-card.json",
"type":"AdaptiveCard",
"version":"1.2",
"body":[
{
"type": "TextBlock",
"text": msg
},

]
}
}
]
}
headers = {
'Content-Type': 'application/json'
}
response = requests.post(url, headers=headers, data=json.dumps(payload2))

[1]: https://i.stack.imgur.com/mv0t4.png

您可以使用RichTextBlock来获得不同的颜色。不可能发布带有颜色的git提交消息。你必须明确提到颜色。

答案:

  • 要复制颜色:
    • 如果您正在使用Putty(或者类似的东西应该有类似的选项(:
      • 复制格式,而不仅仅是(默认情况下(文本:
      • 在Putty设置中,在下:Window--Selection--Copy
        • 您需要检查[x]"在RTF中复制到剪贴板以及纯文本">
      • 之后,您可以:
        • 粘贴到Word文档(或其他接受RTF格式的东西(中,你会看到颜色"接近";你Putty终端上的那些
    • 不幸的是;团队;它本身会去掉格式(颜色、一些空格等(。
      • 它甚至不能复制自己的格式!(你在团队中使用的彩色单词(:
        • 您可以复制它,然后将它从Teams粘贴到启用rtf的程序中(如:Word(
        • 但当你把它粘贴到另一个团队部分时:所有的格式也会被剥离
      • 解决方法是:相反,将包含正确格式文本的Word文档上传到团队讨论中(您使用上述方法制作的…(

关于奇怪的格式:

  • 您看到的[33m"奇怪的格式"实际上是https://en.wikipedia.org/wiki/ANSI_escape_codegit用来告诉你的终端开始用黄色显示以下字符
  • 在";Unixes终端";Ansi escade序列:
    Esc + [ + 33 + m 
    
    告诉终端将前景颜色更改为黄色(因此,如果终端理解并有黄色可用,则随后出现的内容应显示为黄色文本(
  • 一个shell示例显示了这一点:
printf 'normal color33[33mThis is yellow33[0m normal again...'

最新更新