summaryrefslogtreecommitdiff
path: root/example/project-hooks
diff options
context:
space:
mode:
authorDaniel Silverstone <dsilvers@digital-scurf.org>2012-08-16 09:17:49 +0100
committerDaniel Silverstone <dsilvers@digital-scurf.org>2012-08-16 09:17:49 +0100
commite7b30cdaae17e18f64781fcd97d85f1b21c81744 (patch)
treea762c258d1b431214b08f58d072a7bf1d354b33b /example/project-hooks
parent51f2600aafb0aa20dc889391cf0a190cdd682f95 (diff)
downloadgitano-e7b30cdaae17e18f64781fcd97d85f1b21c81744.tar.gz
EXAMPLE: Rename 'example-hooks' to 'project-hooks'
Diffstat (limited to 'example/project-hooks')
-rw-r--r--example/project-hooks/history-must-be-merges.update.lua29
1 files changed, 29 insertions, 0 deletions
diff --git a/example/project-hooks/history-must-be-merges.update.lua b/example/project-hooks/history-must-be-merges.update.lua
new file mode 100644
index 0000000..9cac773
--- /dev/null
+++ b/example/project-hooks/history-must-be-merges.update.lua
@@ -0,0 +1,29 @@
+-- history-must-be-merges.update.lua
+--
+-- Example for hooks/update.lua in a project which ensures that all
+-- branches (refs/heads/...) only ever get merge commits.
+--
+-- Copyright 2012 Daniel Silverstone <dsilvers@digital-scurf.org>
+--
+
+local repo, ref, oldsha, newsha = ...
+
+local branch = ref:match("^refs/heads/(.+)$")
+if branch then
+ log.state("Looking at commit history on: " .. branch)
+
+ local commit = repo:get(newsha)
+
+ while commit.sha ~= oldsha do
+ commit = commit.content
+ local parents = commit.parents
+ if #parents < 2 then
+ error("Detected non-merge-commit during parent walk, at " .. commit.sha)
+ end
+ commit = parents[1]
+ end
+
+ log.state("Commits between old and new sha seem to all be merge commits")
+else
+ log.state("Skipping commit history check on: " .. ref)
+end