【问题标题】:Is there a script that posts git commits to twitter?是否有将 git 提交到 twitter 的脚本?
【发布时间】:2010-04-16 12:44:07
【问题描述】:

Git 因其对提交消息标题的鼓励长度限制而臭名昭著:第一行的长度不应超过 50 个字符(以适合电子邮件标题)。

这让我想起了……嗯,有没有一个钩子可以在提交消息被推送到服务器后立即自动将它们发布到 twitter?

【问题讨论】:

  • 多么奇怪的想法。喜欢。
  • 鼓励限制;不会强加给用户。
  • @Htbaa,当然,但这意味着 git 用户很可能有发送短信的文化。
  • 不...我只是随心所欲:-)

标签: git twitter


【解决方案1】:

给你:

#!/bin/sh
username=<your Twitter account>
password=<your Twitter password>

service_uri=http://api.twitter.com/1/statuses/update.json

subject=`git log --pretty=format:%s -n1`

curl -u "${username}:${password}" -d status="${subject}" $service_uri

在您的存储库中另存为 .git/hooks/post-commit 并使其可执行。

[注:完全未经测试,我只是当场编造的。]

【讨论】:

  • 一个建议:这应该是一个 post-receive 钩子,它在你推送到它之后在遥控器上运行。它会在标准输入上获取所有更新的参考:“”,因此您可以执行类似while read line; do fields=($line); subject="$(git log --pretty=format:%s ${fields[0]}..${fields[1]})"; ....; done. 的操作
  • 这不起作用,因为 Twitter 不再支持基本身份验证
【解决方案2】:

Github 使用他们的 "Service Hooks" feature 来实现这一点。它的代码在这里:github/github-services/lib/services/twitter.rb

【讨论】:

【解决方案3】:

我设置了一个 Git 提交后挂钩,每次我在我的开发存储库上进行本地提交时,该挂钩都会发布到我的私人 Twitter 帐户。这是我所做的:

  1. 向 Twitter 注册应用程序。这是你如何做到的:
    1. 转到http://dev.twitter.com。你可能需要重新登录。 http://www.adornomedia.com/wp-content/uploads/2013/04/Screen-Shot-2013-04-02-at-5.12.18-PM-300x290.png
    2. 将鼠标悬停在右上角的头像上,然后从出现的菜单中选择“我的应用程序”。 http://www.adornomedia.com/wp-content/uploads/2013/04/Screen-Shot-2013-04-02-at-5.22.26-PM.png
    3. 单击“创建新应用程序”按钮。 http://www.adornomedia.com/wp-content/uploads/2013/04/Screen-Shot-2013-04-02-at-5.23.14-PM.png
    4. 根据需要填写下一个。网站地址可以是任何东西。应用程序的名称可以是任何名称。将回调网址留空。同意协议,输入验证码,一切顺利。 http://www.adornomedia.com/wp-content/uploads/2013/04/Screen-Shot-2013-04-02-at-5.36.56-PM-300x122.png
    5. 接下来,您将被带到一个带有一堆按键的屏幕。将所有这些内容复制到文本编辑器中。
    6. 单击“设置”选项卡。 应用程序类型更改为“读写”。点击更新http://www.adornomedia.com/wp-content/uploads/2013/04/Screen-Shot-2013-04-02-at-5.36.42-PM-300x127.png
    7. 返回详细信息标签。向下滚动到底部,然后点击“创建我的 OAuth 访问令牌”。
    8. 等几秒钟,刷新页面,再等一会儿。最后,页面底部应该会出现一个部分,上面写着“您的访问令牌”。将这些代码复制下来。
    9. 这就是您的 Twitter 应用设置。
  2. 在您计划提交的计算机上打开一个 shell(并从该计算机发送推文)。
  3. 安装http_post。您必须从源代码编译它。 (makemake install)。确保可以通过您的 PATH 访问它。
  4. 安装oauth_sign。您还必须编译此表单源。 (ma​​kema​​ke install)确保可以从您的 PATH 访问它。
  5. 最后,将以下脚本保存到您的 Git 存储库中的 .git/hooks/post-commit

    #!/bin/sh
    
    # PATH modification needed for http_post and oauth_sign
    export PATH=$PATH:/usr/local/bin
    
    toplevel_path=`git rev-parse --show-toplevel`
    toplevel_dir=`basename "$toplevel_path"`
    
    branch=`git rev-parse --abbrev-ref HEAD`
    subject=`git log --pretty=format:%s -n1`
    hashtags="#code #$toplevel_dir"
    tweet=$hashtags' ['$branch']: "'$subject'"'
    
    # truncate tweets that are longer than 140 characters
    if [ ${#tweet} -gt 140 ]
        then
            tweet_trunc=$(echo $tweet | cut -c1-137)
            tweet=${tweet_trunc}...
    fi
    
    consumer_key="<Put your computer key here>"
    consumer_secret="<Put your consumer secret here>"
    access_token="<Put your access token here>"
    access_secret="<Put your access token secret here>"
    url="https://api.twitter.com/1.1/statuses/update.json"
    
    http_post -h Authorization "$(oauth_sign \
    $consumer_key $consumer_secret \
    $access_token $access_secret \
    POST "$url" status="$tweet")" \
         "$url" status="$tweet"
    
  6. 确保使文件可执行。 (chmod a+x .git/hooks/post-commit)

  7. 就是这样!如果您希望将其自动添加到您创建的任何新存储库中,请修改 git-core 模板。您必须弄清楚它们在哪里(每个设置都不同)。对我来说,它们位于:/opt/local/share/git-core/templates/hooks/post-commit

注意:这完全基于这个脚本:http://fanf.livejournal.com/108436.html

祝你好运!

--大卫

【讨论】:

  • 我在哪里可以获得 Windows 的 http_post 和 oauth_sign?
【解决方案4】:

一些谷歌搜索发现了friedcode。自己没有尝试过,但它似乎可以完成这项工作。

【讨论】:

  • 从该页面:“脚本......包含一些可怕的 python 单行代码”——确实如此 :-) 无论如何,谢谢你的链接。
【解决方案5】:

如果您不想编写任何代码,可以使用 https://gitweet.io

【讨论】:

    【解决方案6】:

    我知道这是旧的,但不久前我写了这个人:https://github.com/mrsnowf1ake/twitter-git-hook

    您可以用_**_ 包围提交的任何部分。这与您在这里提到的不完全一样,但它做了类似的事情。

    【讨论】:

      【解决方案7】:

      https://github.com/and-computers/HowToTweetEveryCommit

      这是一个运行 python 脚本的 shell 脚本,用于将您的提交消息发布到 Twitter 帐户。您需要通过在https://apps.twitter.com/创建一个 Twitter 应用程序,为您的帐户提供 4 个令牌,如其他答案中所述

      祝你好运!

      【讨论】:

        猜你喜欢
        • 2011-07-16
        • 2012-01-18
        • 2018-04-10
        • 1970-01-01
        • 2011-04-18
        • 1970-01-01
        • 2011-08-11
        • 2016-11-17
        • 2011-04-06
        相关资源
        最近更新 更多