Pistos (owner)

Forks

Revisions

gist: 91784 Download_button fork
public
Description:
git post-receive hook script which makes Integrity rebuild. Place in hooks/ dir of receiving bare repo.
Public Clone URL: git://gist.github.com/91784.git
Embed All Files: show embed
push-to-integrity-post-receive #
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#!/usr/bin/env ruby19
 
require 'net/http'
require 'uri'
require 'json'
 
# EDIT POST_RECEIVE_URL
POST_RECEIVE_URL = 'http://hostname:8910/repository-name/push'
 
old_head, new_head, ref = STDIN.gets.split
revision_text = `git rev-list --format=medium #{new_head} ^#{old_head}`
revisions = []
revision_text.split( /\n/ ).each_slice( 6 ) { |s|
  sha1 = s[0][ /commit (\w+)/, 1 ]
  s[1] =~ /Author: (\w+) <(.+?)>/
  author_name, author_email = $1, $2
  timestamp = s[2][ /Date: +(.+?) -0/, 1 ]
  message = s[4..-1].join.strip
 
  revisions << {
    'id' => sha1,
    'author' => {
      'email' => author_email,
      'name' => author_name,
    },
    'message' => message,
    'timestamp' => timestamp,
  }
 
}
 
if revisions.empty?
  exit 0
end
 
payload = {
  'payload' => {
    "ref" => ref,
    "commits" => revisions,
  }.to_json
}
 
 
if pid = fork
  Process.detach pid
else
  Net::HTTP.post_form( URI.parse( POST_RECEIVE_URL ), payload )
end