git邮件配置出现网页上面的操作记录与邮件通知不共存问题
@独孤青冥 你好,想跟你请教个问题:大神,你好,劳烦帮我看一下下面的问题。。。急
最近搭建gitlab服务器,使用的安装包是bitnami-gitlab-7.10.1-0-linux-x64-installer(gitlab一键安装包).run。
安 装完成后,能够打开gitlab页面,并创建项目。创建项目之后,在/opt/gitlab-7.10.1-0/apps/gitlab /repositories目录下面,就会有相应的项目目录,比如test.git(在hooks目录下面有post-receive、pre- receive和update文件,都是ruby脚本)。此时将成员加入到项目中来,由成员进行push,在页面的activity里面有成员的 commit记录。但是这个时候是不会发送邮件的。
下面就是配置自动发送邮件,我从网上down下一个post- receive-email文件(shell脚本),并放在hooks目录下面,并在config里面进行邮件发送的相关配置。如果我将post- receive-email文件mv成post-receive时,项目程序push代码并commit,项目里面的其他成员是可以收到邮件的。但是在 activity页面里面就没有成员commit的记录。
而当我不mv post-receive-email成post-receive时,项目成员push文件并commit,就会在activity里面有commit记录,但就是不会自动发送邮件。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(18)
能看出为什么shell脚本插在post-receive里面没有结果输出 的原因吗
回复
额..不能...
这就是他们的差别哈,多引入了一个文件,多执行了一条语句,具体的执行了哪些代码你的分别去看update与post_receive这两个函数,ruby很容易懂的,基本都是语义化的代码,直接翻译过来是啥意思基本上就是干啥的
引用来自“fancy_ff”的评论
引用来自“独孤青冥”的评论
after_update是rails的特性,他不是文件,是一段代码哈,作用就是更新后自动触发,代码具体在哪我也不知道....你找找gitlab-shell,在你gitlab的同级目录下
引用来自“独孤青冥”的评论
after_update是rails的特性,他不是文件,是一段代码哈,作用就是更新后自动触发,代码具体在哪我也不知道....你找找gitlab-shell,在你gitlab的同级目录下
after_update是rails的特性,他不是文件,是一段代码哈,作用就是更新后自动触发,代码具体在哪我也不知道....你找找gitlab-shell,在你gitlab的同级目录下
你好,因为评论输入不了那么多内容,麻烦你看一下我回复的引用内容。。谢谢 啦
不是放在哪个目录下,是写在代码里面,也就是要修改gitlab的代码...
你知道git的代码是在哪里吗?就是执行这个脚本的代码
额,不会~~
下图是页面上的记录:
如果把Post-receive-email这个放在后面调用,则会出现页面有记录,但是却收不到邮件。下图是页面上的记录:
放在图中位置则是能收到邮件,但是页面记录就没有了。。。
额..我们用的版本大概是5点几,不知道你说的activity页面时哪个页面..另外,我不熟悉你这个版本的gitlab,不知道问题出在哪,但你可以试一试同时存在两份shell脚本并且修改ruby脚本让他分别触发两个shell脚本,这样就解决你的问题了....当然,你可以试着将两个脚本搞成一个,或者开调试模式追踪不发送邮件的问题,抱歉,我能给的建议就这么多
我看了你的截图,是有调用hooks目录下的shell脚本,你可以试着在下面再写一个调用
hook就是在gitlab中的项目下的,ruby文件(生成操作记录的)是系统自带的,我没有动过地址。里面调用的post-receive-email文件(shell)是网上下载的发送邮件的脚本,按网上教程也是放在这个目录下。因为hook只会执行post-receive这个文件 ,所以我就把下载的shell文件放在ruby里面调用了
你说的动态生成的文件是放到gitlab哪个目录下呢?
我们这边没有生成过after_update文件。如果我在前台创建一个项目,假如是test.git,那么它就会在后台自动生成test.git目录,然后在test.git目录下面有discription、config、hooks目录等等hooks目录下面就有自动生成update、pre-receive、post-receive这三个文件,并没有after_update文件。
等会,我看着有点不对劲..为什么邮件发送以及动态生成全放在hook里面?应该写在gitlab中做个 after_update才对啊,我看了一下我们正在使用的版本,压根就没有这个文件,也没有这个调用....这样,你邮件发送放在hook里面,但是动态生成你放到gitlab 中去,我们目前就是这样做的...另外,你可以对比一下两个shell脚本有什么不同,然后整合成一个脚本调用试试