git 有没办法通过编程获取服务器上的 push 信息,用来做提醒。

2013-10-04 13:54:19 +08:00
 justfly
指定一个 git 远程仓库的地址,通过编程获取远程服务器谁 push 了代码,commit message 是什么。

现在 git 支持 push 后发邮件,这个我知道,但是有没有办法在客户端去获取这些信息?
3565 次点击
所在节点    程序员
11 条回复
dongsheng
2013-10-04 14:03:39 +08:00
man一下githooks,搜索pre-receive,在服务器的.git/hooks实现pre-receive就行了。
yinian1992
2013-10-04 14:07:50 +08:00
不想自己写就用 github 现成的 webhook
justfly
2013-10-04 14:29:18 +08:00
@dongsheng
@yinian1992

服务器 hook 肯定是可以的,我现在想做一个客户端通用的应用,不在服务器做任何设置,只要设置一个远程地址,每隔一段时间去刷新一下服务器 push 信息。我的问题是有可能在客户端获取服务器 push 信息吗?
liangdi
2013-10-04 14:47:46 +08:00
定时pull 然后log 筛 日志
yinian1992
2013-10-04 15:33:44 +08:00
@justfly 定时查看 git log 呗。
justfly
2013-10-04 15:34:38 +08:00
@yinian1992 log 只是 pull 下来本地的,要知道服务器的还得先pull 再看 log 吧?
yinian1992
2013-10-04 15:40:11 +08:00
@justfly 登到服务器上 git log 也行啊。
thyrlian
2013-10-04 16:00:04 +08:00
AgileNotifier (https://github.com/thyrlian/AgileNotifier) 可以在任何客户端部署, 可以集成到Jenkins当做一个后续执行的Job, 也可以直接设置一个cron job, 目前支持本地git和github(包括企业版, 注意: github没有做auth, 所以每小时有60次的限制, 理论上1分钟1次都够用了). 当前的主要功能是如果job失败或者修复都可以提醒(通过没有做, 但留了接口, 因为没有意义, 没人关心通过). 亮点在于支持TTS, 目前支持中文, 英语, 德语, 西班牙语, 触发后(失败或者修复)能用设定语言骂提交者或者表扬之(目前完美支持MacOSX, 其它平台的TTS需要使用在线TTS服务, 因为语言支持不多, 所以没做完).

最后, 配置极其简单, 几排DSL就可以搞定.

例子:
include AgileNotifier

AgileNotifier::Configuration.set do
ci_url 'http://x.x.x.x:8080'
ci_job 'your-project-continuous-build'
ci_get 'Jenkins'

scm_url 'https://github.xyzcompany.com'
scm_repo user: 'your_user_name', repo: 'your_repository_name'
scm_get 'Github', enterprise: true

# for non-enterprise version
# scm_url 'https://api.github.com'
# scm_repo user: 'your_user_name', repo: 'your_repository_name'
# scm_get 'Github'

speak 'en'
play 'Boing' # Mac OSX Text to Speech voice name, optional field

alert_on_fail
alert_on_fix
end
thyrlian
2013-10-04 16:03:15 +08:00
不好意思, 忘了说AgileNotifier目前不支持你要的commit message, 不过这个非常简单, 添几行进去就能实现了.
johnnyb
2013-10-04 16:16:07 +08:00
mengzhuo
2013-10-04 16:31:55 +08:00
git hook就可以了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/84521

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX