jbox-gitolite 1.1.11 → 1.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +2 -0
- data/.travis.yml +9 -5
- data/Guardfile +13 -0
- data/README.md +29 -176
- data/Rakefile +13 -7
- data/gitolite.gemspec +17 -12
- data/lib/gitolite/version.rb +1 -1
- data/spec/dirty_proxy_spec.rb +1 -1
- data/spec/gitolite_admin_spec.rb +34 -1
- data/spec/spec_helper.rb +15 -1
- data/spec/ssh_key_spec.rb +16 -1
- metadata +76 -35
- data/spec/concurrency_spec.rb +0 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 63c530bb8eff13306344887fcc5580ef058cd745
|
4
|
+
data.tar.gz: 86b5e4506055f9355b1ac97d85dde40018c1f5c0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1bb6ea32939e9cb36c1d52f703bf0b89d0b19694371dee7d6a33781904fa0ec7c875da4b05fd8fee0e52b5aca947a0a261b48e3717008f8f087f54cefd4ae88b
|
7
|
+
data.tar.gz: 26c895891e7976fb68165923ec56e3d4490b1f0401fabee1c1a720609ba87599756b44dcbbc6ce0f07f38977a3f37ea54e3ad79cffe40310da8d2067e3f91f55
|
data/.gitignore
CHANGED
data/.travis.yml
CHANGED
@@ -1,10 +1,14 @@
|
|
1
1
|
language: ruby
|
2
2
|
rvm:
|
3
|
+
- 2.1.0
|
4
|
+
- 2.0.0
|
3
5
|
- 1.9.3
|
4
|
-
- jruby-19mode
|
5
|
-
- rbx-19mode
|
6
|
-
jdk:
|
7
|
-
- openjdk6
|
8
6
|
gemfile:
|
9
7
|
- Gemfile
|
10
|
-
|
8
|
+
branches:
|
9
|
+
only:
|
10
|
+
- devel
|
11
|
+
- /^v1\..*$/
|
12
|
+
before_install:
|
13
|
+
- sudo apt-get update -qq
|
14
|
+
- sudo apt-get install -qq libicu-dev
|
data/Guardfile
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
# More info at https://github.com/guard/guard#readme
|
2
|
+
|
3
|
+
guard 'rspec', :cli => "--color --format nested --fail-fast" do
|
4
|
+
watch(%r{^spec/.+_spec\.rb$})
|
5
|
+
watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" }
|
6
|
+
watch('spec/spec_helper.rb') { "spec" }
|
7
|
+
end
|
8
|
+
|
9
|
+
guard 'spork', :rspec_env => { 'RAILS_ENV' => 'test' }, :rspec_port => 9090 do
|
10
|
+
watch(%r{^lib/(.+)\.rb$})
|
11
|
+
watch('Gemfile.lock')
|
12
|
+
watch('spec/spec_helper.rb') { :rspec }
|
13
|
+
end
|
data/README.md
CHANGED
@@ -1,13 +1,22 @@
|
|
1
|
-
|
1
|
+
## ![logo](https://raw.github.com/jbox-web/gitolite/gh-pages/images/git_logo.png) gitolite
|
2
2
|
|
3
|
-
|
3
|
+
### A gem which makes configuring your own Git hosting easy ;)
|
4
4
|
|
5
|
-
This gem
|
5
|
+
This gem is designed to provide a Ruby interface to the [Gitolite](https://github.com/sitaramc/gitolite) Git backend system.
|
6
6
|
|
7
|
-
|
8
|
-
|
9
|
-
*
|
10
|
-
*
|
7
|
+
It provides these functionalities :
|
8
|
+
|
9
|
+
* [SSH Public Keys Management](https://github.com/jbox-web/gitolite/wiki/Features#wiki-ssh-public-keys-management)
|
10
|
+
* [Repositories Management](https://github.com/jbox-web/gitolite/wiki/Features#wiki-repositories-management)
|
11
|
+
* [Gitolite Admin Repository Bootstrapping](https://github.com/jbox-web/gitolite/wiki/Features#wiki-gitolite-admin-repository-bootstrapping)
|
12
|
+
|
13
|
+
You can follow announcements [here](https://github.com/jbox-web/gitolite/wiki/Announcements) or take a look at the [roadmap](https://github.com/jbox-web/gitolite/wiki/Roadmap).
|
14
|
+
|
15
|
+
## Code status
|
16
|
+
|
17
|
+
* [![Gem Version](https://badge.fury.io/rb/jbox-gitolite.svg)](http://badge.fury.io/rb/jbox-gitolite)
|
18
|
+
* [![Build Status](https://travis-ci.org/jbox-web/gitolite.svg?branch=v1.2.0)](https://travis-ci.org/jbox-web/gitolite)
|
19
|
+
* [![Code Climate](https://codeclimate.com/github/jbox-web/gitolite.png)](https://codeclimate.com/github/jbox-web/gitolite)
|
11
20
|
|
12
21
|
## Requirements ##
|
13
22
|
* Ruby 1.9.x or 2.0.x
|
@@ -18,179 +27,23 @@ This gem can still have problems. Please file an issue if you encounter a bug.
|
|
18
27
|
|
19
28
|
gem install jbox-gitolite
|
20
29
|
|
21
|
-
|
22
|
-
|
23
|
-
### Load a gitolite-admin repo ###
|
24
|
-
|
25
|
-
require 'gitolite'
|
26
|
-
ga_repo = Gitolite::GitoliteAdmin.new("/path/to/gitolite/admin/repo")
|
27
|
-
|
28
|
-
This method can only be called on an existing gitolite-admin repo. If you need to create a new gitolite-admin repo, see "Bootstrapping".
|
29
|
-
|
30
|
-
### Configuration Files ###
|
31
|
-
|
32
|
-
conf = ga_repo.config
|
33
|
-
|
34
|
-
#Empty configs can also be initialized
|
35
|
-
conf2 = Config.init # => defaults to a filename of gitolite.conf
|
36
|
-
conf2 = Config.init("new_config.conf")
|
37
|
-
|
38
|
-
#Filename is set to whatever the filename was when the config was created
|
39
|
-
conf.filename # => "gitolite.conf"
|
40
|
-
conf2.filename # => "new_config.conf")
|
41
|
-
|
42
|
-
#filename can be changed via the setter
|
43
|
-
conf2.filename = "new_config.conf"
|
44
|
-
|
45
|
-
#to_file will write the config out to the file system
|
46
|
-
#using the value of the filename attribute. An alternative
|
47
|
-
#filename can also be specified
|
48
|
-
conf.to_file("/new/config/path") # => writes /new/config/path/gitolite.conf
|
49
|
-
conf.to_file("/new/config/path", "test.conf") # => writes /new/config/path/test.conf
|
50
|
-
|
51
|
-
### Repo management ###
|
52
|
-
|
53
|
-
repo = Gitolite::Config::Repo.new("AwesomeRepo")
|
54
|
-
|
55
|
-
#For a list of permissions, see http://sitaramc.github.com/gitolite/conf.html#gitolite
|
56
|
-
repo.add_permission("RW+", "", "bob", "joe", "susan")
|
57
|
-
|
58
|
-
#Set a git config option to the repo
|
59
|
-
repo.set_git_config("hooks.mailinglist", "gitolite-commits@example.tld") # => "gitolite-commits@example.tld"
|
60
|
-
|
61
|
-
#Unset a git config option from the repo
|
62
|
-
repo.unset_git_config("hooks.mailinglist") # => "gitolite-commits@example.tld"
|
63
|
-
|
64
|
-
#Set a gitolite option to the repo
|
65
|
-
repo.set_gitolite_option("mirroring.master", "kenobi") # => "kenobi"
|
66
|
-
|
67
|
-
#Remove a gitolite option from the repo
|
68
|
-
repo.unset_gitolite_option("mirroring.master") # => "kenobi"
|
69
|
-
|
70
|
-
#Add repo to config
|
71
|
-
conf.add_repo(repo)
|
72
|
-
|
73
|
-
#Delete repo by object
|
74
|
-
conf.rm_repo(repo)
|
75
|
-
|
76
|
-
#Delete a repo by name
|
77
|
-
conf.rm_repo("AwesomeRepo")
|
78
|
-
conf.rm_repo(:AwesomeRepo)
|
79
|
-
|
80
|
-
#Test if repo exists by name
|
81
|
-
conf.has_repo?('cool_repo') # => false
|
82
|
-
conf.has_repo?(:cool_repo) # => false
|
83
|
-
|
84
|
-
#Can also pass a Gitolite::Config::Repo object
|
85
|
-
repo = Gitolite::Config::Repo.new('cool_repo')
|
86
|
-
conf.has_repo?(repo) # => true
|
87
|
-
|
88
|
-
#Get a repo object from the config
|
89
|
-
repo = conf.get_repo('cool_repo')
|
90
|
-
repo = conf.get_repo(:cool_repo)
|
91
|
-
|
92
|
-
### SSH Key Management ###
|
93
|
-
|
94
|
-
#Three ways to create keys: manually, from an existing key, or from a string representing a key
|
95
|
-
key = Gitolite::SSHKey.new("ssh-rsa", "big-public-key-blob", "email")
|
96
|
-
key2 = Gitolite::SSHKey.from_file("/path/to/ssh/key.pub")
|
97
|
-
|
98
|
-
key_string = File.read("/path/to/ssh/key.pub")
|
99
|
-
key3 = Gitolite::SSHKey.from_string(key_string, "owner")
|
100
|
-
|
101
|
-
#Add the keys
|
102
|
-
ga_repo.add_key(key)
|
103
|
-
ga_repo.add_key(key2)
|
104
|
-
ga_repo.add_key(key3)
|
105
|
-
|
106
|
-
#Remove key2
|
107
|
-
ga_repo.rm_key(key2)
|
108
|
-
|
109
|
-
### Save changes ###
|
110
|
-
|
111
|
-
ga_repo.save(commit_message)
|
112
|
-
|
113
|
-
When this method is called, all changes get written to the file system and commited in git. For the time being, gitolite assumes full control of the gitolite-admin repository. This means that any keys in the keydir that are not being tracked will be removed and any human changes to gitolite.conf will be erased.
|
114
|
-
The commit message is optional. A generic message is set if missing.
|
115
|
-
|
116
|
-
### Apply changes ###
|
117
|
-
ga_repo.apply
|
118
|
-
|
119
|
-
This method will push all changes to <tt>origin master</tt>.
|
120
|
-
|
121
|
-
### Save and apply ###
|
122
|
-
ga_repo.save_and_apply(commit_message)
|
123
|
-
|
124
|
-
This method will add files, commit and push all changes to <tt>origin master</tt> in the same transaction.
|
125
|
-
The commit message is optional. A generic message is set if missing.
|
126
|
-
|
127
|
-
### Updating remote changes ###
|
128
|
-
#In order to avoid conflicts, this will perform a reset! by default
|
129
|
-
#pass :reset => false to disable the reset (Git conflicts will have to be manually fixed)
|
130
|
-
ga_repo.update
|
131
|
-
ga_repo.update(:reset => false)
|
132
|
-
|
133
|
-
#Update while performing a rebase
|
134
|
-
ga_repo.update(:rebase => true)
|
135
|
-
|
136
|
-
### Reloading from the file system ###
|
137
|
-
ga_repo.reload!
|
138
|
-
|
139
|
-
### Resetting to HEAD, destroying all local changes (including untracked files) ###
|
140
|
-
#This will also perform a reload!
|
141
|
-
ga_repo.reset!
|
142
|
-
|
143
|
-
### Bootstrapping ###
|
144
|
-
ga_repo = GitoliteAdmin.bootstrap("/path/to/new/gitolite/repo")
|
145
|
-
|
146
|
-
This will create the folders <tt>conf</tt> and <tt>keydir</tt> in the supplied path. A config file will also be created in the conf directory. The default configuration supplies RW+ permissions to a user named git for a repo named <tt>gitolite-admin</tt>. You can specify an options hash to change some values:
|
147
|
-
|
148
|
-
ga_repo = GitoliteAdmin.bootstrap("/path/to/new/gitolite/repo", {:user => "admin", :perm => "RW"})
|
149
|
-
|
150
|
-
You can also pass a message to be used for the initial bootstrap commit:
|
151
|
-
|
152
|
-
ga_repo = GitoliteAdmin.bootstrap("/path/to/new/gitolite/repo", {:message => "Bootstrapped new repo"})
|
153
|
-
|
154
|
-
Please note that while bootstrapping is supported, I highly recommend that the initial gitolite-admin repo be created by gitolite itself.
|
155
|
-
|
156
|
-
## Caveats ##
|
157
|
-
### Windows compatibility ###
|
158
|
-
The grit gem (which is used for under-the-hood git operations) does not currently support Windows. Until it does, gitolite will be unable to support Windows.
|
159
|
-
|
160
|
-
### Group Ordering ###
|
161
|
-
When the gitolite backend parses the config file, it does so in one pass. Because of this, groups that are modified after being used do not see those changes reflected in previous uses.
|
162
|
-
|
163
|
-
For example:
|
164
|
-
|
165
|
-
@groupa = bob joe sue
|
166
|
-
@groupb = jim @groupa
|
167
|
-
@groupa = sam
|
168
|
-
|
169
|
-
Group b will contain the users <tt>jim, bob, joe, and sue</tt>
|
30
|
+
Read the documentation and more in the [Wiki](https://github.com/jbox-web/gitolite/wiki).
|
170
31
|
|
171
|
-
|
32
|
+
## Copyrights & License
|
33
|
+
gitolite is completely free and open source and released under the [MIT License](https://github.com/jbox-web/gitolite/blob/devel/LICENSE.txt).
|
172
34
|
|
173
|
-
|
174
|
-
@groupb = jim @groupa
|
35
|
+
Copyright (c) 2013-2014 Nicolas Rodriguez (nrodriguez@jbox-web.com), JBox Web (http://www.jbox-web.com)
|
175
36
|
|
176
|
-
|
177
|
-
* Gem is not fully thread safe. For some method, the gem will change directories in order to perform git operations (only for <tt>reset, update and bootstrap method</tt>).
|
178
|
-
The <tt>save, apply and save_and_apply</tt> methods are thread safe.
|
179
|
-
Note that this is only an issue on Rubies that do not have a GIL (ex jRuby or Rubinius)
|
37
|
+
Copyright (c) 2011-2013 Stafford Brunk (stafford.brunk@gmail.com)
|
180
38
|
|
181
|
-
|
182
|
-
* Tests! If you ask me to pull changes that are not adequately tested, I'm not going to do it.
|
183
|
-
* If you introduce new features/public methods on objects, you must update the README.
|
39
|
+
## Contribute
|
184
40
|
|
185
|
-
|
186
|
-
*
|
187
|
-
*
|
41
|
+
You can contribute to this plugin in many ways such as :
|
42
|
+
* Helping with documentation
|
43
|
+
* Contributing code (features or bugfixes)
|
44
|
+
* Reporting a bug
|
45
|
+
* Submitting translations
|
188
46
|
|
189
|
-
|
190
|
-
* Rdoc is coming eventually
|
47
|
+
You can also donate :)
|
191
48
|
|
192
|
-
|
193
|
-
* Make the gem thread safe (finish the job)
|
194
|
-
* support folders in the keydir
|
195
|
-
* support include tags
|
196
|
-
* cleanup methods to make adding and removing easier (like add_key should accept an array of keys)
|
49
|
+
[![Donate](https://www.paypalobjects.com/en_US/i/btn/btn_donate_LG.gif)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=FBT7E7DAVVEEU)
|
data/Rakefile
CHANGED
@@ -1,10 +1,9 @@
|
|
1
1
|
require 'bundler'
|
2
2
|
Bundler::GemHelper.install_tasks
|
3
|
-
require 'rspec/core/rake_task'
|
4
|
-
|
5
|
-
require 'ci/reporter/rake/rspec'
|
6
3
|
|
7
|
-
|
4
|
+
require 'rake'
|
5
|
+
require 'rspec/core/rake_task'
|
6
|
+
require 'rdoc/task'
|
8
7
|
|
9
8
|
# Helper Functions
|
10
9
|
def name
|
@@ -17,11 +16,13 @@ def version
|
|
17
16
|
end
|
18
17
|
|
19
18
|
# Standard tasks
|
20
|
-
RSpec::Core::RakeTask.new(:spec)
|
21
|
-
|
19
|
+
RSpec::Core::RakeTask.new(:spec) do |config|
|
20
|
+
config.rspec_opts = "--color --format nested --fail-fast"
|
21
|
+
end
|
22
|
+
|
22
23
|
task :default => :spec
|
24
|
+
task :test => :spec
|
23
25
|
|
24
|
-
require 'rdoc/task'
|
25
26
|
Rake::RDocTask.new do |rdoc|
|
26
27
|
rdoc.rdoc_dir = 'rdoc'
|
27
28
|
rdoc.title = "#{name} #{version}"
|
@@ -33,3 +34,8 @@ desc "Open an irb session preloaded with this library"
|
|
33
34
|
task :console do
|
34
35
|
sh "irb -rubygems -r ./lib/#{name}.rb"
|
35
36
|
end
|
37
|
+
|
38
|
+
desc "Show library version"
|
39
|
+
task :version do
|
40
|
+
puts "#{name} #{version}"
|
41
|
+
end
|
data/gitolite.gemspec
CHANGED
@@ -8,23 +8,28 @@ Gem::Specification.new do |s|
|
|
8
8
|
s.platform = Gem::Platform::RUBY
|
9
9
|
s.authors = ["Nicolas Rodriguez"]
|
10
10
|
s.email = ["nrodriguez@jbox-web.com"]
|
11
|
-
s.homepage = "https://github.com/
|
12
|
-
s.summary = %q{A Ruby gem for manipulating the
|
13
|
-
s.description = %q{This gem is designed to provide a Ruby interface to the
|
11
|
+
s.homepage = "https://github.com/jbox-web/gitolite"
|
12
|
+
s.summary = %q{A Ruby gem for manipulating the Gitolite Git backend via the gitolite-admin repository.}
|
13
|
+
s.description = %q{This gem is designed to provide a Ruby interface to the Gitolite Git backend system. This gem aims to provide all management functionality that is available via the gitolite-admin repository (like SSH keys, repository permissions, etc)}
|
14
14
|
s.license = 'MIT'
|
15
15
|
|
16
16
|
s.rubyforge_project = "jbox-gitolite"
|
17
17
|
|
18
|
-
s.add_development_dependency "
|
19
|
-
s.add_development_dependency "
|
20
|
-
s.add_development_dependency "
|
21
|
-
s.add_development_dependency "
|
22
|
-
s.add_development_dependency "
|
23
|
-
s.add_development_dependency "
|
24
|
-
s.add_development_dependency "
|
18
|
+
s.add_development_dependency "rake", "~> 10.3.1"
|
19
|
+
s.add_development_dependency "rdoc", "~> 4.1.1"
|
20
|
+
s.add_development_dependency "rspec", "~> 2.14.1"
|
21
|
+
s.add_development_dependency "guard-rspec", "~> 2.6.0"
|
22
|
+
s.add_development_dependency "guard-spork", "~> 1.5.1"
|
23
|
+
s.add_development_dependency "forgery", "~> 0.5.0"
|
24
|
+
s.add_development_dependency "travis-lint", "~> 1.8.0"
|
25
25
|
|
26
|
-
s.
|
27
|
-
s.
|
26
|
+
s.add_development_dependency "simplecov", "~> 0.8.2"
|
27
|
+
s.add_development_dependency "simplecov-rcov", "~> 0.2.3"
|
28
|
+
|
29
|
+
s.add_development_dependency "rspec_junit_formatter", "~> 0.1.6"
|
30
|
+
|
31
|
+
s.add_dependency "gitlab-grit", "~> 2.6.5"
|
32
|
+
s.add_dependency "gratr19", "~> 0.4.4.1"
|
28
33
|
|
29
34
|
s.files = `git ls-files`.split("\n")
|
30
35
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
data/lib/gitolite/version.rb
CHANGED
data/spec/dirty_proxy_spec.rb
CHANGED
data/spec/gitolite_admin_spec.rb
CHANGED
@@ -1,4 +1,37 @@
|
|
1
|
+
require 'gratr'
|
2
|
+
require 'grit'
|
1
3
|
require 'gitolite/gitolite_admin'
|
4
|
+
require 'gitolite/config'
|
5
|
+
require 'spec_helper'
|
6
|
+
include Gitolite
|
2
7
|
|
3
8
|
describe Gitolite::GitoliteAdmin do
|
4
|
-
|
9
|
+
|
10
|
+
describe '#bootstrap' do
|
11
|
+
it 'should bootstrap a gitolite-admin repository' do
|
12
|
+
test_dir = '/tmp/gitolite-admin-test'
|
13
|
+
opts = { :overwrite => false }
|
14
|
+
gl_admin = GitoliteAdmin.bootstrap(test_dir, opts)
|
15
|
+
|
16
|
+
expect(gl_admin).to be_a Gitolite::GitoliteAdmin
|
17
|
+
expect(GitoliteAdmin.is_gitolite_admin_repo?(test_dir)).to be true
|
18
|
+
end
|
19
|
+
|
20
|
+
it 'should bootstrap (overwrite) a gitolite-admin repository' do
|
21
|
+
test_dir = '/tmp/gitolite-admin-test'
|
22
|
+
opts = { :overwrite => true }
|
23
|
+
gl_admin = GitoliteAdmin.bootstrap(test_dir, opts)
|
24
|
+
|
25
|
+
expect(gl_admin).to be_a Gitolite::GitoliteAdmin
|
26
|
+
expect(GitoliteAdmin.is_gitolite_admin_repo?(test_dir)).to be true
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
describe '#is_gitolite_admin_repo?' do
|
31
|
+
it 'should detect a non gitolite-admin repository' do
|
32
|
+
test_dir = '/tmp'
|
33
|
+
expect(GitoliteAdmin.is_gitolite_admin_repo?(test_dir)).to be false
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,7 +1,21 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'spork'
|
1
3
|
require 'forgery'
|
2
4
|
require 'tmpdir'
|
3
5
|
|
4
6
|
require 'simplecov'
|
5
7
|
require 'simplecov-rcov'
|
6
8
|
SimpleCov.formatter = SimpleCov::Formatter::RcovFormatter
|
7
|
-
SimpleCov.start
|
9
|
+
SimpleCov.start
|
10
|
+
|
11
|
+
Spork.prefork do
|
12
|
+
# Loading more in this block will cause your tests to run faster. However,
|
13
|
+
# if you change any configuration or code from libraries loaded here, you'll
|
14
|
+
# need to restart spork for it take effect.
|
15
|
+
|
16
|
+
end
|
17
|
+
|
18
|
+
Spork.each_run do
|
19
|
+
# This code will be run each time you run your specs.
|
20
|
+
|
21
|
+
end
|
data/spec/ssh_key_spec.rb
CHANGED
@@ -175,7 +175,7 @@ describe Gitolite::SSHKey do
|
|
175
175
|
s = SSHKey.from_file(key)
|
176
176
|
s.location.should == 'desktop'
|
177
177
|
end
|
178
|
-
|
178
|
+
|
179
179
|
it 'location should be "foo-bar" for bob@foo-bar.pub' do
|
180
180
|
key = File.join(key_dir, 'bob@foo-bar.pub')
|
181
181
|
s = SSHKey.from_file(key)
|
@@ -242,6 +242,21 @@ describe Gitolite::SSHKey do
|
|
242
242
|
end
|
243
243
|
end
|
244
244
|
|
245
|
+
describe '#hash' do
|
246
|
+
it 'should have two hash equalling one another' do
|
247
|
+
type = "ssh-rsa"
|
248
|
+
blob = Forgery::Basic.text(:at_least => 372, :at_most => 372)
|
249
|
+
email = Forgery::Internet.email_address
|
250
|
+
owner = Forgery::Name.first_name
|
251
|
+
location = Forgery::Name.location
|
252
|
+
|
253
|
+
hash_test = [owner, location, type, blob, email].hash
|
254
|
+
s = SSHKey.new(type, blob, email, owner, location)
|
255
|
+
|
256
|
+
s.hash.should == hash_test
|
257
|
+
end
|
258
|
+
end
|
259
|
+
|
245
260
|
describe '#filename' do
|
246
261
|
it 'should create a filename that is the <email>.pub' do
|
247
262
|
type = "ssh-rsa"
|
metadata
CHANGED
@@ -1,127 +1,169 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jbox-gitolite
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nicolas Rodriguez
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-04-
|
11
|
+
date: 2014-04-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rake
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ~>
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 10.3.1
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ~>
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 10.3.1
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rdoc
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ~>
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 4.1.1
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ~>
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 4.1.1
|
13
41
|
- !ruby/object:Gem::Dependency
|
14
42
|
name: rspec
|
15
43
|
requirement: !ruby/object:Gem::Requirement
|
16
44
|
requirements:
|
17
45
|
- - ~>
|
18
46
|
- !ruby/object:Gem::Version
|
19
|
-
version: 2.
|
47
|
+
version: 2.14.1
|
20
48
|
type: :development
|
21
49
|
prerelease: false
|
22
50
|
version_requirements: !ruby/object:Gem::Requirement
|
23
51
|
requirements:
|
24
52
|
- - ~>
|
25
53
|
- !ruby/object:Gem::Version
|
26
|
-
version: 2.
|
54
|
+
version: 2.14.1
|
27
55
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
56
|
+
name: guard-rspec
|
29
57
|
requirement: !ruby/object:Gem::Requirement
|
30
58
|
requirements:
|
31
59
|
- - ~>
|
32
60
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
61
|
+
version: 2.6.0
|
34
62
|
type: :development
|
35
63
|
prerelease: false
|
36
64
|
version_requirements: !ruby/object:Gem::Requirement
|
37
65
|
requirements:
|
38
66
|
- - ~>
|
39
67
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
68
|
+
version: 2.6.0
|
41
69
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
70
|
+
name: guard-spork
|
43
71
|
requirement: !ruby/object:Gem::Requirement
|
44
72
|
requirements:
|
45
73
|
- - ~>
|
46
74
|
- !ruby/object:Gem::Version
|
47
|
-
version:
|
75
|
+
version: 1.5.1
|
48
76
|
type: :development
|
49
77
|
prerelease: false
|
50
78
|
version_requirements: !ruby/object:Gem::Requirement
|
51
79
|
requirements:
|
52
80
|
- - ~>
|
53
81
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
82
|
+
version: 1.5.1
|
55
83
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
84
|
+
name: forgery
|
57
85
|
requirement: !ruby/object:Gem::Requirement
|
58
86
|
requirements:
|
59
|
-
- -
|
87
|
+
- - ~>
|
60
88
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
89
|
+
version: 0.5.0
|
62
90
|
type: :development
|
63
91
|
prerelease: false
|
64
92
|
version_requirements: !ruby/object:Gem::Requirement
|
65
93
|
requirements:
|
66
|
-
- -
|
94
|
+
- - ~>
|
67
95
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
96
|
+
version: 0.5.0
|
69
97
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
98
|
+
name: travis-lint
|
71
99
|
requirement: !ruby/object:Gem::Requirement
|
72
100
|
requirements:
|
73
|
-
- -
|
101
|
+
- - ~>
|
74
102
|
- !ruby/object:Gem::Version
|
75
|
-
version:
|
103
|
+
version: 1.8.0
|
76
104
|
type: :development
|
77
105
|
prerelease: false
|
78
106
|
version_requirements: !ruby/object:Gem::Requirement
|
79
107
|
requirements:
|
80
|
-
- -
|
108
|
+
- - ~>
|
81
109
|
- !ruby/object:Gem::Version
|
82
|
-
version:
|
110
|
+
version: 1.8.0
|
83
111
|
- !ruby/object:Gem::Dependency
|
84
|
-
name:
|
112
|
+
name: simplecov
|
85
113
|
requirement: !ruby/object:Gem::Requirement
|
86
114
|
requirements:
|
87
|
-
- -
|
115
|
+
- - ~>
|
88
116
|
- !ruby/object:Gem::Version
|
89
|
-
version:
|
117
|
+
version: 0.8.2
|
90
118
|
type: :development
|
91
119
|
prerelease: false
|
92
120
|
version_requirements: !ruby/object:Gem::Requirement
|
93
121
|
requirements:
|
94
|
-
- -
|
122
|
+
- - ~>
|
95
123
|
- !ruby/object:Gem::Version
|
96
|
-
version:
|
124
|
+
version: 0.8.2
|
97
125
|
- !ruby/object:Gem::Dependency
|
98
|
-
name:
|
126
|
+
name: simplecov-rcov
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - ~>
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: 0.2.3
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - ~>
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: 0.2.3
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: rspec_junit_formatter
|
99
141
|
requirement: !ruby/object:Gem::Requirement
|
100
142
|
requirements:
|
101
143
|
- - ~>
|
102
144
|
- !ruby/object:Gem::Version
|
103
|
-
version:
|
145
|
+
version: 0.1.6
|
104
146
|
type: :development
|
105
147
|
prerelease: false
|
106
148
|
version_requirements: !ruby/object:Gem::Requirement
|
107
149
|
requirements:
|
108
150
|
- - ~>
|
109
151
|
- !ruby/object:Gem::Version
|
110
|
-
version:
|
152
|
+
version: 0.1.6
|
111
153
|
- !ruby/object:Gem::Dependency
|
112
154
|
name: gitlab-grit
|
113
155
|
requirement: !ruby/object:Gem::Requirement
|
114
156
|
requirements:
|
115
157
|
- - ~>
|
116
158
|
- !ruby/object:Gem::Version
|
117
|
-
version: 2.6.
|
159
|
+
version: 2.6.5
|
118
160
|
type: :runtime
|
119
161
|
prerelease: false
|
120
162
|
version_requirements: !ruby/object:Gem::Requirement
|
121
163
|
requirements:
|
122
164
|
- - ~>
|
123
165
|
- !ruby/object:Gem::Version
|
124
|
-
version: 2.6.
|
166
|
+
version: 2.6.5
|
125
167
|
- !ruby/object:Gem::Dependency
|
126
168
|
name: gratr19
|
127
169
|
requirement: !ruby/object:Gem::Requirement
|
@@ -136,7 +178,7 @@ dependencies:
|
|
136
178
|
- - ~>
|
137
179
|
- !ruby/object:Gem::Version
|
138
180
|
version: 0.4.4.1
|
139
|
-
description: This gem is designed to provide a Ruby interface to the
|
181
|
+
description: This gem is designed to provide a Ruby interface to the Gitolite Git
|
140
182
|
backend system. This gem aims to provide all management functionality that is available
|
141
183
|
via the gitolite-admin repository (like SSH keys, repository permissions, etc)
|
142
184
|
email:
|
@@ -149,6 +191,7 @@ files:
|
|
149
191
|
- .gitignore
|
150
192
|
- .travis.yml
|
151
193
|
- Gemfile
|
194
|
+
- Guardfile
|
152
195
|
- LICENSE.txt
|
153
196
|
- README.md
|
154
197
|
- Rakefile
|
@@ -161,7 +204,6 @@ files:
|
|
161
204
|
- lib/gitolite/gitolite_admin.rb
|
162
205
|
- lib/gitolite/ssh_key.rb
|
163
206
|
- lib/gitolite/version.rb
|
164
|
-
- spec/concurrency_spec.rb
|
165
207
|
- spec/config_spec.rb
|
166
208
|
- spec/configs/complicated.conf
|
167
209
|
- spec/configs/simple.conf
|
@@ -183,7 +225,7 @@ files:
|
|
183
225
|
- spec/repo_spec.rb
|
184
226
|
- spec/spec_helper.rb
|
185
227
|
- spec/ssh_key_spec.rb
|
186
|
-
homepage: https://github.com/
|
228
|
+
homepage: https://github.com/jbox-web/gitolite
|
187
229
|
licenses:
|
188
230
|
- MIT
|
189
231
|
metadata: {}
|
@@ -206,10 +248,9 @@ rubyforge_project: jbox-gitolite
|
|
206
248
|
rubygems_version: 2.2.2
|
207
249
|
signing_key:
|
208
250
|
specification_version: 4
|
209
|
-
summary: A Ruby gem for manipulating the
|
251
|
+
summary: A Ruby gem for manipulating the Gitolite Git backend via the gitolite-admin
|
210
252
|
repository.
|
211
253
|
test_files:
|
212
|
-
- spec/concurrency_spec.rb
|
213
254
|
- spec/config_spec.rb
|
214
255
|
- spec/configs/complicated.conf
|
215
256
|
- spec/configs/simple.conf
|
data/spec/concurrency_spec.rb
DELETED