Commit c699d6f0afde34d3ed41bd9d99f67e9b6de9267b

Script to setup the hooks

Check and fix symlinks

Commit diff

script/fixup_hooks

 
1#!/usr/bin/env ruby
2
3require 'tmpdir'
4require "fileutils"
5
6LOCK_FILE_PATH = File.join(Dir.tmpdir, "gitorious_task_lockfile")
7ENV["PATH"] = "/usr/local/bin/:/opt/local/bin:#{ENV["PATH"]}"
8
9if File.exist?(LOCK_FILE_PATH)
10 $stderr.puts "Task lockfile '#{LOCK_FILE_PATH}' exists!"
11 exit(1)
12end
13
14ENV["RAILS_ENV"] ||= "production"
15require File.dirname(__FILE__) + "/../config/environment"
16
17
18repo_path = GitoriousConfig['repository_base_path']
19repo_hooks = File.join(repo_path, ".hooks")
20gitorious_hooks = File.expand_path(File.join(File.dirname(__FILE__), "../data/hooks"))
21
22if not File.symlink?(repo_hooks)
23 if File.exist?(repo_hooks)
24 FileUtils.mv(repo_hooks, File.join(repo_path, ".hooks.backup"))
25 end
26
27 FileUtils.ln_s(gitorious_hooks, repo_hooks)
28elsif File.readlink(repo_hooks) != gitorious_hooks
29# puts "ln -sf #{gitorious_hooks} #{repo_hooks}"
30 File.unlink(repo_hooks)
31 FileUtils.ln_sf(gitorious_hooks, repo_hooks)
32end
33
34Dir.glob("#{repo_path}/**/*.git").each do |repo|
35 Dir.chdir(repo) do
36 hooks = File.join(repo, "hooks")
37 unless File.symlink?(hooks)
38 print "=> Fixing #{hooks}... "
39 $stdout.flush
40
41 if File.exist?(hooks)
42 FileUtils.mv(hooks, "hooks.backup")
43 end
44
45 FileUtils.ln_s("../../.hooks", "hooks")
46
47 puts "[OK]"
48 end
49 end
50end
toggle raw diff