mavam / gitdub Goto Github PK
View Code? Open in Web Editor NEW:outbox_tray: A github WebHook that emails detailed diffs of your commits.
License: BSD 3-Clause "New" or "Revised" License
:outbox_tray: A github WebHook that emails detailed diffs of your commits.
License: BSD 3-Clause "New" or "Revised" License
Given that github now has entire ranges, this seems necessary.
I'm seeing:
[2017-02-08 20:54:00] INFO gitdub | received push from XXXX for commits aba373...4607d9
2017-02-08 20:54:00 - NoMethodError - undefined method `each' for nil:NilClass:
./gitdub:80:in `process'
./gitdub:158:in `block in <class:GitDubServer>'
/var/lib/gems/1.9.1/gems/sinatra-1.4.8/lib/sinatra/base.rb:1611:in `call'
/var/lib/gems/1.9.1/gems/sinatra-1.4.8/lib/sinatra/base.rb:1611:in `block in compile!'
/var/lib/gems/1.9.1/gems/sinatra-1.4.8/lib/sinatra/base.rb:975:in `[]'
/var/lib/gems/1.9.1/gems/sinatra-1.4.8/lib/sinatra/base.rb:975:in `block (3 levels) in route!'
/var/lib/gems/1.9.1/gems/sinatra-1.4.8/lib/sinatra/base.rb:994:in `route_eval'
/var/lib/gems/1.9.1/gems/sinatra-1.4.8/lib/sinatra/base.rb:975:in `block (2 levels) in route!'
/var/lib/gems/1.9.1/gems/sinatra-1.4.8/lib/sinatra/base.rb:1015:in `block in process_route'
/var/lib/gems/1.9.1/gems/sinatra-1.4.8/lib/sinatra/base.rb:1013:in `catch'
/var/lib/gems/1.9.1/gems/sinatra-1.4.8/lib/sinatra/base.rb:1013:in `process_route'
/var/lib/gems/1.9.1/gems/sinatra-1.4.8/lib/sinatra/base.rb:973:in `block in route!'
/var/lib/gems/1.9.1/gems/sinatra-1.4.8/lib/sinatra/base.rb:972:in `each'
/var/lib/gems/1.9.1/gems/sinatra-1.4.8/lib/sinatra/base.rb:972:in `route!'
/var/lib/gems/1.9.1/gems/sinatra-1.4.8/lib/sinatra/base.rb:985:in `route!'
/var/lib/gems/1.9.1/gems/sinatra-1.4.8/lib/sinatra/base.rb:1085:in `block in dispatch!'
/var/lib/gems/1.9.1/gems/sinatra-1.4.8/lib/sinatra/base.rb:1067:in `block in invoke'
/var/lib/gems/1.9.1/gems/sinatra-1.4.8/lib/sinatra/base.rb:1067:in `catch'
/var/lib/gems/1.9.1/gems/sinatra-1.4.8/lib/sinatra/base.rb:1067:in `invoke'
/var/lib/gems/1.9.1/gems/sinatra-1.4.8/lib/sinatra/base.rb:1082:in `dispatch!'
/var/lib/gems/1.9.1/gems/sinatra-1.4.8/lib/sinatra/base.rb:907:in `block in call!'
/var/lib/gems/1.9.1/gems/sinatra-1.4.8/lib/sinatra/base.rb:1067:in `block in invoke'
/var/lib/gems/1.9.1/gems/sinatra-1.4.8/lib/sinatra/base.rb:1067:in `catch'
/var/lib/gems/1.9.1/gems/sinatra-1.4.8/lib/sinatra/base.rb:1067:in `invoke'
/var/lib/gems/1.9.1/gems/sinatra-1.4.8/lib/sinatra/base.rb:907:in `call!'
/var/lib/gems/1.9.1/gems/sinatra-1.4.8/lib/sinatra/base.rb:895:in `call'
/var/lib/gems/1.9.1/gems/rack-protection-1.5.3/lib/rack/protection/xss_header.rb:18:in `call'
/var/lib/gems/1.9.1/gems/rack-protection-1.5.3/lib/rack/protection/path_traversal.rb:16:in `call'
/var/lib/gems/1.9.1/gems/rack-protection-1.5.3/lib/rack/protection/json_csrf.rb:18:in `call'
/var/lib/gems/1.9.1/gems/rack-protection-1.5.3/lib/rack/protection/base.rb:49:in `call'
/var/lib/gems/1.9.1/gems/rack-protection-1.5.3/lib/rack/protection/base.rb:49:in `call'
/var/lib/gems/1.9.1/gems/rack-protection-1.5.3/lib/rack/protection/frame_options.rb:31:in `call'
/var/lib/gems/1.9.1/gems/rack-1.6.5/lib/rack/nulllogger.rb:9:in `call'
/var/lib/gems/1.9.1/gems/rack-1.6.5/lib/rack/head.rb:13:in `call'
/var/lib/gems/1.9.1/gems/sinatra-1.4.8/lib/sinatra/base.rb:182:in `call'
/var/lib/gems/1.9.1/gems/sinatra-1.4.8/lib/sinatra/base.rb:2013:in `call'
/var/lib/gems/1.9.1/gems/sinatra-1.4.8/lib/sinatra/base.rb:1487:in `block in call'
/var/lib/gems/1.9.1/gems/sinatra-1.4.8/lib/sinatra/base.rb:1787:in `synchronize'
/var/lib/gems/1.9.1/gems/sinatra-1.4.8/lib/sinatra/base.rb:1487:in `call'
/var/lib/gems/1.9.1/gems/rack-1.6.5/lib/rack/handler/webrick.rb:88:in `service'
/usr/lib/ruby/1.9.1/webrick/httpserver.rb:138:in `service'
/usr/lib/ruby/1.9.1/webrick/httpserver.rb:94:in `run'
/usr/lib/ruby/1.9.1/webrick/server.rb:191:in `block in start_thread'
192.30.252.34 - - [08/Feb/2017:20:54:00 PST] "POST / HTTP/1.1" 500 30
Is this a configuration issue or an issue where something has changed in how github / git-notifier / etc has operators?
It is not necessary to clone the full tree for each repository, git-notifier also works with bare repositories.
It would be nice if gitdub would (re)read the config file upon receiving a request. This way the configuration could be changed (at least in part, in particular the repositories and email lists) without the need to restart the server. Not only would this eliminate a manual task and a potential pitfall (forgetting to do it), but it would also prevent notifications for incoming changes getting delayed (until the next change of that repo) if they happen to be during the downtime.
It seems that there is a minor bug with matching entries with shared leading substring. I tried using this configuration:
- id: fastai/fastai
subject: '[fastai]'
- id: fastai/fastai_docs
subject: '[fastai_docs]'
And all emails were sent with the subject of the first entry. I found a workaround by flipping the order of the two entries, putting the longer one first, and now it works, but this is probably something that needs to be fixed ;)
Thank you.
This issue is a setup documentation enhancement request:
After setting up gitdub I was looking for a quick way to configure it as a system service. I found this repo that has pre-made scripts which require just a few minor tweaks to make them workable. Here is the instructions page with details.
So perhaps it'd save others some time to share how mine was setup:
I used a debian rc.d template which works on ubuntu:
wget https://raw.github.com/frdmn/service-daemons/master/debian -O /etc/init.d/gitdub
Edit /etc/init.d/gitdub
# I placed the gitdub setup under /var/gitdub
NAME="gitdub"
PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/var/gitdub"
APPDIR="/var/gitdub"
APPBIN="/var/gitdub/gitdub"
APPARGS="config.yml"
USER="nobody"
GROUP="nobody"
Make sure the script is executable:
chmod +x /etc/init.d/gitdub
Enable the daemon with:
update-rc.d gitdub defaults
Start the service with:
service gitdub start
Stop the service with:
service gitdub stop
I realize that people may use gitdub on various setups, therefore please consider including at least the link to that repo in the gitdub setup section to save others the search.
Thank you for this great tool, Matthias.
I'm using GitDub for a couple of public repos, and it works well. We'd also like to use it for a bunch of repos that are secured. There are a few ways I could do this by converting GitDub to use SSH w/ keys, or continuing to use https by adding user:pass into the command line. Wondered if you'd already thought about this and have a recommended solution.
I am unable to set mailers for private repos please help..
192.30.252.0/24 is the new range.
With GitHub deprecating their commit notification email sending service (https://developer.github.com/changes/2018-04-25-github-services-deprecation/) people like me who came to heavily rely on this feature for a lot of their GitHub repos are looking for easy replacements: https://stackoverflow.com/questions/53422244/how-to-get-commit-notifications-by-email-after-january
gitdub seems like a nice way to integrate with the GitHub webhook and send out notification emails on each push. However, I neither have the skills nor the time to set up and maintain a web server just to send out these emails. Is anyone here aware of an easy solution to replicate the notification email functionality to which an open source project can just sign up for free?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.