Skip to content
Snippets Groups Projects
Commit 0f6ebcb6 authored by gitlabhq's avatar gitlabhq
Browse files

v1.0

parent 93efff94
No related branches found
No related tags found
No related merge requests found
Showing
with 378 additions and 0 deletions
class CreateRailsAdminHistoriesTable < ActiveRecord::Migration
def self.up
create_table :rails_admin_histories do |t|
t.text :message # title, name, or object_id
t.string :username
t.integer :item
t.string :table
t.integer :month, :limit => 2
t.integer :year, :limit => 5
t.timestamps
end
add_index(:rails_admin_histories, [:item, :table, :month, :year], :name => 'index_rails_admin_histories' )
end
def self.down
drop_table :rails_admin_histories
end
end
class AddAdminFieldToUser < ActiveRecord::Migration
def change
add_column :users, :admin, :boolean, :default => false, :null => false
end
end
class RemoveAdmin < ActiveRecord::Migration
def up
drop_table :rails_admin_histories
end
def down
raise "No rollback"
end
end
class CreateNotes < ActiveRecord::Migration
def change
create_table :notes do |t|
t.string :note
t.integer :noteable_id
t.string :noteable_type
t.integer :author_id
t.timestamps
end
end
end
class AddProjectIdForNote < ActiveRecord::Migration
def up
add_column :notes, :project_id, :integer
end
def down
remove_column :notes, :project_id, :integer
end
end
class ChangeNoteableIdForNote < ActiveRecord::Migration
def up
change_column :notes, :noteable_id, :string
end
def down
change_column :notes, :noteable_id, :integer
end
end
class AddAttachmentToNote < ActiveRecord::Migration
def change
add_column :notes, :attachment, :string
end
end
class AddAllowRepoCreationForUser < ActiveRecord::Migration
def up
add_column :users, :allowed_create_repo, :boolean, :default => true, :null => false
end
def down
remove_column :users, :allowed_create_repo
end
end
class AddOwnertoProject < ActiveRecord::Migration
def change
add_column :projects, :owner_id, :integer
end
end
class AddProjectsLimitToUser < ActiveRecord::Migration
def change
add_column :users, :projects_limit, :integer, :default => 10
end
end
class RemoveAllowCreateRepoFromUser < ActiveRecord::Migration
def up
remove_column :users, :allowed_create_repo
end
def down
add_column :users, :allowed_create_repo, :boolean, :default => true, :null => false
end
end
AAAAB3NzaC1yc2EAAAABJQAAAIEAiPWx6WM4lhHNedGfBpPJNPpZ7yKu+dnn1SJejgt4
596k6YjzGGphH2TUxwKzxcKDKKezwkpfnxPkSMkuEspGRt/aZZ9wa++Oi7Qkr8prgHc4
soW6NUlfDzpvZK2H5E7eQaSeP3SAwGmQKUFHCddNaP0L+hM7zhFNzjFvpaMgJw0=
# encoding: UTF-8
# This file is auto-generated from the current state of the database. Instead
# of editing this file, please use the migrations feature of Active Record to
# incrementally modify your database, and then regenerate this schema definition.
#
# Note that this schema.rb definition is the authoritative source for your
# database schema. If you need to create the application database on another
# system, you should be using db:schema:load, not running all the migrations
# from scratch. The latter is a flawed and unsustainable approach (the more migrations
# you'll amass, the slower it'll run and the greater likelihood for issues).
#
# It's strongly recommended to check this file into your version control system.
ActiveRecord::Schema.define(:version => 20111009111204) do
create_table "issues", :force => true do |t|
t.string "title"
t.text "content"
t.integer "assignee_id"
t.integer "author_id"
t.integer "project_id"
t.datetime "created_at"
t.datetime "updated_at"
t.boolean "closed", :default => false, :null => false
end
create_table "keys", :force => true do |t|
t.integer "user_id", :null => false
t.datetime "created_at"
t.datetime "updated_at"
t.text "key"
t.string "title"
t.string "identifier"
end
create_table "notes", :force => true do |t|
t.string "note"
t.string "noteable_id"
t.string "noteable_type"
t.integer "author_id"
t.datetime "created_at"
t.datetime "updated_at"
t.integer "project_id"
t.string "attachment"
end
create_table "projects", :force => true do |t|
t.string "name"
t.string "path"
t.text "description"
t.datetime "created_at"
t.datetime "updated_at"
t.boolean "private_flag", :default => true, :null => false
t.string "code"
t.integer "owner_id"
end
create_table "users", :force => true do |t|
t.string "email", :default => "", :null => false
t.string "encrypted_password", :limit => 128, :default => "", :null => false
t.string "reset_password_token"
t.datetime "reset_password_sent_at"
t.datetime "remember_created_at"
t.integer "sign_in_count", :default => 0
t.datetime "current_sign_in_at"
t.datetime "last_sign_in_at"
t.string "current_sign_in_ip"
t.string "last_sign_in_ip"
t.datetime "created_at"
t.datetime "updated_at"
t.string "name"
t.boolean "admin", :default => false, :null => false
t.integer "projects_limit", :default => 10
end
add_index "users", ["email"], :name => "index_users_on_email", :unique => true
add_index "users", ["reset_password_token"], :name => "index_users_on_reset_password_token", :unique => true
create_table "users_projects", :force => true do |t|
t.integer "user_id", :null => false
t.integer "project_id", :null => false
t.boolean "read", :default => false
t.boolean "write", :default => false
t.boolean "admin", :default => false
t.datetime "created_at"
t.datetime "updated_at"
end
end
Use this README file to introduce your application and point to useful places in the API for learning more.
Run "rake doc:app" to generate API documentation for your models, controllers, helpers, and libraries.
module Install
class << self
def prepare(env)
puts green " == Starting for ENV=#{env} ..."
puts "rvm detected" if is_rvm?
bundler
db(env)
puts green " == Done! Now you can start server"
end
def bundler
command 'gem install bundler'
command 'bundle install'
end
def db(env)
command "bundle exec rake db:setup RAILS_ENV=#{env}"
command "bundle exec rake db:seed_fu RAILS_ENV=#{env}"
end
def is_rvm?
`type rvm | head -1` =~ /^rvm is/
end
def colorize(text, color_code)
"\033[#{color_code}#{text}\033[0m"
end
def red(text)
colorize(text, "31m")
end
def green(text)
colorize(text, "32m")
end
def command(string)
`#{string}`
if $?.to_i > 0
puts red " == #{string} - FAIL"
puts red " == Error during configure"
exit
else
puts green " == #{string} - OK"
end
end
end
end
class FileSizeValidator < ActiveModel::EachValidator
MESSAGES = { :is => :wrong_size, :minimum => :size_too_small, :maximum => :size_too_big }.freeze
CHECKS = { :is => :==, :minimum => :>=, :maximum => :<= }.freeze
DEFAULT_TOKENIZER = lambda { |value| value.split(//) }
RESERVED_OPTIONS = [:minimum, :maximum, :within, :is, :tokenizer, :too_short, :too_long]
def initialize(options)
if range = (options.delete(:in) || options.delete(:within))
raise ArgumentError, ":in and :within must be a Range" unless range.is_a?(Range)
options[:minimum], options[:maximum] = range.begin, range.end
options[:maximum] -= 1 if range.exclude_end?
end
super
end
def check_validity!
keys = CHECKS.keys & options.keys
if keys.empty?
raise ArgumentError, 'Range unspecified. Specify the :within, :maximum, :minimum, or :is option.'
end
keys.each do |key|
value = options[key]
unless value.is_a?(Integer) && value >= 0
raise ArgumentError, ":#{key} must be a nonnegative Integer"
end
end
end
def validate_each(record, attribute, value)
raise(ArgumentError, "A CarrierWave::Uploader::Base object was expected") unless value.kind_of? CarrierWave::Uploader::Base
value = (options[:tokenizer] || DEFAULT_TOKENIZER).call(value) if value.kind_of?(String)
CHECKS.each do |key, validity_check|
next unless check_value = options[key]
value ||= [] if key == :maximum
value_size = value.size
next if value_size.send(validity_check, check_value)
errors_options = options.except(*RESERVED_OPTIONS)
errors_options[:file_size] = help.number_to_human_size check_value
default_message = options[MESSAGES[key]]
errors_options[:message] ||= default_message if default_message
record.errors.add(attribute, MESSAGES[key], errors_options)
end
end
def help
Helper.instance
end
class Helper
include Singleton
include ActionView::Helpers::NumberHelper
end
end
require 'inifile'
require 'timeout'
require 'fileutils'
class Gitosis
class AccessDenied < StandardError; end
def pull
# create tmp dir
@local_dir = File.join(Dir.tmpdir,"gitlabhq-gitosis-#{Time.now.to_i}")
Dir.mkdir @local_dir
`git clone #{GITOSIS['admin_uri']} #{@local_dir}/gitosis`
end
def push
Dir.chdir(File.join(@local_dir, "gitosis"))
`git add -A`
`git commit -am "Gitlab"`
`git push`
Dir.chdir(Rails.root)
FileUtils.rm_rf(@local_dir)
end
def configure
status = Timeout::timeout(20) do
File.open(File.join(Dir.tmpdir,"gitlabhq-gitosis.lock"), "w+") do |f|
f.flock(File::LOCK_EX)
pull
yield(self)
push
f.flock(File::LOCK_UN)
end
end
rescue Exception => ex
raise Gitosis::AccessDenied.new("gitosis timeout")
end
def destroy_project(project)
FileUtils.rm_rf(project.path_to_repo)
conf = IniFile.new(File.join(@local_dir,'gitosis','gitosis.conf'))
conf.delete_section("group #{project.path}")
conf.write
end
#update or create
def update_keys(user, key)
File.open(File.join(@local_dir, 'gitosis/keydir',"#{user}.pub"), 'w') {|f| f.write(key.gsub(/\n/,'')) }
end
def delete_key(user)
File.unlink(File.join(@local_dir, 'gitosis/keydir',"#{user}.pub"))
`cd #{File.join(@local_dir,'gitosis')} ; git rm keydir/#{user}.pub`
end
#update or create
def update_project(repo_name, name_writers)
# write config file
conf = IniFile.new(File.join(@local_dir,'gitosis','gitosis.conf'))
conf["group #{repo_name}"]['writable'] = repo_name
conf["group #{repo_name}"]['members'] = name_writers.join(' ')
conf.write
end
end
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment