Non-interactive AWS install by running a single script.
Merge branch 'master' into non-interactive-aws-install Conflicts: doc/installation.md Fix merge mess in installation.md
This commit is contained in:
parent
eae41ad1df
commit
b80dd3d242
215 changed files with 3829 additions and 3348 deletions
|
@ -1,16 +1,18 @@
|
|||
require 'digest/md5'
|
||||
|
||||
class Key < ActiveRecord::Base
|
||||
include SshKey
|
||||
belongs_to :user
|
||||
belongs_to :project
|
||||
|
||||
attr_protected :user_id
|
||||
|
||||
validates :title,
|
||||
presence: true,
|
||||
length: { within: 0..255 }
|
||||
|
||||
validates :key,
|
||||
presence: true,
|
||||
format: { :with => /ssh-.{3} / },
|
||||
length: { within: 0..5000 }
|
||||
|
||||
before_save :set_identifier
|
||||
|
@ -50,6 +52,10 @@ class Key < ActiveRecord::Base
|
|||
user.projects
|
||||
end
|
||||
end
|
||||
|
||||
def last_deploy?
|
||||
Key.where(identifier: identifier).count == 0
|
||||
end
|
||||
end
|
||||
# == Schema Information
|
||||
#
|
||||
|
|
|
@ -88,8 +88,11 @@ class MergeRequest < ActiveRecord::Base
|
|||
end
|
||||
|
||||
def unmerged_diffs
|
||||
commits = project.repo.commits_between(target_branch, source_branch).map {|c| Commit.new(c)}
|
||||
diffs = project.repo.diff(commits.first.prev_commit.id, commits.last.id) rescue []
|
||||
# Only show what is new in the source branch compared to the target branch, not the other way around.
|
||||
# The linex below with merge_base is equivalent to diff with three dots (git diff branch1...branch2)
|
||||
# From the git documentation: "git diff A...B" is equivalent to "git diff $(git-merge-base A B) B"
|
||||
common_commit = project.repo.git.native(:merge_base, {}, [target_branch, source_branch]).strip
|
||||
diffs = project.repo.diff(common_commit, source_branch)
|
||||
end
|
||||
|
||||
def last_commit
|
||||
|
|
|
@ -28,17 +28,9 @@ class Milestone < ActiveRecord::Base
|
|||
end
|
||||
|
||||
def percent_complete
|
||||
@percent_complete ||= begin
|
||||
total_i = self.issues.count
|
||||
closed_i = self.issues.closed.count
|
||||
if total_i > 0
|
||||
(closed_i * 100) / total_i
|
||||
else
|
||||
100
|
||||
end
|
||||
rescue => ex
|
||||
0
|
||||
end
|
||||
((self.issues.closed.count * 100) / self.issues.count).abs
|
||||
rescue ZeroDivisionError
|
||||
100
|
||||
end
|
||||
|
||||
def expires_at
|
||||
|
|
|
@ -2,13 +2,13 @@ require "grit"
|
|||
|
||||
class Project < ActiveRecord::Base
|
||||
include Repository
|
||||
include ProjectPush
|
||||
include PushObserver
|
||||
include Authority
|
||||
include Team
|
||||
|
||||
#
|
||||
# Relations
|
||||
#
|
||||
#
|
||||
belongs_to :owner, class_name: "User"
|
||||
has_many :users, through: :users_projects
|
||||
has_many :events, dependent: :destroy
|
||||
|
@ -25,12 +25,12 @@ class Project < ActiveRecord::Base
|
|||
|
||||
attr_accessor :error_code
|
||||
|
||||
#
|
||||
#
|
||||
# Protected attributes
|
||||
#
|
||||
attr_protected :private_flag, :owner_id
|
||||
|
||||
#
|
||||
#
|
||||
# Scopes
|
||||
#
|
||||
scope :public_only, where(private_flag: false)
|
||||
|
@ -158,7 +158,7 @@ class Project < ActiveRecord::Base
|
|||
end
|
||||
|
||||
def last_activity
|
||||
events.last || nil
|
||||
events.order("created_at ASC").last
|
||||
end
|
||||
|
||||
def last_activity_date
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
class ProtectedBranch < ActiveRecord::Base
|
||||
include GitHost
|
||||
|
||||
belongs_to :project
|
||||
validates_presence_of :project_id
|
||||
validates_presence_of :name
|
||||
|
@ -7,7 +9,7 @@ class ProtectedBranch < ActiveRecord::Base
|
|||
after_destroy :update_repository
|
||||
|
||||
def update_repository
|
||||
Gitlab::GitHost.system.update_project(project.path, project)
|
||||
git_host.update_repository(project)
|
||||
end
|
||||
|
||||
def commit
|
||||
|
|
|
@ -7,7 +7,7 @@ class User < ActiveRecord::Base
|
|||
|
||||
attr_accessible :email, :password, :password_confirmation, :remember_me, :bio,
|
||||
:name, :projects_limit, :skype, :linkedin, :twitter, :dark_scheme,
|
||||
:theme_id, :force_random_password
|
||||
:theme_id, :force_random_password, :extern_uid, :provider
|
||||
|
||||
attr_accessor :force_random_password
|
||||
|
||||
|
@ -54,6 +54,8 @@ class User < ActiveRecord::Base
|
|||
|
||||
validates :bio, length: { within: 0..255 }
|
||||
|
||||
validates :extern_uid, :allow_blank => true, :uniqueness => {:scope => :provider}
|
||||
|
||||
before_save :ensure_authentication_token
|
||||
alias_attribute :private_token, :authentication_token
|
||||
|
||||
|
@ -84,21 +86,31 @@ class User < ActiveRecord::Base
|
|||
where('id NOT IN (SELECT DISTINCT(user_id) FROM users_projects)')
|
||||
end
|
||||
|
||||
def self.find_for_ldap_auth(omniauth_info)
|
||||
name = omniauth_info.name.force_encoding("utf-8")
|
||||
email = omniauth_info.email.downcase unless omniauth_info.email.nil?
|
||||
raise OmniAuth::Error, "LDAP accounts must provide an email address" if email.nil?
|
||||
def self.find_for_ldap_auth(auth, signed_in_resource=nil)
|
||||
uid = auth.info.uid
|
||||
provider = auth.provider
|
||||
name = auth.info.name.force_encoding("utf-8")
|
||||
email = auth.info.email.downcase unless auth.info.email.nil?
|
||||
raise OmniAuth::Error, "LDAP accounts must provide an uid and email address" if uid.nil? or email.nil?
|
||||
|
||||
if @user = User.find_by_email(email)
|
||||
if @user = User.find_by_extern_uid_and_provider(uid, provider)
|
||||
@user
|
||||
# workaround for backward compatibility
|
||||
elsif @user = User.find_by_email(email)
|
||||
logger.info "Updating legacy LDAP user #{email} with extern_uid => #{uid}"
|
||||
@user.update_attributes(:extern_uid => uid, :provider => provider)
|
||||
@user
|
||||
else
|
||||
logger.info "Creating user from LDAP login {uid => #{uid}, name => #{name}, email => #{email}}"
|
||||
password = Devise.friendly_token[0, 8].downcase
|
||||
@user = User.create(
|
||||
name: name,
|
||||
email: email,
|
||||
password: password,
|
||||
password_confirmation: password,
|
||||
projects_limit: Gitlab.config.default_projects_limit
|
||||
:extern_uid => uid,
|
||||
:provider => provider,
|
||||
:name => name,
|
||||
:email => email,
|
||||
:password => password,
|
||||
:password_confirmation => password,
|
||||
:projects_limit => Gitlab.config.default_projects_limit
|
||||
)
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
class UsersProject < ActiveRecord::Base
|
||||
include GitHost
|
||||
|
||||
GUEST = 10
|
||||
REPORTER = 20
|
||||
DEVELOPER = 30
|
||||
|
@ -58,9 +60,7 @@ class UsersProject < ActiveRecord::Base
|
|||
end
|
||||
|
||||
def update_repository
|
||||
Gitlab::GitHost.system.new.configure do |c|
|
||||
c.update_project(project.path, project)
|
||||
end
|
||||
git_host.update_repository(project)
|
||||
end
|
||||
|
||||
def project_access_human
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue