Skip to content
Snippets Groups Projects
Commit 819f6945 authored by Francisco Juan's avatar Francisco Juan
Browse files

removed redmine-gitolite plugin

parent 7bc67f4e
No related branches found
No related tags found
No related merge requests found
Showing
with 0 additions and 468 deletions
<?xml version="1.0" encoding="UTF-8"?>
<loadpath>
<pathentry path="" type="src"/>
<pathentry path="org.rubypeople.rdt.launching.RUBY_CONTAINER" type="con"/>
</loadpath>
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>redmine-gitolite</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.rubypeople.rdt.core.rubybuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.rubypeople.rdt.core.rubynature</nature>
</natures>
</projectDescription>
= Patches
* work with gitolite
* support subproject git repo. (e.g. git@site.name:parent_project/subproject.git)
* fix bugs.
= Redmine Gitolite
A Redmine plugin which manages your gitolite configuration based on your projects and memberships in Redmine. Includes Public Key management views (extracted from http://plan.io).
This plugin was originally developed by Jan Schulz-Hofen for http://plan.io. Several updates/fixes were provided by github users untoldwind, tingar and ericpaulbishop. These updates were merged together and expanded upon by Eric Bishop.
In order to use this plugin you must have the following gems installed:
lockfile
inifile
net-ssh
== Copyright & License
Copyright (c) 2009-2010 Jan Schulz-Hofen, ROCKET RENTALS GmbH (http://www.rocket-rentals.de). MIT License.
Copyright (c) 2010 Eric Bishop (ericpaulbishop@gmail.com) MIT License.
class GitolitePublicKeysController < ApplicationController
unloadable
before_filter :require_login
before_filter :set_user_variable
before_filter :find_gitolite_public_key, :except => [:index, :new, :create]
def index
@status = if (session[:gitolite_public_key_filter_status]=params[:status]).nil?
GitolitePublicKey::STATUS_ACTIVE
elsif params[:status].blank?
nil
else
params[:status] == "true"
end
c = ARCondition.new(!@status.nil? ? ["active=?", @status] : nil)
@gitolite_public_keys = @user.gitolite_public_keys.all(:order => 'active DESC, created_at DESC', :conditions => c.conditions)
respond_to do |format|
format.html # index.html.erb
format.json { render :json => @gitolite_public_keys }
end
end
def edit
end
def update
if @gitolite_public_key.update_attributes(params[:public_key])
flash[:notice] = l(:notice_public_key_updated)
redirect_to url_for(:action => 'index', :status => session[:gitolite_public_key_filter_status])
else
render :action => 'edit'
end
end
def new
@gitolite_public_key = GitolitePublicKey.new(:user => @user)
end
def create
@gitolite_public_key = GitolitePublicKey.new(params[:public_key].merge(:user => @user))
if @gitolite_public_key.save
flash[:notice] = l(:notice_public_key_added)
redirect_to url_for(:action => 'index', :status => session[:gitolite_public_key_filter_status])
else
render :action => 'new'
end
end
def show
respond_to do |format|
format.html # show.html.erb
format.json { render :json => @gitolite_public_key }
end
end
protected
def set_user_variable
@user = User.current
end
def find_gitolite_public_key
key = GitolitePublicKey.find_by_id(params[:id])
if key and key.user == @user
@gitolite_public_key = key
elsif key
render_403
else
render_404
end
end
end
module GitolitePublicKeysHelper
def gitolite_public_keys_status_options_for_select(user, selected)
key_count_by_active = user.gitolite_public_keys.count(:group => 'active').to_hash
options_for_select([[l(:label_all), nil],
["#{l(:status_active)} (#{key_count_by_active[true].to_i})", GitolitePublicKey::STATUS_ACTIVE],
["#{l(:status_locked)} (#{key_count_by_active[false].to_i})", GitolitePublicKey::STATUS_LOCKED]], selected)
end
end
\ No newline at end of file
class GitoliteObserver < ActiveRecord::Observer
observe :project, :user, :gitolite_public_key, :member, :role, :repository
# def before_create(object)
# if object.is_a?(Project)
# repo = Repository::Git.new
# repo.url = repo.root_url = File.join(Gitolite::GITOSIS_BASE_PATH,"#{object.identifier}.git")
# object.repository = repo
# end
# end
def after_save(object) ; update_repositories(object) ; end
def after_destroy(object) ; update_repositories(object) ; end
protected
def update_repositories(object)
case object
when Repository then Gitolite::update_repositories(object.project)
when User then Gitolite::update_repositories(object.projects) unless is_login_save?(object)
when GitolitePublicKey then Gitolite::update_repositories(object.user.projects)
when Member then Gitolite::update_repositories(object.project)
when Role then
Gitolite::update_repositories(object.members.map(&:project).uniq.compact) rescue nil
end
end
private
# Test for the fingerprint of changes to the user model when the User actually logs in.
def is_login_save?(user)
user.changed? && user.changed.length == 2 && user.changed.include?("updated_on") && user.changed.include?("last_login_on")
end
end
class GitolitePublicKey < ActiveRecord::Base
STATUS_ACTIVE = 1
STATUS_LOCKED = 0
belongs_to :user
validates_uniqueness_of :title, :scope => :user_id
validates_uniqueness_of :identifier, :score => :user_id
validates_presence_of :title, :key, :identifier
named_scope :active, {:conditions => {:active => GitolitePublicKey::STATUS_ACTIVE}}
named_scope :inactive, {:conditions => {:active => GitolitePublicKey::STATUS_LOCKED}}
validate :has_not_been_changed
before_validation :set_identifier
def has_not_been_changed
unless new_record?
%w(identifier key user_id).each do |attribute|
errors.add(attribute, 'may not be changed') unless changes[attribute].blank?
end
end
end
def set_identifier
# TODO: some better naming, id is set long AFTER this method is called. Maybe timestamp?
self.identifier ||= "#{self.user.login.underscore}@#{self.title.underscore}".gsub(/[^0-9a-zA-Z-_@]/,'_')
end
def to_s ; title ; end
end
<div class="box tabular">
<p><%= f.text_field :title, :required => true %></p>
<p><%= f.text_area :key, :required => true, :disabled => !@gitolite_public_key.new_record?, :style => 'width:99%;height:140px;', :label => :field_public_key %>
<% if !@gitolite_public_key.new_record?%>
<br/><em><%= l(:label_key_cannot_be_changed_please_create_new_key) %></em>
<% end %>
</p>
<p><%= f.check_box :active %></p>
</div>
<h2><%= link_to l(:label_public_keys), public_keys_path %> &#187; <%= h @gitolite_public_key %></h2>
<%= error_messages_for :gitolite_public_key %>
<% form_for :public_key, @gitolite_public_key, :url => { :action => "update" }, :html => { :method => :put},
:builder => TabularFormBuilder,
:lang => current_language do |f| %>
<%= render :partial => 'form', :locals => { :f => f } %>
<%= submit_tag l(:button_save) %>
<% end %>
<% content_for :sidebar do %>
<%= render :partial => 'my/sidebar' %>
<% end %>
<% html_title(l(:label_public_keys)) -%>
<h2><%= link_to l(:label_my_account), :controller => 'my', :action => 'account' %> &#187; <%=l(:label_public_keys)%></h2>
<% form_tag({}, :method => :get) do %>
<fieldset><legend><%= l(:label_filter_plural) %></legend>
<label><%= l(:field_status) %>:</label>
<%= select_tag 'status', gitolite_public_keys_status_options_for_select(@user, @status), :class => "small", :onchange => "this.form.submit(); return false;" %>
<%= submit_tag l(:button_apply), :class => "small", :name => nil %>
</fieldset>
<% end %>
&nbsp;
<% if @gitolite_public_keys.any? %>
<table class="list">
<tr>
<th><%= l(:field_name) %></th>
<th><%= l(:field_created_on) %></th>
<th style="width:15%;"><%= l(:field_active) %></th>
<th align="center" style="width:10%;"> </th>
</tr>
<% @gitolite_public_keys.each do |key| %>
<tr class="<%= cycle('odd', 'even') %>">
<td><%= link_to h(key), :action => 'edit', :id => key %></td>
<td><%= format_time(key.created_at) %></td>
<td class="center" style="width:15%;"><%= image_tag('true.png') if key.active? %></td>
<td class="buttons">
<%= link_to l(key.active? ? :button_lock : :button_unlock), public_key_path(key, :public_key => {:active => key.active? ? GitolitePublicKey::STATUS_LOCKED : GitolitePublicKey::STATUS_ACTIVE}), :method => :put, :class => "icon #{key.active? ? 'icon-lock' : 'icon-unlock'}" %>
</td>
</tr>
<% end %>
</table>
<% end %>
<p><%= link_to l(:label_enumeration_new), { :action => 'new'} %></p>
<% html_title(l(:label_public_keys)) -%>
<h2><%= link_to l(:label_public_keys), public_keys_path %> &#187; <%=l(:label_public_key_new)%></h2>
<%= error_messages_for :gitolite_public_key %>
<% form_for :public_key, @gitolite_public_key, :url => { :action => "create" },
:builder => TabularFormBuilder,
:lang => current_language do |f| %>
<%= render :partial => 'form', :locals => { :f => f } %>
<%= submit_tag l(:button_create) %>
<% end %>
<% content_for :sidebar do %>
<%= render :partial => 'my/sidebar' %>
<% end %>
<% html_title(l(:label_public_keys)) -%>
<%# This is used to display basic git setup instructions, like on github... %>
<% flash.now[:error] = "Repository does not exist. Create one using the instructions below." %>
<div class="box">
<h2>Git Setup:</h2>
<pre> <a href="http://git-scm.com/download" target="_blank">Download and Install Git</a>
git config --global user.name "<%= User.current.login %>"
git config --global user.email <%= User.current.mail %>
</pre>
<h2>Permission Setup:</h2>
<pre> <%= link_to "Upload SSH Public Key", {:controller => 'my', :action => 'public_keys'} %>
Add yourself as a project developer: <%= link_to @project.name + " Settings", {:controller => 'projects', :action => 'settings'} %> -&gt; Members Tab -&gt; New Member
</pre>
<h2>Repository Setup:</h2>
<pre> mkdir <%= @project.identifier %>
cd <%= @project.identifier %>
git init
touch README
git add .
git commit -m 'Initializing <%= @project %> repository'
git remote add origin <%= Setting.plugin_redmine_gitolite['developerBaseUrls'] + Gitolite.repository_name(@project) + '.git' %>
git push origin master
</pre>
<h2>Existing Git Repo?</h2>
<pre> cd existing_git_repo
git remote add origin <%= Setting.plugin_redmine_gitolite['developerBaseUrls'] + Gitolite.repository_name(@project) + '.git' %>
git push origin master
</pre>
</div>
<div class="tabular settings">
<p>
<label><%= l(:label_gitolite_url)%></label>
<%= text_field_tag("settings[gitoliteUrl]", @settings['gitoliteUrl'], :size => 60) %>
<br />
</p>
<p>
<label><%= l(:label_gitolite_identity_file)%></label>
<%= text_field_tag("settings[gitoliteIdentityFile]", @settings['gitoliteIdentityFile'], :size => 60) %>
<br />
</p>
<p>
<label><%= l(:label_base_path)%></label>
<%= text_field_tag("settings[basePath]", @settings['basePath'], :size => 60) %>
<br />
</p>
<p>
<label><%= l(:label_developer_base_urls)%></label>
<%= text_area_tag("settings[developerBaseUrls]", @settings['developerBaseUrls'].split(/[\r\n\t ,;]+/).join("\n"), :size => 60) %>
<br />
</p>
<p>
<label><%= l(:label_read_only_base_urls)%></label>
<%= text_area_tag("settings[readOnlyBaseUrls]", @settings['readOnlyBaseUrls'].split(/[\r\n\t ,;]+/).join("\n"), :size => 60) %>
<br />
</p>
</div>
'bg':
label_public_keys: Public keys
label_public_key_new: New public key
label_gitolite_url: Gitolite URL
label_gitolite_identity_file: Gitolite identity file
label_base_path: Base path
label_developer_base_urls: Developer base URL(s)
label_read_only_base_urls: Read-only base URL(s)
field_public_key: Key
notice_public_key_updated: Public key was successfully updated.
notice_public_key_added: Public key was successfully added.
label_key_cannot_be_changed_please_create_new_key: 'The key cannot be altered anymore. However, you can deactivate it and create a new one.'
activerecord:
errors:
messages:
'may not be changed': 'may not be changed'
'bs':
label_public_keys: Public keys
label_public_key_new: New public key
label_gitolite_url: Gitolite URL
label_gitolite_identity_file: Gitolite identity file
label_base_path: Base path
label_developer_base_urls: Developer base URL(s)
label_read_only_base_urls: Read-only base URL(s)
field_public_key: Key
notice_public_key_updated: Public key was successfully updated.
notice_public_key_added: Public key was successfully added.
label_key_cannot_be_changed_please_create_new_key: 'The key cannot be altered anymore. However, you can deactivate it and create a new one.'
activerecord:
errors:
messages:
'may not be changed': 'may not be changed'
'ca':
label_public_keys: Public keys
label_public_key_new: New public key
label_gitolite_url: Gitolite URL
label_gitolite_identity_file: Gitolite identity file
label_base_path: Base path
label_developer_base_urls: Developer base URL(s)
label_read_only_base_urls: Read-only base URL(s)
field_public_key: Key
notice_public_key_updated: Public key was successfully updated.
notice_public_key_added: Public key was successfully added.
label_key_cannot_be_changed_please_create_new_key: 'The key cannot be altered anymore. However, you can deactivate it and create a new one.'
activerecord:
errors:
messages:
'may not be changed': 'may not be changed'
'cs':
label_public_keys: Public keys
label_public_key_new: New public key
label_gitolite_url: Gitolite URL
label_gitolite_identity_file: Gitolite identity file
label_base_path: Base path
label_developer_base_urls: Developer base URL(s)
label_read_only_base_urls: Read-only base URL(s)
field_public_key: Key
notice_public_key_updated: Public key was successfully updated.
notice_public_key_added: Public key was successfully added.
label_key_cannot_be_changed_please_create_new_key: 'The key cannot be altered anymore. However, you can deactivate it and create a new one.'
activerecord:
errors:
messages:
'may not be changed': 'may not be changed'
'da':
label_public_keys: Public keys
label_public_key_new: New public key
label_gitolite_url: Gitolite URL
label_gitolite_identity_file: Gitolite identity file
label_base_path: Base path
label_developer_base_urls: Developer base URL(s)
label_read_only_base_urls: Read-only base URL(s)
field_public_key: Key
notice_public_key_updated: Public key was successfully updated.
notice_public_key_added: Public key was successfully added.
label_key_cannot_be_changed_please_create_new_key: 'The key cannot be altered anymore. However, you can deactivate it and create a new one.'
activerecord:
errors:
messages:
'may not be changed': 'may not be changed'
'de':
label_public_keys: Öffentliche Schlüssel
label_public_key_new: Neuer öffentlicher Schlüssel
field_public_key: Schlüssel
notice_public_key_updated: Öffentlicher Schlüssel wurde erfolgreich aktualisiert.
notice_public_key_added: Öffentlicher Schlüssel wurde erfolgreich hinzugefügt.
label_gitolite_url: Gitolite URL
label_gitolite_identity_file: Gitolite identity file
label_base_path: Base path
label_developer_base_urls: Developer base URL(s)
label_read_only_base_urls: Read-only base URL(s)
label_key_cannot_be_changed_please_create_new_key: 'Der Schlüssel kann nicht mehr verändert werden. Sie können jedoch diesen Schlüssel deaktivieren und einen neuen anlegen.'
activerecord:
errors:
messages:
'may not be changed': "darf nicht verändert werden"
'el':
label_public_keys: Public keys
label_public_key_new: New public key
label_gitolite_url: Gitolite URL
label_gitolite_identity_file: Gitolite identity file
label_base_path: Base path
label_developer_base_urls: Developer base URL(s)
label_read_only_base_urls: Read-only base URL(s)
field_public_key: Key
notice_public_key_updated: Public key was successfully updated.
notice_public_key_added: Public key was successfully added.
label_key_cannot_be_changed_please_create_new_key: 'The key cannot be altered anymore. However, you can deactivate it and create a new one.'
activerecord:
errors:
messages:
'may not be changed': 'may not be changed'
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