是否有一个脚本将git提交发布到twitter?

P S*_*ved 18 git twitter

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

这让我想起......好吧,是否有一个钩子会在推送到服务器后自动将提交消息发布到Twitter?

Jör*_*tag 14

干得好:

#!/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
Run Code Online (Sandbox Code Playgroud)

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

[注意:完全没有经过测试,我刚刚在现场做了这个.]

  • Unix shell 1,python 0 (4认同)
  • 这不起作用,因为Twitter不再支持基本身份验证 (4认同)

Mic*_*rdt 6

Github使用他们的"Service Hooks"功能完成了这项工作.它的代码在这里:github/github-services/lib/services/twitter.rb


Dav*_*idH 5

我设置了一个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. 根据需要填写下一个。网站地址可以是任何东西。应用程序的名称可以是任何名称。将“ 回调URL”保留为空白。同意该协议,输入CAPTCHA,您一切顺利。 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 App设置。
  2. 在您打算提交(并发推)的计算机上打开一个外壳。
  3. 安装http_post。您将不得不从源代码编译它。(makemake install)。确保可以从中访问它PATH
  4. 安装oauth_sign。您还必须编译此表单源。(化妆make安装),请确保它是从访问你的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"
    
    Run Code Online (Sandbox Code Playgroud)
  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

祝好运!

- 大卫