forked from ungleich-public/cdist
		
	+hook
Signed-off-by: Nico Schottelius <nico@kr.ethz.ch>
This commit is contained in:
		
					parent
					
						
							
								0d53a0dca9
							
						
					
				
			
			
				commit
				
					
						7792e45f49
					
				
			
		
					 2 changed files with 186 additions and 0 deletions
				
			
		
							
								
								
									
										108
									
								
								doc/internal/git-post-commit-hook
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										108
									
								
								doc/internal/git-post-commit-hook
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,108 @@
 | 
			
		|||
#!/usr/bin/env bash
 | 
			
		||||
# Distributed under the terms of the GNU General Public License v2
 | 
			
		||||
# Copyright (c) 2006 Fernando J. Pereda <ferdy@gentoo.org>
 | 
			
		||||
#
 | 
			
		||||
# Git CIA bot in bash. (no, not the POSIX shell, bash).
 | 
			
		||||
# It is *heavily* based on Git ciabot.pl by Petr Baudis.
 | 
			
		||||
#
 | 
			
		||||
# It is meant to be run either on a post-commit hook or in an update
 | 
			
		||||
# hook:
 | 
			
		||||
#
 | 
			
		||||
# post-commit: It parses latest commit and current HEAD to get the
 | 
			
		||||
# information it needs.
 | 
			
		||||
#
 | 
			
		||||
# update: You have to call it once per merged commit:
 | 
			
		||||
#
 | 
			
		||||
#       refname=$1
 | 
			
		||||
#       oldhead=$2
 | 
			
		||||
#       newhead=$3
 | 
			
		||||
#       for merged in $(git rev-list ${oldhead}..${newhead} | tac) ; do
 | 
			
		||||
#               /path/to/ciabot.bash ${refname} ${merged}
 | 
			
		||||
#       done
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
# The project as known to CIA
 | 
			
		||||
project="cdist"
 | 
			
		||||
 | 
			
		||||
# Set to true if you want the full log to be sent
 | 
			
		||||
noisy=false
 | 
			
		||||
 | 
			
		||||
# Addresses for the e-mail
 | 
			
		||||
from="nico-cia.vc@schottelius.org"
 | 
			
		||||
to="cia@cia.vc"
 | 
			
		||||
 | 
			
		||||
# SMTP client to use
 | 
			
		||||
sendmail="/usr/sbin/sendmail -f ${from} ${to}"
 | 
			
		||||
 | 
			
		||||
# Changeset URL
 | 
			
		||||
url="http://git.schottelius.org/?p=${project};a=commit;h=@@sha1@@"
 | 
			
		||||
 | 
			
		||||
# You shouldn't be touching anything else.
 | 
			
		||||
if [[ $# = 0 ]] ; then
 | 
			
		||||
	refname=$(git symbolic-ref HEAD 2>/dev/null)
 | 
			
		||||
	merged=$(git rev-parse HEAD)
 | 
			
		||||
else
 | 
			
		||||
	refname=$1
 | 
			
		||||
	merged=$2
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
refname=${refname##refs/heads/}
 | 
			
		||||
 | 
			
		||||
gitver=$(git --version)
 | 
			
		||||
gitver=${gitver##* }
 | 
			
		||||
 | 
			
		||||
rev=$(git describe ${merged} 2>/dev/null)
 | 
			
		||||
[[ -z ${rev} ]] && rev=${merged:0:12}
 | 
			
		||||
 | 
			
		||||
rawcommit=$(git cat-file commit ${merged})
 | 
			
		||||
 | 
			
		||||
author=$(sed -n -e '/^author .*<\([^@]*\).*$/s--\1-p' \
 | 
			
		||||
	<<< "${rawcommit}")
 | 
			
		||||
 | 
			
		||||
logmessage=$(sed -e '1,/^$/d' <<< "${rawcommit}")
 | 
			
		||||
${noisy} || logmessage=$(head -n 1 <<< "${logmessage}")
 | 
			
		||||
logmessage=${logmessage//&/&}
 | 
			
		||||
logmessage=${logmessage//</<}
 | 
			
		||||
logmessage=${logmessage//>/>}
 | 
			
		||||
 | 
			
		||||
ts=$(sed -n -e '/^author .*> \([0-9]\+\).*$/s--\1-p' \
 | 
			
		||||
	<<< "${rawcommit}")
 | 
			
		||||
 | 
			
		||||
out="
 | 
			
		||||
<message>
 | 
			
		||||
  <generator>
 | 
			
		||||
    <name>CIA Bash client for Git</name>
 | 
			
		||||
    <version>${gitver}</version>
 | 
			
		||||
    <url>http://dev.gentoo.org/~ferdy/stuff/ciabot.bash</url>
 | 
			
		||||
  </generator>
 | 
			
		||||
  <source>
 | 
			
		||||
    <project>${project}</project>
 | 
			
		||||
    <branch>${refname}</branch>
 | 
			
		||||
  </source>
 | 
			
		||||
  <timestamp>${ts}</timestamp>
 | 
			
		||||
  <body>
 | 
			
		||||
    <commit>
 | 
			
		||||
      <author>${author}</author>
 | 
			
		||||
      <revision>${rev}</revision>
 | 
			
		||||
      <files>
 | 
			
		||||
        $(git diff-tree -r --name-only ${merged} |
 | 
			
		||||
          sed -e '1d' -e 's-.*-<file>&</file>-')
 | 
			
		||||
      </files>
 | 
			
		||||
      <log>
 | 
			
		||||
${logmessage}
 | 
			
		||||
      </log>
 | 
			
		||||
      <url>${url//@@sha1@@/${merged}}</url>
 | 
			
		||||
    </commit>
 | 
			
		||||
  </body>
 | 
			
		||||
</message>"
 | 
			
		||||
 | 
			
		||||
${sendmail} << EOM
 | 
			
		||||
Message-ID: <${merged:0:12}.${author}@${project}>
 | 
			
		||||
From: ${from}
 | 
			
		||||
To: ${to}
 | 
			
		||||
Content-type: text/xml
 | 
			
		||||
Subject: DeliverXML
 | 
			
		||||
${out}
 | 
			
		||||
EOM
 | 
			
		||||
 | 
			
		||||
# vim: set tw=70 :
 | 
			
		||||
							
								
								
									
										78
									
								
								test/ssh-pseudo-interactive-explorer
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										78
									
								
								test/ssh-pseudo-interactive-explorer
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,78 @@
 | 
			
		|||
#!/bin/sh
 | 
			
		||||
#
 | 
			
		||||
# 2010 Nico Schottelius (nico-cdist at schottelius.org)
 | 
			
		||||
#
 | 
			
		||||
# This file is part of cdist.
 | 
			
		||||
#
 | 
			
		||||
# cdist is free software: you can redistribute it and/or modify
 | 
			
		||||
# it under the terms of the GNU General Public License as published by
 | 
			
		||||
# the Free Software Foundation, either version 3 of the License, or
 | 
			
		||||
# (at your option) any later version.
 | 
			
		||||
#
 | 
			
		||||
# cdist is distributed in the hope that it will be useful,
 | 
			
		||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
			
		||||
# GNU General Public License for more details.
 | 
			
		||||
#
 | 
			
		||||
# You should have received a copy of the GNU General Public License
 | 
			
		||||
# along with cdist. If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
#
 | 
			
		||||
# 
 | 
			
		||||
# Let's build a cconfig tree from a generic configuration (example)
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
d1="$(date)"
 | 
			
		||||
uname=$(ssh localhost "uname -r")
 | 
			
		||||
uname=$(ssh localhost "uname -r")
 | 
			
		||||
uname=$(ssh localhost "uname -r")
 | 
			
		||||
uname=$(ssh localhost "uname -r")
 | 
			
		||||
uname=$(ssh localhost "uname -r")
 | 
			
		||||
uname=$(ssh localhost "uname -r")
 | 
			
		||||
uname=$(ssh localhost "uname -r")
 | 
			
		||||
uname=$(ssh localhost "uname -r")
 | 
			
		||||
uname=$(ssh localhost "uname -r")
 | 
			
		||||
uname=$(ssh localhost "uname -r")
 | 
			
		||||
uname=$(ssh localhost "uname -r")
 | 
			
		||||
uname=$(ssh localhost "uname -r")
 | 
			
		||||
uname=$(ssh localhost "uname -r")
 | 
			
		||||
uname=$(ssh localhost "uname -r")
 | 
			
		||||
uname=$(ssh localhost "uname -r")
 | 
			
		||||
uname=$(ssh localhost "uname -r")
 | 
			
		||||
uname=$(ssh localhost "uname -r")
 | 
			
		||||
uname=$(ssh localhost "uname -r")
 | 
			
		||||
uname=$(ssh localhost "uname -r")
 | 
			
		||||
uname=$(ssh localhost "uname -r")
 | 
			
		||||
uname=$(ssh localhost "uname -r")
 | 
			
		||||
uname=$(ssh localhost "uname -r")
 | 
			
		||||
uname=$(ssh localhost "uname -r")
 | 
			
		||||
uname=$(ssh localhost "uname -r")
 | 
			
		||||
uname=$(ssh localhost "uname -r")
 | 
			
		||||
uname=$(ssh localhost "uname -r")
 | 
			
		||||
uname=$(ssh localhost "uname -r")
 | 
			
		||||
uname=$(ssh localhost "uname -r")
 | 
			
		||||
uname=$(ssh localhost "uname -r")
 | 
			
		||||
uname=$(ssh localhost "uname -r")
 | 
			
		||||
uname=$(ssh localhost "uname -r")
 | 
			
		||||
uname=$(ssh localhost "uname -r")
 | 
			
		||||
uname=$(ssh localhost "uname -r")
 | 
			
		||||
uname=$(ssh localhost "uname -r")
 | 
			
		||||
uname=$(ssh localhost "uname -r")
 | 
			
		||||
uname=$(ssh localhost "uname -r")
 | 
			
		||||
uname=$(ssh localhost "uname -r")
 | 
			
		||||
uname=$(ssh localhost "uname -r")
 | 
			
		||||
uname=$(ssh localhost "uname -r")
 | 
			
		||||
uname=$(ssh localhost "uname -r")
 | 
			
		||||
uname=$(ssh localhost "uname -r")
 | 
			
		||||
uname=$(ssh localhost "uname -r")
 | 
			
		||||
uname=$(ssh localhost "uname -r")
 | 
			
		||||
uname=$(ssh localhost "uname -r")
 | 
			
		||||
uname=$(ssh localhost "uname -r")
 | 
			
		||||
uname=$(ssh localhost "uname -r")
 | 
			
		||||
uname=$(ssh localhost "uname -r")
 | 
			
		||||
uname=$(ssh localhost "uname -r")
 | 
			
		||||
uname=$(ssh localhost "uname -r")
 | 
			
		||||
uname=$(ssh localhost "uname -r")
 | 
			
		||||
uname=$(ssh localhost "uname -r")
 | 
			
		||||
d2="$(date)"
 | 
			
		||||
 | 
			
		||||
echo $d1 $d2
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue