+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